AshClickhouse.DataLayer.QueryBuilder (AshClickhouse v0.1.0)

Copy Markdown View Source

Builds ClickHouse SQL from an AshClickhouse.Query struct.

ClickHouse is a full SQL dialect, so most Ash query features map directly: WHERE, ORDER BY, LIMIT, OFFSET, SELECT, DISTINCT, GROUP BY, and aggregate functions are all natively supported.

Summary

Functions

Builds the final SELECT query and parameter list.

Builds a WHERE clause from a list of Ash filter expressions.

Quotes a ClickHouse identifier.

Returns the set of column names referenced by a list of filters.

Quotes a table name, optionally qualifying it with a database.

Functions

build_optimized_query(query)

@spec build_optimized_query(AshClickhouse.Query.t()) :: {String.t(), list()}

Builds the final SELECT query and parameter list.

build_where_clause(filters)

@spec build_where_clause(list()) :: {String.t(), list()}

Builds a WHERE clause from a list of Ash filter expressions.

Returns {clause, params} where clause is either "" or " WHERE <expr>".

cql_identifier(name)

@spec cql_identifier(String.t() | atom()) :: String.t()

Quotes a ClickHouse identifier.

get_filter_columns(filters)

@spec get_filter_columns(list()) :: [atom()]

Returns the set of column names referenced by a list of filters.

qualified_table(table, database)

@spec qualified_table(String.t() | nil, String.t() | nil) :: String.t()

Quotes a table name, optionally qualifying it with a database.