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 %}