@knockdata/objectexplorer 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +73 -2
- package/app/assets/index.css +1 -1
- package/app/assets/index.js +247 -160
- package/package.json +1 -1
- package/server/WebServer.mjs +269 -256
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# ObjectExplorer
|
|
2
2
|
|
|
3
|
-
**The VSCode for Cloud Storage.** Browse, preview and search S3, Google Cloud Storage,
|
|
4
|
-
and local folders in one window — and every byte stays on your machine.
|
|
3
|
+
**The VSCode for Cloud Storage.** Browse, preview, query and search S3, Google Cloud Storage,
|
|
4
|
+
Azure Blob and local folders in one window — and every byte stays on your machine.
|
|
5
5
|
|
|
6
6
|
<img src="https://raw.githubusercontent.com/knockdata/objectexplorer/refs/heads/main/assets/screenshot/objectexplorer.png" width="800">
|
|
7
7
|
|
|
@@ -89,6 +89,8 @@ ObjectExplorer collapses that loop:
|
|
|
89
89
|
- **Preview instead of download.** Formats render in place — including the ones no console will ever
|
|
90
90
|
open, like Parquet, SPSS and SAS.
|
|
91
91
|
- **Search across buckets.** One query over local folders and cloud prefixes at the same time.
|
|
92
|
+
- **Query, chart and model in place.** A table opens as a notebook: SQL over the object, a chart of
|
|
93
|
+
what came back, and a gradient boosting model over the rows — all on your machine.
|
|
92
94
|
|
|
93
95
|
## Your data never leaves your machine
|
|
94
96
|
|
|
@@ -136,6 +138,73 @@ file you are looking at.
|
|
|
136
138
|
|
|
137
139
|
Works on Parquet, CSV, SPSS `.sav` and SAS `.xpt`.
|
|
138
140
|
|
|
141
|
+
### Notebook
|
|
142
|
+
|
|
143
|
+
Open a table and it opens as a notebook: a column of cells, each one a few lines of code over its
|
|
144
|
+
own output. The first two are already written — a `SELECT *` over the object you clicked, and a
|
|
145
|
+
chart of what that query returned — so the file is queried and plotted before you have typed
|
|
146
|
+
anything.
|
|
147
|
+
|
|
148
|
+
```sql
|
|
149
|
+
SELECT * FROM 'gs://sales-eu/orders/2026-08-24.parquet' LIMIT 10000
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
The query runs on your machine, against the object where it lives. Nothing is staged into a
|
|
153
|
+
temporary folder first: DuckDB reads the bucket directly, so a `WHERE` over a multi-gigabyte
|
|
154
|
+
Parquet file touches the row groups it needs and no more.
|
|
155
|
+
|
|
156
|
+
Cells are piped rather than shared. Each one reads the rows produced by the nearest cell above it
|
|
157
|
+
that produced any, so a query narrows the data and everything under it — the chart, the model, the
|
|
158
|
+
next query — sees what came back. Nothing re-runs on its own: a cell runs from its run button or
|
|
159
|
+
Shift+Enter, so what is on screen is always something you asked for.
|
|
160
|
+
|
|
161
|
+
| Cell | What it is |
|
|
162
|
+
|---|---|
|
|
163
|
+
| **Table** | SQL, with the rows as a virtualized grid — column summaries and all |
|
|
164
|
+
| **Chart** | a plot of the rows above, as source you can edit |
|
|
165
|
+
| **Model** | gradient boosting over the rows above |
|
|
166
|
+
| **Code** | JavaScript over the same rows, with a pandas-style dataframe already in scope |
|
|
167
|
+
| **Text** | markdown, rendered when you click away |
|
|
168
|
+
|
|
169
|
+
A chart cell writes its own first draft. The column statistics say which column is a date, which is
|
|
170
|
+
a category, which is a measure and which is an id that counts up once per row — and the strip under
|
|
171
|
+
the code offers the charts those columns actually support, named in plain words. Click one and its
|
|
172
|
+
source is written into the editor and drawn. After that it is source, and it is yours.
|
|
173
|
+
|
|
174
|
+
A folder is a table too: Delta, Iceberg and Hudi tables, Hive-partitioned exports and `YYYY/MM/DD`
|
|
175
|
+
date prefixes are read as one table rather than as a pile of files.
|
|
176
|
+
|
|
177
|
+
Notebooks are kept per object. Reopen the file next week — in another window, or after a restart —
|
|
178
|
+
and your cells are still there.
|
|
179
|
+
|
|
180
|
+
Queryable: `parquet` `csv` `tsv` `json` `jsonl` `xlsx` `avro`, plus SPSS `.sav` and SAS
|
|
181
|
+
`.sas7bdat` `.xpt`. ORC, Arrow and HDF5 open as grids and charts too; only SQL over them is
|
|
182
|
+
missing, and the cell says so.
|
|
183
|
+
|
|
184
|
+
### Train a model on it
|
|
185
|
+
|
|
186
|
+
A model cell is gradient boosting — LightGBM, compiled to WebAssembly and running inside the app —
|
|
187
|
+
over the rows the cell above produced.
|
|
188
|
+
|
|
189
|
+
Pick the label, the column you want predicted, and the rest comes from the same statistics the grid
|
|
190
|
+
already drew: whether the question is *which one* or *how much*, which columns are worth training
|
|
191
|
+
on, and which are row numbers, ids or coordinates that would teach the model the order the file was
|
|
192
|
+
written in and nothing else.
|
|
193
|
+
|
|
194
|
+
The controls hide nothing. Leaves, learning rate and iterations are three sliders, and moving one
|
|
195
|
+
prints the JavaScript underneath it — that printed source is what trains, so a slider and a hand
|
|
196
|
+
edit end in the same place.
|
|
197
|
+
|
|
198
|
+
Two plots come out of it. Training draws what the model learned: the features ranked by their share
|
|
199
|
+
of the total gain. Prediction answers the other question — pick a row, and a waterfall walks from
|
|
200
|
+
what the model says on average to what it said about that one row, feature by feature. Those
|
|
201
|
+
contributions are TreeSHAP, exact and additive, so the steps add up to the prediction rather than
|
|
202
|
+
approximating it. Both plots show the same features in the same order, so the pair reads across:
|
|
203
|
+
what a column is worth over the whole file, and what it did to this row.
|
|
204
|
+
|
|
205
|
+
It all runs where the data already is. A model over a bucket you are not allowed to copy out of is
|
|
206
|
+
still just a local read.
|
|
207
|
+
|
|
139
208
|
### Search
|
|
140
209
|
|
|
141
210
|
Search local folders and cloud buckets in the same run: literal, whole word or regex, with include
|
|
@@ -168,6 +237,7 @@ inside a bucket is still just a table.
|
|
|
168
237
|
| | Kind | Formats |
|
|
169
238
|
|---|---|---|
|
|
170
239
|
| <img src="https://raw.githubusercontent.com/knockdata/objectexplorer/refs/heads/main/assets/format/parquet.svg" width="18"> | Parquet | `parquet` — schema, rows, column summaries |
|
|
240
|
+
| <img src="https://raw.githubusercontent.com/knockdata/objectexplorer/refs/heads/main/assets/format/table.svg" width="18"> | Data lake | `delta` `iceberg` `hudi`, Hive and date partitions — a folder read as one table |
|
|
171
241
|
| <img src="https://raw.githubusercontent.com/knockdata/objectexplorer/refs/heads/main/assets/format/table.svg" width="18"> | Tabular | `csv` `json` `jsonl` `yaml` `yml` |
|
|
172
242
|
| <img src="https://raw.githubusercontent.com/knockdata/objectexplorer/refs/heads/main/assets/format/sas.svg" width="18"> | Statistics | `xpt` (SAS transport), `sav` (SPSS) |
|
|
173
243
|
| <img src="https://raw.githubusercontent.com/knockdata/objectexplorer/refs/heads/main/assets/format/powerpoint.svg" width="18"> | Presentations | `pptx` `potx` `ppsx` `ppt` `pot` `pps` `key` |
|
|
@@ -188,6 +258,7 @@ inside a bucket is still just a table.
|
|
|
188
258
|
|
|
189
259
|
- [objectexplorer.com](https://objectexplorer.com) — screenshots and the full tour
|
|
190
260
|
- [@knockdata/objectexplorer](https://www.npmjs.com/package/@knockdata/objectexplorer) — the npm package behind `npx`
|
|
261
|
+
- [Changelog](https://github.com/knockdata/objectexplorer/blob/main/CHANGELOG.md) — what changed in each version
|
|
191
262
|
- [Releases](https://github.com/knockdata/objectexplorer/releases) — every version, every platform
|
|
192
263
|
Under the hood it is a single native binary: no Electron, no Chromium, just the OS webview (WebKit
|
|
193
264
|
on macOS and Linux, WebView2 on Windows) pointed at the HTTP server running inside the same
|