Query Parquet and CSV files with SQL
Find the busiest taxi pickup zones with SQL on real files.
Open the guideTHE SAIL EXAMPLE COLLECTION
Explore a city’s taxi trips. Find a photo with a sentence. Bring a customer table up to date.
Real tasks, explained step by step, with Spark SQL and Python on Sail. Pick something that makes you curious.
On your laptop · No Java · No cluster · No API key
01 / Best match
A FEW GOOD PLACES TO START
Each guide shows the result,
the code, and one change to try.
Find the busiest taxi pickup zones with SQL on real files.
Open the guide
Find a photo by describing what you want to see.
Open the guideApply customer updates, inserts and deletes in one SQL statement.
Open the guideFROM CURIOUS TO RUNNING
Install uv, then run the taxi example. It handles Python and package setup for you.
After cd sail-examples, run all guide commands from that repository root.
The first run downloads about 1.4 MB of trip data and a small zone lookup, plus Python packages.
git clone https://github.com/lakehq/sail-examples.git
cd sail-examples
uv run quickstart/query-files-with-sql/main.py
KNOW WHAT TO EXPECT
From caching to file formats, these checked notes explain behavior that can change how you write a query.
Browse all 38 notes →FOLLOW YOUR CURIOSITY
Browse all 35 runnable examples.
35 examples
Run your first Spark SQL and DataFrame queries on Sail.
Start hereFind the busiest taxi pickup zones with SQL on real files.
Start hereFind seasonal trends and rush hours in a year of NYC taxi trips.
AnalyticsFind payment discrepancies without counting repeated deliveries twice.
AnalyticsRecreate an earlier report after its source tables have changed.
AnalyticsSee where users drop out and which cohorts come back.
AnalyticsQuery pandas data with SQL and bring the results back to Python.
AnalyticsTurn spoken support requests into a report of customer needs.
AnalyticsReplay updates safely without bringing deleted records back.
Data pipelinesBuild training features using only what was known at the time.
Data pipelinesApply customer updates, inserts and deletes in one SQL statement.
Data pipelinesEvolve a Delta table and inspect its earlier versions.
Data pipelinesCompare search methods against a versioned set of relevance judgments.
Data pipelinesUpdate an Iceberg table and read its earlier snapshots.
Data pipelinesTurn nested orders into clean tables while keeping rejected records.
Data pipelinesRead scanned invoices and check them against purchase orders.
Data pipelinesRepair past sales totals when orders are corrected or deleted.
Data pipelinesBuild reporting tables from raw taxi files with data quality checks.
Data pipelinesQuery a paginated REST API as a table.
Python integration and testingChoose the right way to run Python logic inside a query.
Python integration and testingFind related documents using text embeddings and SQL.
AI data preparationRun a model once per distinct value, then join its answers back.
AI data preparationClassify support tickets with a model called from SQL.
AI data preparationUpdate a search dataset without re-embedding unchanged documents.
AI data preparationMatch robot camera frames to nearby state and action records.
AI data preparationLabel photos and send uncertain predictions for review.
AI data preparationCheck humanoid robot recordings and align every camera frame.
AI data preparationCheck robot demonstrations before splitting them into training sets.
AI data preparationTurn a folder of images into thumbnails and a metadata table.
AI data preparationExtract text from old scans and see where OCR makes mistakes.
AI data preparationTurn PDFs into searchable passages.
AI data preparationFind a photo by describing what you want to see.
AI data preparationFind a scene in a video by describing it.
AI data preparationTurn audio files into transcripts and check their accuracy.
AI data preparationTest Spark DataFrame code locally without Java.
Python integration and testingTry a broader search, or clear the filters to see the whole collection.
CODE YOU CAN INSPECT
Every guide links to its runnable source. The test suite compares portable examples with Apache Spark and checks selected results against independent answers.
These are examples with bounded inputs, not a promise about every workload. Each guide explains its requirements and limits.
How the examples are checked