将查询结果存储在变量中(jinja)
Posted
技术标签:
【中文标题】将查询结果存储在变量中(jinja)【英文标题】:Store result of a query in a variable ( jinja) 【发布时间】:2021-03-01 09:27:45 【问题描述】:我试图将查询结果放入变量中,但它不起作用。
我不确定该怎么做,所以它按预期返回 0。有任何想法吗?我正在使用 dbt 和 jinja。
使用以下代码,results_list 变量为 (Decimal('0'),))
宏
% macro source_freshness(model, column_name) %
% set freshness_query %
SELECT COUNT 0 AS count
% endset %
% set results = run_query(freshness_query) %
% if execute %
% set results_list = results.columns[0].values() %
% else %
% set results_list = [] %
% endif %
return(results_list)
% endmacro %
调用模型:
% set freshness_query_test = source_freshness(ref('model'),'date') %
% if count in freshness_query_test == 0 %
do this
% else %
do that
% endif %
谢谢!
【问题讨论】:
这能回答你的问题吗? Hi, how do we define select statement as a variable in dbt? 非常感谢。我一直在以不同的方式尝试这两种选择,但似乎不起作用。调用语句有效,但问题是我正在使用一个带有 CTE 查询的宏。我尝试在调用语句中添加整个查询,但它不起作用。我以为是一样的,但我错了,所以我更新了问题。谢谢。 您的宏% macro source_freshness(model, column_name) % % set freshness_query % SELECT COUNT 0 AS count % endset %
中似乎缺少 % set freshness_query %
哎哟!我想我在将查询更改为发布时错过了它。我已经找到了一种方法来做到这一点。看答案。谢谢:)
【参考方案1】:
感谢您对此的帮助。我一直无法找到直接的答案,但我所做的是在单独的模型中添加宏,然后使用共享答案中的调用语句逻辑Hi, how do we define select statement as a variable in dbt?
【讨论】:
以上是关于将查询结果存储在变量中(jinja)的主要内容,如果未能解决你的问题,请参考以下文章
Python-Sqlalchemy-Postgres:如何将子查询结果存储在变量中并将其用于主查询