Publish your datasets
If you have data people keep asking for, you're four steps from being a dataset publisher — no server, no API, no database.
your_data.csv
│
▼
python make_dataset.py your_data.csv
│
▼
a folder: MYDATA.parquet + _META.parquet
│
▼
anyone with Sparrow: =ES.Get("MYDATA.SALES.M")
The CSV contract
series_id,period,value,name,units
MYDATA.SALES.M,2026-07,1250,Monthly Sales,thousand EUR
MYDATA.SALES.M,2026-06,1180,,
MYDATA.HEADCOUNT.M,2026-07,47,Headcount,people
name and units are optional (one row per series
is enough) — they feed the folder's catalog so search and labels work for
your consumers with no server anywhere.
Where you can publish
| Destination | Who reaches it | What it takes |
|---|---|---|
| A folder on a PC | you | copy files |
| A network share | your team | copy files |
| Any static web host / CDN | your customers | upload files |
| An S3-compatible bucket | your organisation | upload files |
| An Arrow Flight server | live subscribers | the Enterprise conversation |
The honest rule
Publish atomically, and skip the write when nothing changed — so a file's timestamp moves if and only if its data changed. That one rule is what makes every Sparrow user's NEW-DATA signals trustworthy against your feed. Our reference publisher handles it with a content hash; details in the specification.
Already published somewhere else? Adapters.
Some publishers already publish — they just don't publish Sparrow datasets yet. An adapter converts their format in one command, with the same honest freshness semantics. Adapter #1 is the U.S. Energy Information Administration's official bulk file:
python eia_to_dataset.py https://api.eia.gov/bulk/PET.zip datasets\
# 181,068 series + full catalog, ~7 seconds
# re-runs are free until EIA republishes (conditional download)
Schedule that command daily and you've built a personal data pipeline: when EIA publishes, your file's timestamp moves, and every workbook pointed at the folder lights up — names, units and frequencies included, because EIA's format carries them.
Ship the recipe with the data
Drop an _ADAPTERS.json beside your datasets and consumers'
Import menus grow an "Update EIA Petroleum" entry — one click pulls
your next vintage, with a "Last imported: … — who, when, outcome"
line read from the folder's own history. Recipes declare parameters, never
code; an adapter refuses to overwrite files another publisher owns unless
your recipe explicitly invites it. On a shared drive that means any analyst
can refresh the team's data, and nobody can clobber it by accident.
Updates and revisions
Republish the file. Consumers' ribbons light up within 30 seconds; their refresh marks your new periods with borders and your revisions with before/after comments. You never notify anyone — the format does it.