From a1f32a601cd3192f9dad9794e31f046d474e3ce2 Mon Sep 17 00:00:00 2001 From: Ville Brofeldt Date: Thu, 9 Mar 2023 14:07:00 +0200 Subject: [PATCH] docs: add lost _filters param docs --- docs/docs/installation/sql-templating.mdx | 39 ++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/docs/docs/installation/sql-templating.mdx b/docs/docs/installation/sql-templating.mdx index 72c2c0a9adb75..6403b64ad88f1 100644 --- a/docs/docs/installation/sql-templating.mdx +++ b/docs/docs/installation/sql-templating.mdx @@ -30,7 +30,9 @@ made available in the Jinja context: For example, to add a time range to a virtual dataset, you can write the following: ```sql -SELECT * from tbl where dttm_col > '{{ from_dttm }}' and dttm_col < '{{ to_dttm }}' +SELECT * +FROM tbl +WHERE dttm_col > '{{ from_dttm }}' and dttm_col < '{{ to_dttm }}' ``` You can also use [Jinja's logic](https://jinja.palletsprojects.com/en/2.11.x/templates/#tests) @@ -64,6 +66,41 @@ JINJA_CONTEXT_ADDONS = { } ``` +Default values for jinja templates can be specified via ``Parameters`` menu in the SQL Lab user interface. +In the UI you can assign a set of parameters as JSON + +```json +{ + "my_table": "foo" +} +``` +The parameters become available in your SQL (example:SELECT * FROM {{ my_table }} ) by using Jinja templating syntax. +SQL Lab template parameters are stored with the dataset as TEMPLATE PARAMETERS. + +There is a special ``_filters`` parameter which can be used to test filters used in the jinja template. + +```json +{ + "_filters": [ + { + "col": "action_type", + "op": "IN", + "val": ["sell", "buy"] + } + ] +} +``` + +```sql +SELECT action, count(*) as times +FROM logs +WHERE action in {{ filter_values('action_type'))|where_in }} +GROUP BY action +``` + +Note ``_filters`` is not stored with the dataset. It's only used within the SQL Lab UI. + + Besides default Jinja templating, SQL lab also supports self-defined template processor by setting the `CUSTOM_TEMPLATE_PROCESSORS` in your superset configuration. The values in this dictionary overwrite the default Jinja template processors of the specified database engine. The example below