类 Builder<T, TNull>抽象

一个用于从任意 JavaScript 值构造 Arrow 向量的抽象基类。

Builder 负责根据每种数据类型的 Arrow 规范将任意 JavaScript 值写入 ArrayBuffers 和/或子构建器,并根据需要创建或调整底层 ArrayBuffers 的大小。

每种 Arrow DataTypeBuilder 负责转换和追加给定 DataType 的值。高级 makeBuilder() 便捷方法会为提供的 DataType 创建特定的 Builder 子类。

创建后,Builder 实例支持将值追加到 Builder 的末尾,以及对特定索引进行随机访问写入(Builder.prototype.append(value)builder.set(builder.length, value) 的便捷方法)。 在构建器的当前长度之外追加或设置值可能会导致构建器扩展其底层缓冲区或子构建器(如果适用)以容纳新值。

将足够的值写入 Builder 后,Builder.prototype.flush() 会将值提交到底层 ArrayBuffers(或子构建器)。内部构建器状态将重置,并返回 Data<T> 的实例。或者,Builder.prototype.toVector() 将刷新 Builder 并返回 Vector<T> 的实例。

当没有更多值要写入时,使用 Builder.prototype.finish() 来完成 Builder。这不会重置内部状态,因此如果仍然有值排队等待刷新,则需要最后一次调用 Builder.prototype.flush()toVector()

注意:使用 DictionaryBuilder 时,必须调用 Builder.prototype.finish(),因为这是它刷新在其内部字典的 Builder 中排队的值并为 Dictionary DataType 创建 dictionaryVector 的时候。

import { makeBuilder, Utf8 } from 'apache-arrow';

const utf8Builder = makeBuilder({
type: new Utf8(),
nullValues: [null, 'n/a']
});

utf8Builder
.append('hello')
.append('n/a')
.append('world')
.append(null);

const utf8Vector = utf8Builder.finish().toVector();

console.log(utf8Vector.toJSON());
// > ["hello", null, "world", null]

T 此 BuilderDataType

TNull 将被视为空值标记的值的类型。

类型参数

构造函数

  • 使用给定的 Arrow 数据类型和可选的空值构造一个构建器,这些空值在设置或追加到 Builder 时将被解释为“空”

    类型参数

    参数

    • options: BuilderOptions<T, TNull>

      用于创建此 BuilderBuilderOptions 对象。

    返回 Builder<T, TNull>

属性

children: Builder[]
finished: boolean = false

一个布尔值,指示是否已在此 Builder 上调用 Builder.prototype.finish()

length: number = 0

写入 Builder 尚未刷新的值的数量。

空值?: null | TNull[] | readonly TNull[]

Builder 的空值标记列表。当其中一个值被写入 Builder(通过 Builder.prototype.set()Builder.prototype.append())时,一个 1 位将被写入此 Builder 底层的空 BitmapBufferBuilder。

步长: number

底层 values TypedArray 中表示单个逻辑元素的元素数量,由该 Builder 的 DataType 决定。对于大多数类型,该值为 1,但当 DataTypeInt64Uint64DecimalDateMillisecond、某些 Interval 变体、TimeTimestampFixedSizeBinaryFixedSizeList 时,该值更大。

类型: T

Builder 的 DataType 实例。

访问器

  • 获取 数组类型(): any
  • 返回 any

  • 获取 字节长度(): number
  • 返回 number

    已写入值的总长度(以字节为单位)。

  • 获取 空位图(): null | Uint8Array
  • 返回 null | Uint8Array

  • 获取 空值计数(): number
  • 返回 number

  • 获取 子级数量(): number
  • 返回 number

  • 获取 预留字节长度(): number
  • 返回 number

    已预留用于写入新值的总长度(以字节为单位)。

  • 获取 预留长度(): number
  • 返回 number

    已预留用于写入新值的总行数。

  • 获取 类型 ID(): null | Int8Array
  • 返回 null | Int8Array

  • 获取 值偏移量(): null | T["TOffsetArray"]
  • 返回 null | T["TOffsetArray"]

  • 获取 (): null | T["TArray"]
  • 返回 null | T["TArray"]

方法

  • 参数

    • 子级: Builder
    • 名称: string = ...

    返回 void

  • 将一个值(或 null)追加到此 Builder。这等效于 builder.set(builder.length, value)

    参数

    • : TNull | T["TValue"]

      要追加的值。

    返回 Builder<T, TNull>

  • 清除此 Builder 的内部状态,包括子 Builder(如果适用),并将长度重置为 0。

    返回 Builder<T, TNull>

    已清除的 Builder 实例。

  • 完成此 Builder 以及子 builder(如果适用)。

    返回 Builder<T, TNull>

    已完成的 Builder 实例。

  • 提交已写入其底层 ArrayBuffers 的所有值,包括任何子 Builder(如果适用),并重置内部 Builder 状态。

    返回 Data<T>

    表示写入值的缓冲区和子级的 Data<T>

  • 检索指定 `index` 处的子 `Builder`,如果该索引处不存在子级,则返回 null。

    类型参数

    参数

    • index: number

      要检索的子 `Builder` 的索引。

    返回 null | Builder<R>

    指定索引处的子 Builder 或 null。

  • 验证值是否有效(true)或为空(false)。

    参数

    • : TNull | T["TValue"]

      要与 null 值表示形式进行比较的值。

    返回 boolean

  • 在提供的索引处写入一个值(或空值标记)。如果该值与其中一个空值表示形式匹配,则将 1 位写入空 `BitmapBufferBuilder`。否则,将 0 写入空 `BitmapBufferBuilder`,并将该值传递给 `Builder.prototype.setValue()`。

    参数

    • index: number

      要写入值的索引。

    • : TNull | T["TValue"]

      要在提供的索引处写入的值。

    返回 Builder<T, TNull>

    更新后的 `Builder` 实例。

  • 参数

    • index: number
    • valid: boolean

    返回 boolean

  • 在提供的索引处将值写入基础缓冲区,绕过空值检查。这是一个低级方法,...

    参数

    • index: number
    • value: T["TValue"]

    返回 void

  • 刷新 `Builder` 并返回一个 `Vector<T>`。

    返回 Vector<T>

    刷新值的 `Vector<T>`。

  • 类型参数

    参数

    • options: BuilderTransformOptions<T, TNull>

    返回 BuilderTransform<T, TNull>

  • 类型参数

    参数

    • options: BuilderDuplexOptions<T, TNull>

    返回 Duplex