pythonadvanced

Ibis Portable DataFrame SQL

Write backend-agnostic analytics queries with Ibis that compile to DuckDB, BigQuery, or Spark.

python
import ibis
ibis.options.interactive = True

con = ibis.duckdb.connect(':memory:')
con.create_table('events', ibis.memtable({'user_id':[1,1,2,2,3],'action':['click','view','click','buy','view'],'value':[1.0,2.0,1.5,50.0,2.0]}))

t = con.table('events')

result = (
    t.group_by('user_id')
     .aggregate(
         actions=t['action'].count(),
         total_value=t['value'].sum(),
     )
     .order_by('total_value', ascending=False)
)
print(result.execute())

Use Cases

  • portable analytics
  • backend-agnostic queries
  • lakehouse exploration

Tags

Related Snippets

Similar patterns you can reuse in the same workflow.