Skip to content

ArrowLake

ArrowLake is SAMSKARA’s built-in lakehouse: Apache Iceberg tables on your own object storage, queried through DuckDB. There’s no separate service to run — it’s part of the same backend that executes your notebooks.

sm.write_arrowdelta(df, "bronze.weather.readings", mode="append")

mode accepts "append" or "overwrite". The table reference is namespace.schema.table (or catalog.namespace.table when a project is linked to more than one ArrowLake profile).

df = sm.read_arrowdelta("bronze.weather.readings")
# Time travel
df_yesterday = sm.read_arrowdelta("bronze.weather.readings", as_of="2026-07-31")
df_snapshot = sm.read_arrowdelta("bronze.weather.readings", snapshot_id=1234567890)
sm.sql_arrowdelta("SELECT station, avg(temp_c) FROM bronze.weather.readings GROUP BY station")

The same tables are browsable and queryable directly from SQL Workbench’s schema tree.

sm.merge_arrowdelta(df, "bronze.weather.readings", merge_key="station_id")
  • sm.delete_arrowdelta("namespace.table", where="temp_c IS NULL") — conditional delete
  • sm.list_arrowdelta(namespace="bronze.weather") — list tables in a namespace
  • sm.table_exists_arrowdelta("bronze.weather.readings") — existence check
  • sm.create_namespace_arrowdelta("bronze.weather") — create a namespace
  • sm.create_catalog("name") — create a new catalog (permission-gated)

A project can be linked to more than one ArrowLake profile. SQL Workbench then shows a three-level tree — catalog → namespace → table — across every linked profile, and sm.write_arrowdelta / sm.read_arrowdelta accept a profile= argument to target a specific one.

  • Scheduler to run ArrowLake writes on a schedule
  • Dashboards to chart directly off an ArrowLake table