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 VectorsBackingComments
Float16VectorUint16ArrayNo native JS 16 bit type, additional methods available
Float32VectorFloat32ArrayHolds 32 bit floats
Float64VectorFloat64ArrayHolds 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?