OmniSelect FileSQL

Guides
← Back to App
Home › Guides › Reading Avro and Feather files

Read Avro and Feather Files Without Writing a Line of Python

Avro is what data pipelines write: Kafka topics landed in storage, Spark and Hive jobs, BigQuery exports. Feather is what pandas and R users hand each other. Both are binary, both carry their own schema, and looking inside either one usually starts with a script. This is how to read them — and join one to the other — with no code at all.

Two Formats, Two Jobs

AvroFeather
LayoutRow by row, in blocks that may be compressedColumn by column: Apache Arrow’s file format
SchemaWritten into the file’s headerWritten into the file, as Arrow types
Usually comes fromKafka connectors, Spark, Hive, BigQuery exportspandas, R and other Arrow tools
Extensions.avro.feather, .arrow, .ipc; .arrows for the stream form

Neither opens in Excel or a text editor, and the usual fix — a few lines of Python with fastavro or pyarrow — assumes Python is there and that you want to write it.

Doing It in the Browser

OmniSelect FileSQL reads Avro with a Rust reader compiled to WebAssembly, and Feather with the Apache Arrow library — compressed Feather files included — both inside your browser tab and both served from this site. Nothing is uploaded.

  1. Open the app.
  2. Drop the files onto the File Select panel. Each becomes a table named by the first letter of its file name, shown in the Alias column: events.avro is E, products.feather is P.
  3. Look at the Avro file.
    SELECT * FROM E LIMIT 100
event_idtskindskuidcountry
e12026-06-01T09:00:00.000ZVIEWSKU-100u1GB
e22026-06-01T09:17:00.000ZCARTSKU-100u1GB
e32026-06-01T09:34:00.000ZPURCHASESKU-100u1GB
e42026-06-01T09:51:00.000ZVIEWSKU-200u2
e52026-06-01T10:08:00.000ZVIEWSKU-300u3DE

The schema has been applied for you:

Ask It Questions

Type a question into the plain-English box and the SQL is written inside your browser, with no AI service. count of events by kind becomes:

SELECT kind, COUNT(*) AS count_events FROM E GROUP BY kind
kindcount_events
VIEW5
CART2
PURCHASE3

And number of purchases by sku knows that purchases is a value of kind:

SELECT sku, COUNT(*) AS count_rows FROM E WHERE kind = 'PURCHASE' GROUP BY sku

Joining Avro to Feather

The Feather file is the product list, SELECT * FROM P:

skuproductprice
SKU-100Trail shoe89
SKU-200Rain jacket129
SKU-300Day pack54.5

Two formats, one query — purchases and revenue per product:

SELECT P.product, COUNT(*) AS purchases, SUM(P.price) AS revenue
FROM E
JOIN P ON E.sku = P.sku
WHERE E.kind = 'PURCHASE'
GROUP BY P.product
ORDER BY revenue DESC
productpurchasesrevenue
Rain jacket1129
Trail shoe189
Day pack154.5

Drop an .avro or .feather file in and see inside it.

Open the app →

Compressed Feather Files

pyarrow compresses Feather files with LZ4 unless told otherwise, and offers ZSTD as well; R’s arrow package also compresses by default. The Arrow library in the browser cannot decompress either, so the app unpacks each compressed part itself, inside the tab, before Arrow reads the file. You do nothing different: a file straight out of df.to_feather('orders.feather') opens as it is.

Two things are refused, each with a message saying why:

What Else to Know About Avro

Converting

Run a query, open the Export menu and choose CSV, Excel, JSON or Parquet. The export is the result, so a WHERE and a column list in front of it convert only what you need — and every row of the result is written, not just those on screen. Avro to Parquet is a common one: the columns keep their types.

Reasonable Questions

Do I need the schema file (.avsc)?

No. An Avro container file carries its own schema in its header, and that is what is used.

What happens to arrays and nested records?

Nested records become columns named by their path, as above. Nested data is flattened the same way as JSON — see one query across seven file formats.

Can I write Avro or Feather?

No. Exports are CSV, JSON, Excel or Parquet.

Does anything leave my machine?

No. Both readers run in the tab, and after the page has loaded it makes no network requests — here is how to check.

Related Guides