Class Builder<T, TNull>Abstract

用於從任意 JavaScript 值建構 Arrow Vectors 的型別的抽象基底類別。

Builder 負責根據每個 DataType 的 Arrow 規範,將任意 JavaScript 值寫入 ArrayBuffers 和/或子 Builder,並在必要時建立或調整底層 ArrayBuffers 的大小。

每個 Arrow DataTypeBuilder 處理給定 DataType 的值的轉換和附加。高階 makeBuilder() 便利方法會為提供的 DataType 建立特定的 Builder 子類別。

一旦建立,Builder 實例同時支援將值附加到 Builder 的末尾,以及對特定索引進行隨機存取寫入 (Builder.prototype.append(value)builder.set(builder.length, value) 的便利方法)。 附加或設定超出 Builder 目前長度的值可能會導致 builder 擴展其底層緩衝區或子 Builder (如果適用) 以容納新值。

在將足夠的值寫入 Builder 後,Builder.prototype.flush() 將會把這些值提交到下層的 ArrayBuffers (或子 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 值 sentinel 的值的型別。

型別參數

建構函式

  • 使用給定的 Arrow DataType 和可選的 null 值建構 builder,這些 null 值在設定或附加到 Builder 時會被解譯為 "null"。

    型別參數

    參數

    • options: BuilderOptions<T, TNull>

      用於建立此 BuilderBuilderOptions 物件。

    Returns Builder<T, TNull>

屬性

children: Builder[]
finished: boolean = false

一個布林值,指示是否已在此 Builder 上呼叫 Builder.prototype.finish()

length: number = 0

尚未清除的寫入到 Builder 的值的數量。

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

Builder 的 null 值 sentinel 的列表。 當其中一個值寫入到 Builder (透過 Builder.prototype.set()Builder.prototype.append()) 時,會將 1 位元寫入到此 Builder 的底層 null BitmapBufferBuilder。

stride: number

底層值 TypedArray 中代表單一邏輯元素的元素數量,由這個 Builder 的 DataType 決定。 大多數型別為 1,但當 DataTypeInt64Uint64DecimalDateMillisecondIntervalTimeTimestampFixedSizeBinaryFixedSizeList 的某些變體時,則會更大。

type: T

Builder 的 DataType 實例。

存取器

  • get ArrayType(): any
  • Returns any

  • get byteLength(): number
  • Returns number

    已寫入的值的總長度 (以位元組為單位)。

  • get nullBitmap(): null | Uint8Array
  • Returns null | Uint8Array

  • get nullCount(): number
  • Returns number

  • get numChildren(): number
  • Returns number

  • get reservedByteLength(): number
  • Returns number

    已保留用於寫入新值的總長度 (以位元組為單位)。

  • get reservedLength(): number
  • Returns number

    已保留用於寫入新值的總列數。

  • get typeIds(): null | Int8Array
  • Returns null | Int8Array

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

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

方法

  • 參數

    Returns void

  • 將值 (或 null) 附加到此 Builder。 這相當於 builder.set(builder.length, value)

    參數

    • value: TNull | T["TValue"]

      要附加的值。

    Returns Builder<T, TNull>

  • 清除此 Builder 的內部狀態,包括子 Builder (如果適用),並將長度重設為 0。

    Returns Builder<T, TNull>

    已清除的 Builder 實例。

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

    Returns Builder<T, TNull>

    已完成的 Builder 實例。

  • 提交已寫入到其底層 ArrayBuffers 的所有值,包括任何子 Builder (如果適用),並重設內部 Builder 狀態。

    Returns Data<T>

    代表寫入值的緩衝區和子項的 Data<T>

  • 檢索提供的 index 處的子 Builder,如果該索引處不存在子項,則檢索 null。

    型別參數

    參數

    • index: number

      要檢索的子 Builder 的索引。

    Returns null | Builder<R>

    提供的索引處的子 Builder 或 null。

  • 驗證值是否有效 (true) 或為 null (false)

    參數

    • value: TNull | T["TValue"]

      要與 null 值表示形式比較的數值

    Returns boolean

  • 在提供的索引處寫入值 (或 null 值 sentinel)。 如果值與其中一個 null 值表示形式相符,則會將 1 位元寫入到 null BitmapBufferBuilder。 否則,將 0 寫入到 null BitmapBufferBuilder,並將該值傳遞給 Builder.prototype.setValue()

    參數

    • index: number

      要寫入的值的索引。

    • value: TNull | T["TValue"]

      要在提供的索引處寫入的值。

    Returns Builder<T, TNull>

    更新後的 Builder 實例。

  • 參數

    • index: number
    • valid: boolean

    Returns boolean

  • 在提供的索引處將值寫入到底層緩衝區,繞過 null 值檢查。 這是一種低階方法,

    參數

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

    Returns void

  • 清除 Builder 並傳回 Vector<T>

    Returns Vector<T>

    清除值的 Vector<T>

  • 型別參數

    參數

    • options: BuilderTransformOptions<T, TNull>

    Returns BuilderTransform<T, TNull>

  • 型別參數

    參數

    • options: BuilderDuplexOptions<T, TNull>

    返回 Duplex