Skip to Content
We are live but in Staging 🎉
TablesCLI Guidedodil k3 table

dodil k3 table — lifecycle

Manage tables. Both creation modes (manual + pipeline-generated), plus list / get / describe / delete. Mirrors Tables — API Reference.

Persistent flag on the whole group: --bucket / -b (required).

dodil k3 table create

dodil k3 table create [name] -b BUCKET [flags]

Creates a table — manual (default) or pipeline-generated via --source.

FlagShortTypeDefaultDescription
--description-dstringHuman-readable description
--columns-jsonstringJSON array of column descriptors. Required for --source manual.
--partition-columnstring list (repeat)[]Partition columns. Repeat for multi-column partitioning.
--merge-keystring list (repeat)[]Primary-key columns (composite). Repeat for composite PK. Drives keyed routing for writes.
--sourcestringmanualCreation mode — manual or pipeline_generated
--pipeline-template-idstringRequired when --source pipeline_generated. Pick a warehouse-compatible Scriptum template.

Manual mode

Define columns explicitly; K3 creates the Delta table eagerly:

dodil k3 table create events --bucket kb-prod \ --description "Click + purchase events" \ --columns-json '[ {"name":"id", "type":"COLUMN_TYPE_LONG", "nullable":false}, {"name":"user_id", "type":"COLUMN_TYPE_STRING", "nullable":false}, {"name":"occurred_at", "type":"COLUMN_TYPE_TIMESTAMP", "nullable":false}, {"name":"event_type", "type":"COLUMN_TYPE_STRING", "nullable":false}, {"name":"payload", "type":"COLUMN_TYPE_JSON", "nullable":true} ]' \ --partition-column event_type \ --merge-key id --merge-key user_id

Column types (set by enum name): COLUMN_TYPE_STRING, COLUMN_TYPE_INT, COLUMN_TYPE_LONG, COLUMN_TYPE_SHORT, COLUMN_TYPE_FLOAT, COLUMN_TYPE_DOUBLE, COLUMN_TYPE_BOOLEAN, COLUMN_TYPE_DATE, COLUMN_TYPE_TIMESTAMP, COLUMN_TYPE_BINARY, COLUMN_TYPE_JSON. See SQL Compatibility → Column types.

Pipeline-generated mode

Pick a Scriptum analytics template; schema materializes lazily on first ingest. K3 also creates the bound pipeline + auto-generated ingest rule.

dodil k3 table create entities --bucket kb-prod \ --description "Auto-extracted entities + PII" \ --source pipeline_generated \ --pipeline-template-id entity_pii_extraction

Browse the catalog: dodil k3 template list (Pipelines CLI) or API Reference → Templates → The catalog.

Note: in pipeline mode, --columns-json / --partition-column / --merge-key are ignored — the template owns the schema. To set the auto-generated rule’s folder prefix, use the API (CreateTablePipeline.folder_prefix).

dodil k3 table list

dodil k3 table list -b BUCKET

Lists all tables in the bucket — name, source kind (MANUAL or PIPELINE_GENERATED), row counts, size.

dodil k3 table list --bucket kb-prod -o json \ | jq '.tables[] | {name, source, rowCount, sizeBytes}'

Pagination (page_size, page_token) exists on the ListTables API but isn’t surfaced as CLI flags.

dodil k3 table get

dodil k3 table get [name] -b BUCKET

Fetches one table’s metadata row.

dodil k3 table get events --bucket kb-prod -o json

dodil k3 table describe

dodil k3 table describe [name] -b BUCKET

The richest read on a single table — schema + Delta location + version + write-log backlog + drain-lag SLO + last-drain row classification. Mirrors DescribeTable.

dodil k3 table describe events --bucket kb-prod -o json \ | jq '{ version, walObjectCount, walTotalBytes, drainLagSecs, lastDrainInsertedRows, lastDrainUpdatedRows, lastDrainDeletedRows }'

Useful for:

  • Confirming a Compact ran (walObjectCount → 0, drainLagSecs → 0)
  • Spot-checking post-drain row counts (lastDrain* — the truthful insert/update/delete breakdown that pre-drain rows_written can’t surface)
  • Reading the authoritative pkColumns for write-strategy routing decisions

dodil k3 table delete

dodil k3 table delete [name] -b BUCKET

Permanently removes the table — Delta directory + sidecar. Does not cascade to pipeline-generated tables’ bound pipeline or auto-generated rule — clean those up separately via the Pipelines API.

dodil k3 table delete events --bucket kb-prod

dodil k3 table templates

dodil k3 table templates [--category CAT] [--search TEXT] [--label KEY=VALUE]

Browse the warehouse-compatible subset of the Scriptum template catalog — the templates you can pass to dodil k3 table create --source pipeline_generated --pipeline-template-id <id>. Server-side filtered to warehouse_compatible: true.

The catalog is org-scoped (not bucket-scoped) — same warehouse-compatible set is returned regardless of which bucket you call from. The -b / --bucket flag is inherited from the dodil k3 table parent group and accepted but ignored by the server on this subcommand; you can omit it.

FlagTypeDescription
--categorystringFilter by category (e.g. analysis, vision)
--searchstringFree-text match against name + description
--labelstring list (repeat)Filter by label key=value. Repeat for multiple — all must match (AND).

Examples:

# All warehouse-compatible templates dodil k3 table templates # Filter by category dodil k3 table templates --category analysis # Free-text search dodil k3 table templates --search ocr # Label filter — only PDF-accepting templates dodil k3 table templates --label modality=pdf # Compose — vision-category templates that accept video dodil k3 table templates --category vision --label modality=video

The catalog with one-line descriptions lives at API Reference → Templates.

dodil k3 template list vs dodil k3 table templates — same --category / --search / --label flag shape on both. The top-level dodil k3 template list returns all templates across pillars; this Tables variant pre-filters to warehouse-compatible only. Both are org-scoped (no -b needed).

Operations not in the CLI today

OperationUse the API
AlterTable (ADD COLUMN)PATCH /:bucket/tables/:name/schema
ListPartitionsGET /:bucket/tables/:name/partitions
Materialize (structured CTAS)POST /:bucket/tables/:source_table/materialize
Execute (raw SQL — DDL, CTAS, multi-shape writes)POST /:bucket/tables/_execute

table query is the CLI’s slice of Execute for read SQL — for everything else (DDL, CTAS, ALTER, DROP), use curl against /_execute.


See also