Skip to content

Query

Use query to run read-only SQL over Iceberg tables created by ELT pipelines and over the shared observability pipelines (otel-logs, otel-metrics, otel-traces).

Status: Preview — ExecuteStatement, ListTables, and DescribeTable are callable. StopQuery is not implemented and is not callable. Your tenant_id comes from the authenticated JWT. Observability queries always filter to that tenant.

Before you start

  • Get a Skippr Cloud access token from Auth.
  • Ensure your ABAC policy allows query:ExecuteStatement (or query:Invoke).
  • Use region eu-central-1.

Concepts

  • CloudQuery is the JSON door. You do not connect to Flight SQL yourself.
  • Datalake tables exist only as ELT pipeline outputs. Query cannot create tables.
  • Observability SQL uses the same three pipelines for every tenant, including system. Isolation is the bronze tenant_id column.

Run a statement

bash
export CLOUD_BEARER_TOKEN='<access_token>'

curl -sS https://query.eu-central-1.cloud.skippr.io/ \
  -H "Authorization: Bearer ${CLOUD_BEARER_TOKEN}" \
  -H 'Content-Type: application/json' \
  -H 'X-Cloud-Target: CloudQuery.ExecuteStatement' \
  -d '{"sql": "SELECT * FROM otel_logs_tail('\''app'\'', 0, 9999999999999999999)"}'

The service binds tenant_id from your JWT. A query that names a different tenant is rejected.

Access

  • Hostname: query.eu-central-1.cloud.skippr.io (also api.cloud.skippr.io with X-Cloud-Target: CloudQuery.*)
  • Auth: Bearer JWT or SigV4 service query
  • Region: eu-central-1