类 Builder<T, TNull>Abstract

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

Builder 负责根据每个 DataType 的 Arrow 规范将任意 JavaScript 值写入 ArrayBuffer 和/或子 Builder,并在必要时创建或调整底层 ArrayBuffer 的大小。

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

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

在将足够的值写入 Builder 后,Builder.prototype.flush() 会将值提交到底层 ArrayBuffer(或子 Builder)。 内部 Builder 状态将被重置,并返回 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 将被视为 null 值的哨兵的值的类型。

类型参数

构造器

  • 使用给定的 Arrow DataType 构造一个 builder,带有可选的 null 值,当设置或附加到 Builder 时,这些值将被解释为“null”。

    类型参数

    参数

    • options: BuilderOptions<T, TNull>

      用于创建此 BuilderBuilderOptions 对象。

    返回值 Builder<T, TNull>

属性

children: Builder<any, any>[]
finished: boolean = false

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

length: number = 0

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

nullValues?: null | TNull[] | readonly TNull[]

Builder 的空值哨兵列表。当这些值之一被写入 Builder(通过 Builder.prototype.set()Builder.prototype.append()),则一个 1 位被写入到此 Builder 的底层 null BitmapBufferBuilder。

stride: number

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

type: T

Builder 的 DataType 实例。

访问器

  • get ArrayType(): any

    返回 any

  • get byteLength(): number

    返回 number

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

  • get nullBitmap(): null | Uint8Array

    返回 null | Uint8Array

  • get nullCount(): number

    返回 number

  • get numChildren(): number

    返回 number

  • get reservedByteLength(): number

    返回 number

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

  • get reservedLength(): number

    返回 number

    已保留用于写入新值的聚合行数。

  • get typeIds(): null | Int8Array

    返回 null | Int8Array

  • get valueOffsets(): null | T["TOffsetArray"]

    返回 null | T["TOffsetArray"]

  • get values(): null | T["TArray"]

    返回 null | T["TArray"]

方法

  • 参数

    返回 void

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

    参数

    • 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, any>

    提供的索引处的子 Builder,如果不存在,则返回 null。

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

    参数

    • value: TNull | T["TValue"]

      要与空值表示进行比较的值

    返回 boolean

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

    参数

    • index: number

      要写入的值的索引。

    • value: 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>

    Returns BuilderTransform<T, TNull>

  • 类型参数

    参数

    • options: BuilderDuplexOptions<T, TNull>

    Returns Duplex