我尝试在bigquery中使用dbt中的for循环在单个数据集中创建单个表,遍历帐户列表,但迄今为止没有成功。一点背景知识-我正在使用stitch从facebook广告中获取数据,并将其推送到我们的bigquery仓库。然后,根据下面的模型,为每个帐户创建一个新的单独表,其中包含聚合/建模的数据。
变量的声明如下所示:
-- table that contains list of accounts
{% set account_data = ref('bq_acct_list') %}
{% set accounts = get_column_values(table=account_data, column='bq_name_suffix') %}
表必须基于的查询是:
SELECT
DATE_TRUNC(DATE(date_start), DAY) date,
account_id,
account_name,
ROUND(SUM(spend), 2) ad_spend
FROM `{{ target.project }}.{{account}}.ads_insights`
GROUP BY 1, 2, 3
缺少的(我认为)是查询的 Package 器+for循环本身。有人能帮我填空吗?
1条答案
按热度按时间tquggr8v1#
dbt在一种模式(即
.sql
文件在您的models/
目录)是由数据仓库中的一个对象(表/视图)表示的-目前没有办法解决这个问题。如果您需要为每个帐户维护单独的表,我会考虑:
将逻辑 Package 到宏中:
为每个帐户创建单独的模型,并在每个模型中调用宏:
根据具体的用例,您还可以考虑为所有帐户创建一个主表,将它们合并在一起。这样,您只需创建一个模型。查看关于“将相同结构的源统一在一起”的文章,了解这种方法的一些技巧。