From 9d49dabc155cb984f0cfac8c618aa6feb55b36dd Mon Sep 17 00:00:00 2001 From: Kenny Daniel Date: Sat, 14 Sep 2024 21:12:30 -0700 Subject: [PATCH] Query api --- demo/App.tsx | 17 ++++---- demo/bundle.min.js | 2 +- demo/bundle.min.js.map | 2 +- package.json | 2 +- src/hyparquet.d.ts | 11 +++++ src/hyparquet.js | 2 + src/query.js | 99 ++++++++++++++++++++++++++++++++++++++++++ test/query.test.js | 61 ++++++++++++++++++++++++++ 8 files changed, 184 insertions(+), 12 deletions(-) create mode 100644 src/query.js create mode 100644 test/query.test.js diff --git a/demo/App.tsx b/demo/App.tsx index b8a653c..3d046da 100644 --- a/demo/App.tsx +++ b/demo/App.tsx @@ -1,8 +1,8 @@ -import HighTable, { DataFrame, sortableDataFrame } from 'hightable' +import HighTable, { DataFrame } from 'hightable' import { compressors } from 'hyparquet-compressors' import React, { useEffect, useState } from 'react' -import { parquetReadObjects } from '../src/hyparquet.js' import { FileMetaData, parquetMetadataAsync, parquetSchema } from '../src/metadata.js' +import { parquetQuery } from '../src/query.js' import type { AsyncBuffer } from '../src/types.js' import { asyncBufferFromUrl } from '../src/utils.js' import Dropdown from './Dropdown.js' @@ -52,10 +52,7 @@ export default function App({ url }: { url?: string }) { setMetadata(metadata) setName(name) setByteLength(asyncBuffer.byteLength) - let df = parquetDataFrame(asyncBuffer, metadata) - if (df.numRows <= 10000) { - df = sortableDataFrame(df) - } + const df = parquetDataFrame(asyncBuffer, metadata) setDf(df) document.getElementById('welcome')?.remove() } @@ -99,12 +96,14 @@ function parquetDataFrame(file: AsyncBuffer, metadata: FileMetaData): DataFrame /** * @param {number} rowStart * @param {number} rowEnd + * @param {string} orderBy * @returns {Promise} */ - rows(rowStart, rowEnd) { - console.log(`reading rows ${rowStart}-${rowEnd}`) - return parquetReadObjects({ file, compressors, rowStart, rowEnd }) + rows(rowStart, rowEnd, orderBy) { + console.log(`reading rows ${rowStart}-${rowEnd}`, orderBy) + return parquetQuery({ file, compressors, rowStart, rowEnd, orderBy }) }, + sortable: true, } } diff --git a/demo/bundle.min.js b/demo/bundle.min.js index 1bb7b5b..3977811 100644 --- a/demo/bundle.min.js +++ b/demo/bundle.min.js @@ -7,5 +7,5 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */function v(){if(s)return m;s=1;var e=o(),n=y();function t(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,t=1;t