问题标签 [dbt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
36 浏览

jinja2 - 映射容器船在 dbt 中应为 True 时返回 False

在我的dbt宏中,我传递了一个字典参数,它看起来像 random_mapping={"<string1>":"<string2>","<string3>":"<string4>"}

现在,当我检查给定字符串是否是 my 中的键时random_mapping,它返回False,我使用log并检查了我的dbt.log文件,它看起来正确。

下面是我如何检查集装箱船

dbt_utils.string_literal(relation) in random_mapping

0 投票
1 回答
4431 浏览

jinja2 - 在 dbt 的 Jinja 宏中使用字符串作为参数

我想创建一个 dbt 宏来简化以下几行

我想将计算转换为一个函数,以便我可以将行转换为

如何在 dbt 中编写此宏?我在将字符串作为参数传递给函数时遇到问题。

到目前为止,我已经尝试过类似的东西

并通过 调用它extract_clean_tag(my-first-query),但 dbt 返回:

0 投票
1 回答
2803 浏览

sql - 使用 dbt for-loop 在 BigQuery 中创建多个表

我正在尝试使用 dbt 中的 for 循环在 BigQuery 中的单个数据集中创建单个表,遍历帐户列表,但到目前为止没有成功。一点上下文 - 我正在使用 Stitch 从 Facebook Ads 获取数据并将其推送到我们的 BigQuery 仓库。然后,根据下面的模型,为每个帐户创建新的单独表,其中包含聚合/建模数据。

变量的声明如下所示:

表必须基于的查询是:

缺少的(我认为)是查询的包装器+ for 循环本身。谁能帮我填空?

0 投票
0 回答
257 浏览

dbt - 使用自定义架构时,Dbt 文档详细部分为空

我们正在使用自定义架构:

profile.yml(指定 db(带有架构 x)和目标为 x)在每个模型的配置部分定义架构(x 用于某些模型,y 用于某些模型),在宏中使用 dbt 提供的代码来覆盖模型中定义的架构(https://docs.getdbt.com/docs/building-a-dbt-project/building-models/using-custom-schemas/)运行模型时 dbt run --m <model_name> (模型在定义的模式中执行在模型中)问题:在 dbt 文档中,详细信息部分仅显示 x 模式,但不显示模式 y 对象

在此处输入图像描述

在此处输入图像描述

0 投票
0 回答
317 浏览

google-bigquery - BigQuery 的 DBT 无效快照时间错误

我在 BigQuery 中保存了数据,我对表运行 DBT 并在 BigQuery 中填充新表。我dbt run每 5 分钟通过cron. 我也dbt test每小时运行一次,以检查数据一致性。

dbt run总是成功运行,我从来没有遇到过任何问题。但是,有时在运行时dbt test我偶尔会看到(可能每 20 次运行一次),出现以下错误:

Invalid snapshot time 1595674825279 for table xxx:dbt_stg.stg_journey_detail. Cannot read before 1595674825283

失败的测试始终是测试特定表上非空主键的测试。该表是一个中间表,如下所示:

测试看起来像这样:

看起来 BigQuery 从来没有真正运行过查询,所以我怀疑这个错误是由 DBT 产生的。如果我在 BigQuery 日志中查看测试名称,我可以看到实际运行此查询的其他时间,这就是查询:

非常感谢任何帮助!

0 投票
2 回答
5095 浏览

python-3.x - 在 Windows 中安装 Python 3.8 和 dbt 后无法获取 ~/.dbt/ 文件夹或 profile.yml 文件

我正在使用 Windows 64 位操作系统,基于 x64 的处理器

Python 3.8 安装在路径 C:\Users MyName \AppData\Local\Programs\Python\Python38 下,从“https://www.python.org/ftp/python/3.8.5/python-3.8 下载并安装” .5-amd64-webinstall.exe”</p>

使用以下命令在 CLI 中安装 dbt

“点安装 dbt”

毕竟,当我寻找“~/.dbt/”文件夹或“profiles.yml”文件时,我在任何地方都找不到

我无法在 C://Users/MyName/ 下找到“~/.dbt/”目录

在此处输入图像描述

0 投票
1 回答
133 浏览

dbt - 如何为将用于完全刷新的表创建备份?

我有一个增量模型 A,其中每一天都是使用前一天的值计算的。运行全刷新意味着这个表需要从一开始就计算出来,效率很低,而且耗时太长。

我试图创建一个备份表,它将每个月获取表值的副本,并让模型 A 在完全刷新期间引用备份表,以便只需要重新计算备份后的值并且我可以到达在今天的价值要快得多。然而,这给了我一个错误:

这是因为备份是指模型每月获取值,而模型 A 也指在完全刷新的情况下构建的备份。

有没有办法解决这个问题,避免每次我进行完全刷新时从一开始就重建整个模型?

0 投票
1 回答
2065 浏览

jinja2 - dbt jinja 返回查询结果

我正在尝试模拟以下情况:

  • 给定一些查询,返回多列结果集(例如run_querydb_utils.get_query_results_as_dict

  • 在案例/陈述中迭代

例如:

无法使其正常工作,任何指导表示赞赏。

我尝试过的一些想法:

  • get_column_values x2 并将它们压缩到一个新的元组列表中。zip not recognised
  • 获取计数(*),the_model然后尝试迭代范围 - 遇到类型问题
  • 各种for条件{% for k, v in conditions.items() %}
0 投票
1 回答
4262 浏览

jinja2 - 如何做到这一点,以便每次运行 dbt 中的增量负载时,它只会更新上次运行时的新行?

如何做到这一点,以便每次运行 dbt 中的增量负载时,它只会更新上次运行时的新行?

0 投票
2 回答
504 浏览

sql - 引用要替换的增量模型分区 - dbt v0.17.2

我正在使用该策略为 BigQuery 编写增量模型insert_overwrite并尝试partitions_to_replace使用变量设置:

只是为了测试编译,我正在编译一个dbt_project.yml看起来像execution_date: '2020-01-01'. 但是,在物化生成的合并语句中,似乎没有引用日期,因此它失败并出现错误No matching signature for operator IN for argument types DATE and {INT64}。这是生成的 SQL 的相关片段:

有没有办法确保变量周围的引号?在我编写的 SQL 中使用变量时,我知道我可以将var函数用引号括起来,但在这种情况下,SQL 是由物化生成的。