KTXDocs
CLI Reference

ktx sl

List, read, validate, query, or write semantic-layer sources.

Interact with your project's semantic layer. Semantic sources are YAML definitions that describe your tables, columns, measures, joins, and grain — the vocabulary agents use to generate correct SQL.

Usage

ktx sl <subcommand> [options]

Subcommands

SubcommandDescription
listList semantic-layer sources
read <sourceName>Read a semantic-layer source
validate <sourceName>Validate a semantic-layer source against the database schema
write <sourceName>Write a semantic-layer source
queryCompile or execute a semantic-layer query

Options

sl list

FlagDescriptionDefault
--connection-id <id>Filter by KTX connection id
--output <mode>Output mode: pretty (default in TTY), plain (TSV), or jsonpretty
--jsonShortcut for --output=json (overrides --output)false

sl read

FlagDescriptionDefault
--connection-id <id>KTX connection id (required)

sl validate

FlagDescriptionDefault
--connection-id <id>KTX connection id (required)

sl write

FlagDescriptionDefault
--connection-id <id>KTX connection id (required)
--yaml <yaml>Semantic-layer source YAML content (required)

sl query

FlagDescriptionDefault
--connection-id <id>KTX connection id
--measure <measure>Measure to query; repeatable (at least one required)
--dimension <dimension>Dimension to include; repeatable
--filter <filter>Filter expression; repeatable
--segment <segment>Segment to include; repeatable
--order-by <field[:direction]>Order field, optionally suffixed with :asc or :desc; repeatable
--limit <n>Query limit
--include-emptyInclude empty rowsfalse
--format <format>Output format: json or sqljson
--executeExecute the compiled query against the databasefalse
--max-rows <n>Maximum rows to return when executing

Examples

# List all semantic sources
ktx sl list

# List sources for a specific connection
ktx sl list --connection-id my-warehouse

# List sources as JSON
ktx sl list --json

# Read a source definition
ktx sl read orders --connection-id my-warehouse

# Validate a source against the live schema
ktx sl validate orders --connection-id my-warehouse

# Write a new source from YAML
ktx sl write customers --connection-id my-warehouse --yaml "$(cat sources/customers.yaml)"

# Compile a query and view the generated SQL
ktx sl query \
  --connection-id my-warehouse \
  --measure orders.total_revenue \
  --dimension orders.created_date \
  --format sql

# Execute a query with filters
ktx sl query \
  --connection-id my-warehouse \
  --measure orders.total_revenue \
  --dimension orders.status \
  --filter "orders.created_date >= '2024-01-01'" \
  --execute \
  --max-rows 100

# Query with ordering and limit
ktx sl query \
  --connection-id my-warehouse \
  --measure orders.total_revenue \
  --dimension customers.country \
  --order-by total_revenue:desc \
  --limit 10 \
  --execute

# Execute and cap the result set
ktx sl query \
  --connection-id my-warehouse \
  --measure orders.count \
  --dimension orders.created_date \
  --execute \
  --max-rows 1000