Jinja和det用于if-elseSQL语句



在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来提取该项目和数据集下所有表的名称。

但不幸的是,这种方法不起作用。如果有人能帮我就太好了。

以下是我的操作方法:

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

最新更新