比较DBT jinja宏中for循环中的列表



我将每列的输出存储在一个列表中,用于下面的查询

select table,
columns,
flag
from  {{ model }}

对于需要比较标志的每个表。如何在列表中获得相应表

的标志?{% for n in table %}

{%- if flag[n] == 'False' %}

我试过了,它不工作,返回空值

重要的是要理解jinja是一种模板语言。在dbt中,我们使用jinja自动创建sql,然后在数据仓库中执行sql。因此,来自数据仓库的数据(通常)不会流经jinja代码。

flag是对数据库中的一列的引用,因此要计算flag的内容,您需要编写sql来完成该工作。

唯一的例外是如果您使用run_query或类似的宏在模型编译时将数据从数据库拉到jinja上下文中。但我在你的代码中没有看到任何参考(坦率地说,这是一个复杂的细节,只有在你试图动态编写SQL时才相关)。如果你只是想比较数据库中记录的值作为模型的一部分,只需在sql中进行比较。

最新更新