Skip to main content

Types and Vectors

This documentation reflects Arrow JS v4.0. Needs to be updated for the new Arrow API in v9.0 +.

Overview

Usage

Constructing new Vector instances is done through the static from() methods

Special Vectors

Dictionary Arrays

The Dictionary type is a special array type that enables one or more record batches in a file or stream to transmit integer indices referencing a shared dictionary containing the distinct values in the logical array. Later record batches reuse indices in earlier batches and add new ones as needed.

A Dictionary is similar to a factor in R or a pandas, or "Categorical" in Python. It is is often used with strings to save memory and improve performance.

StructVector

Holds nested fields.

Bool Vectors

Bool Vectors
BoolVector

Binary Vectors

Binary Vectors
BinaryVector

FloatVectors

| Float Vectors | Backing | Comments | | --- | | Float16Vector | Uint16Array | No native JS 16 bit type, additional methods available | | Float32Vector | Float32Array | Holds 32 bit floats | | Float64Vector | Float64Array | Holds 64 bit floats |

Static FloatVector Methods

FloatVector.from(data: Uint16Array): Float16Vector;

FloatVector.from(data: Float32Array): Float32Vector;

FloatVector.from(data: Float64Array): Float64Vector;

FloatVector16.from(data: Uint8Array | Iterable<Number>): Float16Vector;

FloatVector16.from(data: Uint16Array | Iterable<Number>): Float16Vector;

FloatVector32.from(data: Float32['TArray'] | Iterable<Number>): Float32Vector;

FloatVector64.from(data: Float64['TArray'] | Iterable<Number>): Float64Vector;

Float16Vector Methods

Since JS doesn't have half floats, Float16Vector is backed by a Uint16Array integer array. To make it practical to work with these arrays in JS, some extra methods are added.

toArray() : Uint16Array

Returns a zero-copy view of the underlying Uint16Array data.

Note: Avoids incurring extra compute or copies if you're calling toArray() in order to create a buffer for something like WebGL, but makes it hard to use the returned data as floating point values in JS.

toFloat32Array() : Float32Array

This method will convert values to 32 bit floats. Allocates a new Array.

toFloat64Array() : Float64Array

This method will convert values to 64 bit floats. Allocates a new Array.

IntVectors

Int VectorsBackingComments
Int8VectorInt8Array
Int16VectorInt16Array
Int32VectorInt32Array
Int64VectorInt32Array64-bit values stored as pairs of lo, hi 32-bit values for engines without BigInt support, extra methods available
Uint8VectorUint8Array
Uint16VectorUint16Array
Uint32VectorUint32Array
Uint64VectorUint32Array64-bit values stored as pairs of lo, hi 32-bit values for engines without BigInt support, extra methods available

Int64Vector Methods

toArray() : Int32Array

Returns a zero-copy view of the underlying pairs of lo, hi 32-bit values as an Int32Array. This Array's length is twice the logical length of the Int64Vector.

toBigInt64Array(): BigInt64Array

Returns a zero-copy view of the underlying 64-bit integers as a BigInt64Array. This Array has the samne length as the length of the original Int64Vector.

Note: as of 03/2019, BigInt64Array is only available in v8/Chrome. In JS runtimes without support for BigInt, this method throws an unsupported error.

Uint64Vector Methods

toArray() : Uint32Array

Returns a zero-copy view of the underlying pairs of lo, hi 32-bit values as a Uint32Array. This Array's length is twice the logical length of the Uint64Vector.

toBigUint64Array(): BigUint64Array

Returns a zero-copy view of the underlying 64-bit integers as a BigUint64Array. This Array has the samne length as the length of the original Uint64Vector.

Note: as of 03/2019, BigUint64Array is only available in v8/Chrome. In JS runtimes without support for BigInt, this method throws an unsupported error.

Static IntVector Methods

IntVector.from(data: Int8Array): Int8Vector;

IntVector.from(data: Int16Array): Int16Vector;

IntVector.from(data: Int32Array, is64?: boolean): Int32Vector | Int64Vector;

IntVector.from(data: Uint8Array): Uint8Vector;

IntVector.from(data: Uint16Array): Uint16Vector;

IntVector.from(data: Uint32Array, is64?: boolean): Uint32Vector | Uint64Vector;

Int8Vector.from(this: typeof Int8Vector, data: Int8Array | Iterable<number>): Int8Vector;

Int16Vector.from(this: typeof Int16Vector, data: Int16Array | Iterable<number>): Int16Vector;

Int32Vector.from(this: typeof Int32Vector, data: Int32Array | Iterable<number>): Int32Vector;

Int64Vector.from(this: typeof Int64Vector, data: Int32Array | Iterable<number>): Int64Vector;

Uint8Vector.from(this: typeof Uint8Vector, data: Uint8Array | Iterable<number>): Uint8Vector;

Uint16Vector.from(this: typeof Uint16Vector, data: Uint16Array | Iterable<number>): Uint16Vector;

Uint32Vector.from(this: typeof Uint32Vector, data: Uint32Array | Iterable<number>): Uint32Vector;

Uint64Vector.from(this: typeof Uint64Vector, data: Uint32Array | Iterable<number>): Uint64Vector;

Date Vectors

Date VectorsBacking
DateDayVectorInt32Array
DateMillisecondVectorInt32ArrayTBD - stride: 2?