Sha256: 49ad7e4580e14ff268b1ff28e81b4ee1ce0582e550ab18906ecf05485c60ac4a

Contents?: true

Size: 1.32 KB

Versions: 1

Compression:

Stored size: 1.32 KB

Contents

# frozen_string_literal: true

module RedAmber
  # Columnar data object
  #   @data : holds Arrow::ChunkedArray
  class Vector
    # mix-in
    include VectorFunctions

    # chunked_array may come from column.data
    def initialize(array)
      case array
      when Vector
        @data = array.data
      when Arrow::Array, Arrow::ChunkedArray
        @data = array
      when Array
        @data = Arrow::Array.new(array)
      else
        raise ArgumentError, 'Unknown array in argument'
      end
    end

    attr_reader :data

    def to_s
      @data.to_a.inspect
    end

    def inspect
      format "#<#{self.class}(:#{type}, size=#{size}):0x%016x>\n#{self}", object_id
    end

    def values
      @data.values
    end
    alias_method :to_a, :values
    alias_method :entries, :values

    def size
      # only defined :length in Arrow?
      @data.length
    end
    alias_method :length, :size
    alias_method :n_rows, :size
    alias_method :nrow, :size

    def type
      @data.value_type.nick.to_sym
    end

    def data_type
      @data.value_type
    end

    # def each() end

    def chunked?
      @data.is_a? Arrow::ChunkedArray
    end

    def n_chunks
      chunked? ? @data.n_chunks : 0
    end

    # def each_chunk() end

    def tally
      values.tally
    end

    def n_nulls
      @data.n_nulls
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
red_amber-0.1.2 lib/red_amber/vector.rb