Files
triggerdotdev--trigger.dev/internal-packages/clickhouse
Matt Aitken 49df40cb11 TRQL and the Query page (#2843)
TRQL (pronounced Treacle like the delicious British dark sweet syrup) is
the TRiggerQueryLanguage. It allows users to safely write queries on
their data. The queries are safely turned into ClickHouse queries which
are tenant-safe and not SQL injectable.


https://github.com/user-attachments/assets/bbfca473-b3fc-4150-8fe6-79e8840a2d29

This started out as a translation of HogQL by PostHog from Python to
TypeScript.

Features
- Tenant safe queries.
- Many underlying ClickHouse features including functions and
aggregations.
- Virtual columns, which are exposed to users as real columns but are
actually expressions.
- Transformations of data types and where clauses.
- Simple JSON path querying.
- Limits on execution time.
- Reporting of query statistics.

## Query page

There’s a new Query page (currently behind a feature flag) where you can
write TRQL queries and execute them against your environment, project or
organization.

Features
- Executing TRQL queries
- Syntax highlighting and errors
- Autocomplete
- AI generation/editing of queries
- Help and examples
- Table with auto-inferred data types from the table schema
- Table cell renderers for our special types like Run ids, environments,
machines, tasks, queues, etc.
- Copy/export as CSV/JSON
- Line and bar graphs with grouping and stacking
- History of queries
2026-01-09 11:39:36 +00:00
..
2026-01-09 11:39:36 +00:00
2026-01-09 11:39:36 +00:00
2026-01-09 11:39:36 +00:00

ClickHouse Table Naming Conventions

The following document is heavily inspired by the Unkey ClickHouse naming conventions.

This document outlines the naming conventions for tables and materialized views in our ClickHouse setup. Adhering to these conventions ensures consistency, clarity, and ease of management across our data infrastructure.

General Rules

  1. Use lowercase letters and separate words with underscores.
  2. Avoid ClickHouse reserved words and special characters in names.
  3. Be descriptive but concise.

Table Naming Convention

Format: [prefix]_[domain]_[description]_[version]

Prefixes

  • raw_: Input data tables
  • tmp_{yourname}_: Temporary tables for experiments, add your name, so it's easy to identify ownership.

Versioning

  • Version numbers: _v1, _v2, etc.

Aggregation Suffixes

For aggregated or summary tables, use suffixes like:

  • _per_day
  • _per_month
  • _summary

Materialized View Naming Convention

Format: [description]_[aggregation]_mv_[version]

  • Always suffix with mv_[version]
  • Include a description of the view's purpose
  • Add aggregation level if applicable

Examples

  1. Raw Data Table: raw_sales_transactions_v1

  2. Materialized View: active_users_per_day_mv_v2

  3. Temporary Table: tmp_eric_user_analysis_v1

  4. Aggregated Table: sales_summary_per_hour_mv_v1

Maintain consistent naming across related tables, views, and other objects:

  • raw_user_activity_v1
  • user_activity_per_day_v1
  • user_activity_per_day_mv_v1

By following these conventions, we ensure a clear, consistent, and scalable naming structure for our ClickHouse setup.