Skip to content

Delta Lake Input

Reads data from a Delta Lake table at any object store URI (S3, Azure, GCS, or local filesystem).

How it works

  1. Opens the Delta table at the configured URI using the deltalake crate.
  2. Registers the table in a DataFusion session for SQL querying.
  3. Optionally applies a filter predicate for partition/row pushdown.
  4. Converts each Arrow RecordBatch row to a JSON record.
  5. Namespace convention: delta_lake.{table_uri}.

Configuration

yaml
data_sources:
  source:
    DeltaLake:
      table_uri: "s3://my-bucket/delta-table"
      storage_options:
        AWS_REGION: us-east-1
      filter: "date > '2024-01-01'"

Configuration variables

VariableDefaultDescription
table_uriDelta table URI (s3://, az://, gs://, file:///)
storage_optionsKey-value map for object store auth (e.g. AWS_REGION, AWS_ACCESS_KEY_ID)
versionSpecific Delta table version to read
filterSQL WHERE clause for pushdown filtering
batch_size_rows10000Rows per ingest batch
formatjsonData format

Authentication

Authentication depends on the storage backend referenced by table_uri. For security best practices, we strongly advise against storing storage credentials in skippr.yml. Use environment variable interpolation instead: replace the relevant storage_options value with your own ${ENV_VAR} reference.

The relevant part of skippr.yml looks like this:

yaml
data_sources:
  source:
    DeltaLake:
      table_uri: "s3://bucket/path/to/table"
      storage_options:
        AWS_ACCESS_KEY_ID: "${DELTA_AWS_ACCESS_KEY_ID}"
        AWS_SECRET_ACCESS_KEY: "${DELTA_AWS_SECRET_ACCESS_KEY}"

Set the env vars before running skipprd:

macOS / Linux

bash
export DELTA_AWS_ACCESS_KEY_ID="AKIA..."
export DELTA_AWS_SECRET_ACCESS_KEY="secret"

Windows PowerShell

powershell
$env:DELTA_AWS_ACCESS_KEY_ID = "AKIA..."
$env:DELTA_AWS_SECRET_ACCESS_KEY = "secret"

Windows Command Prompt

cmd
set DELTA_AWS_ACCESS_KEY_ID=AKIA...
set DELTA_AWS_SECRET_ACCESS_KEY=secret

Troubleshooting

SymptomFix
table cannot be openedVerify table_uri, backend credentials, and that the Delta log is present at that path.
schema inference looks wrongCheck the selected table version and any optional filter expression.

This site is source-available under PolyForm Shield 1.0.0