Jinja 和 det for if else SQL 语句
Jinja and det for if else SQL statement
在 dbt 中创建模型期间,我试图构建一个具有以下逻辑的 if else 语句:如果在"project_name.dataset" 然后使用这个 SELECT 1 否则使用 SELECT 2
据我了解应该是这样的:
{% if "table_name" in run_query("
SELECT
table_name
FROM project-name.dataset.INFORMATION_SCHEMA.TABLES
").columns[0].values() %}
SELECT
1
{%.else %}
SELECT
2
{%.endif %}
顺便说一下,这一切都发生在 BigQuery 中,这就是为什么我们使用 project-name.dataset.INFORMATION_SCHEMA.TABLES 来提取该项目和数据集下所有 table 的名称。
但不幸的是,这种方法行不通。如果有人能帮助我,那就太好了。
我是这样做的:
{% set tables_list = [] %}
{%- for row in run_query(
"
SELECT
*
FROM project-name.dataset_name.INFORMATION_SCHEMA.TABLES
"
) -%}
{{ tables_list.append(row.values()[2]) if tables_list.append(row.values()[2]) is not none }}
{%- endfor -%}
{% if "table_name" in tables_list %}
SELECT logic 1
{% else %}
SELECT logic 2
{% endif %}
在 dbt 中创建模型期间,我试图构建一个具有以下逻辑的 if else 语句:如果在"project_name.dataset" 然后使用这个 SELECT 1 否则使用 SELECT 2
据我了解应该是这样的:
{% if "table_name" in run_query("
SELECT
table_name
FROM project-name.dataset.INFORMATION_SCHEMA.TABLES
").columns[0].values() %}
SELECT
1
{%.else %}
SELECT
2
{%.endif %}
顺便说一下,这一切都发生在 BigQuery 中,这就是为什么我们使用 project-name.dataset.INFORMATION_SCHEMA.TABLES 来提取该项目和数据集下所有 table 的名称。
但不幸的是,这种方法行不通。如果有人能帮助我,那就太好了。
我是这样做的:
{% set tables_list = [] %}
{%- for row in run_query(
"
SELECT
*
FROM project-name.dataset_name.INFORMATION_SCHEMA.TABLES
"
) -%}
{{ tables_list.append(row.values()[2]) if tables_list.append(row.values()[2]) is not none }}
{%- endfor -%}
{% if "table_name" in tables_list %}
SELECT logic 1
{% else %}
SELECT logic 2
{% endif %}