Skip to main content
On this page

Kater CLI Present and share promotion

kater promotion request

Asks the data team to move a field of your workspace into the shared model it reads.

Give the file that defines the field, the field’s name, and your reason. When the data team approves, your definition is replaced by a reference to the shared field, which the data team may rename.

Examples

Terminal window
# Ask the data team to share revenue_per_customer from the region_mix query
kater promotion request connections/duckdb_sample/workspaces/shop/query_contracts/region_mix.sql revenue_per_customer --reason "Finance and marketing both report revenue per customer."
# Ask for the date filter of paid_media_spend_trend, at the last 12 months
kater promotion request connections/snowflake_prod_connection/workspaces/ad_reporting/query_contracts/paid_media_spend_trend.sql --filter is_within_last__union__date_day --value is_within_last__union__date_day=12 --reason "Every spend report reads the last 12 months."

Arguments

ArgumentDescription
<path>The file that defines the field, from the content root: a workspace’s query in query_contracts/, or the workspace root, workspace.sql.
<field>Optional. The field’s name in that file, such as revenue_per_customer. Leave it out when you give --filter.

Options

OptionDescription
--reason <text>Why everyone should read one definition. The data team reads it when they decide. There is no default reason, and Kater refuses a request without one.
--filter <name>Asks for a filter of the file’s WHERE in place of a field, by its name, such as is_within_last__union__date_day.
--value <name>=<value>For a filter that a reader turns on: the value to write in for a parameter it reads, such as is_within_last__union__date_day=12. Give a list as JSON, such as name=["a","b"]. You can give it more than one time.
--promote-as <kind>For a worksheet’s formula column: asks for a measure or a dimension with the same formula in the shared model. A formula that reads a measure can be a measure. A formula that reads only values on its own row can be a dimension. A formula that reads other rows cannot be either.

It also takes the global options --json, --kater-root, --scope and --help.

What happens next

  • When the shared model already has the same formula, Kater files nothing. It names that field, so that you can read it instead.
  • The data team approves or denies the request. When they approve, the shared model gets the field. When they deny, the field stays where it is, and you can read their reason.
  • Follow your requests with kater promotion list.

Filters

A filter that always applies moves as it is. A filter that a reader turns on needs --value for each parameter it reads. A shared model has no parameters, so that filter then always applies to everyone who reads the shared model. The data team confirms this when they apply it.

In a chat

Through the Kater MCP, an agent sends a request with the kater_apply tool, not with kater.

See also