red-arrow: Arrow::Tableのデータを組み立てる

とりあえず最低限の流れが知りたかったので、int32 だけの簡単なデータでやってみました。

require "arrow"

# --------------------------------
# 列1 のデータを用意

builder = Arrow::Int32ArrayBuilder.new
builder.append(1)
builder.append(2)
array1 = builder.finish

p array1

# #<Arrow::Int32Array:0x557fac799a88 ptr=0x557fac442e80 [
#   1,
#   2
# ]>

# --------------------------------
# 列2 のデータを用意

# Arrow::XxxArray.new を使うと簡単
array2 = Arrow::Int32Array.new([11, 12])

p array2

# #<Arrow::Int32Array:0x557fac798ed0 ptr=0x557fac442fa0 [
#   11,
#   12
# ]>

# --------------------------------

col1_f = Arrow::Field.new("col1", :int32) # フィールド名、型
col2_f = Arrow::Field.new("col2", :int32)

fields = [col1_f, col2_f]
schema = Arrow::Schema.new(fields)

# --------------------------------

record_batch = Arrow::RecordBatch.new(
  schema,
  2, # 件数
  [array1, array2]
)

p record_batch

# #<Arrow::RecordBatch:0x557fac791720 ptr=0x557fac6c86b0 col1:   [
#     1,
#     2
#   ]
# col2:   [
#     11,
#     12
#   ]
# >

# --------------------------------
# Arrow::Table に変換

table = record_batch.to_table

p table

# #<Arrow::Table:0x557fac790618 ptr=0x557fac6c87a0>
#         col1    col2
# 0          1      11
# 1          2      12
バージョン:
  Ruby 2.7.1
  red-arrow 1.0.0

参考