apache-arrow
Version:
Apache Arrow columnar in-memory format
1 lines • 21.6 kB
Source Map (JSON)
{"version":3,"sources":["table.ts"],"names":[],"mappings":"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","file":"table.js","sourcesContent":["// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from './data';\nimport { Column } from './column';\nimport { Schema, Field } from './schema';\nimport { RecordBatch, _InternalEmptyPlaceholderRecordBatch } from './recordbatch';\nimport { DataFrame } from './compute/dataframe';\nimport { RecordBatchReader } from './ipc/reader';\nimport { DataType, RowLike, Struct } from './type';\nimport { selectColumnArgs, selectArgs } from './util/args';\nimport { Clonable, Sliceable, Applicative } from './vector';\nimport { isPromise, isIterable, isAsyncIterable } from './util/compat';\nimport { RecordBatchFileWriter, RecordBatchStreamWriter } from './ipc/writer';\nimport { distributeColumnsIntoRecordBatches, distributeVectorsIntoRecordBatches } from './util/recordbatch';\nimport { Vector, Chunked, StructVector, VectorBuilderOptions, VectorBuilderOptionsAsync } from './vector/index';\n\ntype VectorMap = { [key: string]: Vector };\ntype Fields<T extends { [key: string]: DataType }> = (keyof T)[] | Field<T[keyof T]>[];\ntype ChildData<T extends { [key: string]: DataType }> = Data<T[keyof T]>[] | Vector<T[keyof T]>[];\ntype Columns<T extends { [key: string]: DataType }> = Column<T[keyof T]>[] | Column<T[keyof T]>[][];\n\nexport interface Table<T extends { [key: string]: DataType } = any> {\n\n get(index: number): Struct<T>['TValue'];\n [Symbol.iterator](): IterableIterator<RowLike<T>>;\n\n slice(begin?: number, end?: number): Table<T>;\n concat(...others: Vector<Struct<T>>[]): Table<T>;\n clone(chunks?: RecordBatch<T>[], offsets?: Uint32Array): Table<T>;\n\n scan(next: import('./compute/dataframe').NextFunc, bind?: import('./compute/dataframe').BindFunc): void;\n scanReverse(next: import('./compute/dataframe').NextFunc, bind?: import('./compute/dataframe').BindFunc): void;\n countBy(name: import('./compute/predicate').Col | string): import('./compute/dataframe').CountByResult;\n filter(predicate: import('./compute/predicate').Predicate): import('./compute/dataframe').FilteredDataFrame<T>;\n}\n\nexport class Table<T extends { [key: string]: DataType } = any>\n extends Chunked<Struct<T>>\n implements DataFrame<T>,\n Clonable<Table<T>>,\n Sliceable<Table<T>>,\n Applicative<Struct<T>, Table<T>> {\n\n /** @nocollapse */\n public static empty<T extends { [key: string]: DataType } = {}>(schema = new Schema<T>([])) { return new Table<T>(schema, []); }\n\n public static from(): Table<{}>;\n public static from<T extends { [key: string]: DataType } = any>(source: RecordBatchReader<T>): Table<T>;\n public static from<T extends { [key: string]: DataType } = any>(source: import('./ipc/reader').FromArg0): Table<T>;\n public static from<T extends { [key: string]: DataType } = any>(source: import('./ipc/reader').FromArg2): Table<T>;\n public static from<T extends { [key: string]: DataType } = any>(source: import('./ipc/reader').FromArg1): Promise<Table<T>>;\n public static from<T extends { [key: string]: DataType } = any>(source: import('./ipc/reader').FromArg3): Promise<Table<T>>;\n public static from<T extends { [key: string]: DataType } = any>(source: import('./ipc/reader').FromArg4): Promise<Table<T>>;\n public static from<T extends { [key: string]: DataType } = any>(source: import('./ipc/reader').FromArg5): Promise<Table<T>>;\n public static from<T extends { [key: string]: DataType } = any>(source: PromiseLike<RecordBatchReader<T>>): Promise<Table<T>>;\n public static from<T extends { [key: string]: DataType } = any, TNull = any>(options: VectorBuilderOptions<Struct<T>, TNull>): Table<T>;\n public static from<T extends { [key: string]: DataType } = any, TNull = any>(options: VectorBuilderOptionsAsync<Struct<T>, TNull>): Promise<Table<T>>;\n /** @nocollapse */\n public static from<T extends { [key: string]: DataType } = any, TNull = any>(input?: any) {\n\n if (!input) { return Table.empty(); }\n\n if (typeof input === 'object') {\n let table = isIterable(input['values']) ? tableFromIterable<T, TNull>(input)\n : isAsyncIterable(input['values']) ? tableFromAsyncIterable<T, TNull>(input)\n : null;\n if (table !== null) { return table; }\n }\n\n let reader = RecordBatchReader.from<T>(input) as RecordBatchReader<T> | Promise<RecordBatchReader<T>>;\n\n if (isPromise<RecordBatchReader<T>>(reader)) {\n return (async () => await Table.from(await reader))();\n }\n if (reader.isSync() && (reader = reader.open())) {\n return !reader.schema ? Table.empty() : new Table<T>(reader.schema, [...reader]);\n }\n return (async (opening) => {\n const reader = await opening;\n const schema = reader.schema;\n const batches: RecordBatch[] = [];\n if (schema) {\n for await (let batch of reader) {\n batches.push(batch);\n }\n return new Table<T>(schema, batches);\n }\n return Table.empty();\n })(reader.open());\n }\n\n /** @nocollapse */\n public static async fromAsync<T extends { [key: string]: DataType } = any>(source: import('./ipc/reader').FromArgs): Promise<Table<T>> {\n return await Table.from<T>(source as any);\n }\n\n /** @nocollapse */\n public static fromStruct<T extends { [key: string]: DataType } = any>(vector: Vector<Struct<T>>) {\n return Table.new<T>(vector.data.childData as Data<T[keyof T]>[], vector.type.children);\n }\n\n /**\n * @summary Create a new Table from a collection of Columns or Vectors,\n * with an optional list of names or Fields.\n *\n *\n * `Table.new` accepts an Object of\n * Columns or Vectors, where the keys will be used as the field names\n * for the Schema:\n * ```ts\n * const i32s = Int32Vector.from([1, 2, 3]);\n * const f32s = Float32Vector.from([.1, .2, .3]);\n * const table = Table.new({ i32: i32s, f32: f32s });\n * assert(table.schema.fields[0].name === 'i32');\n * ```\n *\n * It also accepts a a list of Vectors with an optional list of names or\n * Fields for the resulting Schema. If the list is omitted or a name is\n * missing, the numeric index of each Vector will be used as the name:\n * ```ts\n * const i32s = Int32Vector.from([1, 2, 3]);\n * const f32s = Float32Vector.from([.1, .2, .3]);\n * const table = Table.new([i32s, f32s], ['i32']);\n * assert(table.schema.fields[0].name === 'i32');\n * assert(table.schema.fields[1].name === '1');\n * ```\n *\n * If the supplied arguments are Columns, `Table.new` will infer the Schema\n * from the Columns:\n * ```ts\n * const i32s = Column.new('i32', Int32Vector.from([1, 2, 3]));\n * const f32s = Column.new('f32', Float32Vector.from([.1, .2, .3]));\n * const table = Table.new(i32s, f32s);\n * assert(table.schema.fields[0].name === 'i32');\n * assert(table.schema.fields[1].name === 'f32');\n * ```\n *\n * If the supplied Vector or Column lengths are unequal, `Table.new` will\n * extend the lengths of the shorter Columns, allocating additional bytes\n * to represent the additional null slots. The memory required to allocate\n * these additional bitmaps can be computed as:\n * ```ts\n * let additionalBytes = 0;\n * for (let vec in shorter_vectors) {\n * additionalBytes += (((longestLength - vec.length) + 63) & ~63) >> 3;\n * }\n * ```\n *\n * For example, an additional null bitmap for one million null values would require\n * 125,000 bytes (`((1e6 + 63) & ~63) >> 3`), or approx. `0.11MiB`\n */\n public static new<T extends { [key: string]: DataType } = any>(...columns: Columns<T>): Table<T>;\n public static new<T extends VectorMap = any>(children: T): Table<{ [P in keyof T]: T[P]['type'] }>;\n public static new<T extends { [key: string]: DataType } = any>(children: ChildData<T>, fields?: Fields<T>): Table<T>;\n /** @nocollapse */\n public static new(...cols: any[]) {\n return new Table(...distributeColumnsIntoRecordBatches(selectColumnArgs(cols)));\n }\n\n constructor(batches: RecordBatch<T>[]);\n constructor(...batches: RecordBatch<T>[]);\n constructor(schema: Schema<T>, batches: RecordBatch<T>[]);\n constructor(schema: Schema<T>, ...batches: RecordBatch<T>[]);\n constructor(...args: any[]) {\n\n let schema: Schema<T> = null!;\n\n if (args[0] instanceof Schema) { schema = args.shift(); }\n\n let chunks = selectArgs<RecordBatch<T>>(RecordBatch, args);\n\n if (!schema && !(schema = chunks[0] && chunks[0].schema)) {\n throw new TypeError('Table must be initialized with a Schema or at least one RecordBatch');\n }\n\n chunks[0] || (chunks[0] = new _InternalEmptyPlaceholderRecordBatch(schema));\n\n super(new Struct(schema.fields), chunks);\n\n this._schema = schema;\n this._chunks = chunks;\n }\n\n protected _schema: Schema<T>;\n // List of inner RecordBatches\n protected _chunks: RecordBatch<T>[];\n protected _children?: Column<T[keyof T]>[];\n\n public get schema() { return this._schema; }\n public get length() { return this._length; }\n public get chunks() { return this._chunks; }\n public get numCols() { return this._numChildren; }\n\n public clone(chunks = this._chunks) {\n return new Table<T>(this._schema, chunks);\n }\n\n public getColumn<R extends keyof T>(name: R): Column<T[R]> {\n return this.getColumnAt(this.getColumnIndex(name)) as Column<T[R]>;\n }\n public getColumnAt<R extends DataType = any>(index: number): Column<R> | null {\n return this.getChildAt(index);\n }\n public getColumnIndex<R extends keyof T>(name: R) {\n return this._schema.fields.findIndex((f) => f.name === name);\n }\n public getChildAt<R extends DataType = any>(index: number): Column<R> | null {\n if (index < 0 || index >= this.numChildren) { return null; }\n let field: Field<R>, child: Column<R>;\n const fields = (this._schema as Schema<any>).fields;\n const columns = this._children || (this._children = []) as Column[];\n if (child = columns[index]) { return child as Column<R>; }\n if (field = fields[index]) {\n const chunks = this._chunks\n .map((chunk) => chunk.getChildAt<R>(index))\n .filter((vec): vec is Vector<R> => vec != null);\n if (chunks.length > 0) {\n return (columns[index] = new Column<R>(field, chunks));\n }\n }\n return null;\n }\n\n // @ts-ignore\n public serialize(encoding = 'binary', stream = true) {\n const Writer = !stream\n ? RecordBatchFileWriter\n : RecordBatchStreamWriter;\n return Writer.writeAll(this).toUint8Array(true);\n }\n public count(): number {\n return this._length;\n }\n public select<K extends keyof T = any>(...columnNames: K[]) {\n const nameToIndex = this._schema.fields.reduce((m, f, i) => m.set(f.name as K, i), new Map<K, number>());\n return this.selectAt(...columnNames.map((columnName) => nameToIndex.get(columnName)!).filter((x) => x > -1));\n }\n public selectAt<K extends T[keyof T] = any>(...columnIndices: number[]) {\n const schema = this._schema.selectAt<K>(...columnIndices);\n return new Table(schema, this._chunks.map(({ length, data: { childData } }) => {\n return new RecordBatch(schema, length, columnIndices.map((i) => childData[i]).filter(Boolean));\n }));\n }\n public assign<R extends { [key: string]: DataType } = any>(other: Table<R>) {\n\n const fields = this._schema.fields;\n const [indices, oldToNew] = other.schema.fields.reduce((memo, f2, newIdx) => {\n const [indices, oldToNew] = memo;\n const i = fields.findIndex((f) => f.name === f2.name);\n ~i ? (oldToNew[i] = newIdx) : indices.push(newIdx);\n return memo;\n }, [[], []] as number[][]);\n\n const schema = this._schema.assign(other.schema);\n const columns = [\n ...fields.map((_f, i, _fs, j = oldToNew[i]) =>\n (j === undefined ? this.getColumnAt(i) : other.getColumnAt(j))!),\n ...indices.map((i) => other.getColumnAt(i)!)\n ].filter(Boolean) as Column<(T & R)[keyof T | keyof R]>[];\n\n return new Table<T & R>(...distributeVectorsIntoRecordBatches<any>(schema, columns));\n }\n}\n\nfunction tableFromIterable<T extends { [key: string]: DataType } = any, TNull = any>(input: VectorBuilderOptions<Struct<T>, TNull>) {\n const { type } = input;\n if (type instanceof Struct) {\n return Table.fromStruct(StructVector.from(input as VectorBuilderOptions<Struct<T>, TNull>));\n }\n return null;\n}\n\nfunction tableFromAsyncIterable<T extends { [key: string]: DataType } = any, TNull = any>(input: VectorBuilderOptionsAsync<Struct<T>, TNull>) {\n const { type } = input;\n if (type instanceof Struct) {\n return StructVector.from(input as VectorBuilderOptionsAsync<Struct<T>, TNull>).then((vector) => Table.fromStruct(vector));\n }\n return null;\n}\n"]}