@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 CHANGED
@@ -1,7 +1,7 @@
1
1
  # ObjectExplorer
2
2
 
3
- **The VSCode for Cloud Storage.** Browse, preview and search S3, Google Cloud Storage, Azure Blob
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