问题标签 [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.
dbt - dbt pre-hooks 不能渲染/查找宏?
dbt_project.yml 模型预挂钩无法呈现宏。以下实现:
以及以下宏:
结果如下:
我知道 dbt 0.17.0 围绕 pre-hooks 存在问题,如此 slack exchange中所述。尽管我运行的是 0.17.2(不是 0.17.0),但我已经尝试按照该对话中的建议在 yml 中同时使用+pre-hook:
和规范,但无济于事。pre-hook:
欢迎任何见解!
编辑:解决方案
说实话,答案是如此愚蠢和明显:错误是由于拥有+pre-hooks:
而不是+pre-hook:
. 然而,建议的答案让我重新审视。我将其标记为正确,因为它通常为钩子提供了很多有用的上下文。干杯!
runtime-error - 安装了 dbt 并且工作正常,但是得到 db cmdlet,函数错误
问题:安装了 dbt 并创建了一个项目,定义了模型并运行了一些测试。现在在执行 dbt 时出现此错误。
dbt:术语“dbt”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。在行:1 字符:1
- dbt run -m eve-source
系统和 IDE:Windows 10 和 VSCode Python 版本:3.7.3
dbt 在 Powershell 提示符下工作正常,但我希望它也能与 VSCode 一起工作。请帮我解决一下这个。谢谢你。
dbt - dbt 无法创建具有相同数据库表示的两个资源
我这里的情况如下:
我的 dbt 项目中有两个模型
- 模型-A
- 模型-B
这些在与相同的模式中以增量形式实现xxx_yyy_dataset.Table_DDD
这工作正常,它正在将记录摄取到目标表中。
现在我介绍了另一种模型-model-C ind不同的封装model-C
这给了我以下错误:
我为自定义宏配置了宏,如下所示:
macros - 在 dbt_project config-version:2 中使用宏
我们的 dbt_project.yml 文件 config-version: 1 有两个跨不同增量模型的变量,我们使用一个名为today()的宏
在测试迁移到 dbt 0.17.2, config-version:2 时,我们面临以下问题
我们去年年底构建的宏。我相信 dbt 改变了宏变量的引用方式,但不知道如何解决这个问题。
macros - 错误地使用 dbt_utils.union_relations 但不知道如何/为什么?
所以我是一个新的 DBT 用户,超级酷的东西,但我遇到了 union_relations 宏的问题。我正在为这个函数提供关系,但编译/运行的查询没有从关系中找到任何列。
这是我正在运行的代码:
这是我收到的错误:
syntax error at or near "from" LINE 1706: from __dbt__CTE__transform_hist_ca_map_stu_obj_a... ^ compiled SQL at target/run/rally_dw/conformed/conformed_student_objective_assessment.sql
基本上第一列是 DBT 生成的列,之后应该有来自关系的列,但由于某种原因,这些列没有被拉入。我想知道这是否是因为我想从中拉出关系目前是短暂的,所以没有实现,所以我想知道这是否会导致问题。这是编译后的 SQL,CTE 返回数据,但由于某种原因,它没有被拉入最后一个 CTE。
任何想法将不胜感激,谢谢!
python - 使用 docker 和 cloud run 部署 dbt 的正确方法
我正在尝试使用 docker 容器在 Google 云运行服务上部署 dbt。跟随david vasquez和dbt
Docker 图像 但是当尝试将构建的图像部署到云运行时。我收到一个错误。
这是我的码头文件
我了解运行状况检查失败是因为它找不到要监听的端口,除非我在我的ENV
任何人都可以帮我解决问题吗?提前谢谢
dbt - dbt:模型“bar”依赖于模型“foo”,该模型未找到或被禁用
我正在使用名为dbt的命令行工具。整个项目有些复杂,所以我将尝试描述基本布局。
这是我的缩写文件树;
以下是 的缩写内容dbt_project.yml
。引用了两个相关 .sql 文件的目录,并且正在提取并行文件夹结构中的依赖关系。
以下是 的缩写内容baz_myinfo.sql
;
以下是 的缩写内容baz_mytable.sql
;
鉴于这一切,当我运行 dbt 命令时,我收到错误Model 'model.my_proj.baz_mytable' depends on model 'myinfo' which was not found or is disabled
“我的模型都没有被禁用”。为什么 dbt 不选择依赖项?
jinja2 - 函数中的 Jinja 变量
我使用以下方法在 jinja 中定义了一个变量:
{% set my_var = 10 %}
和一个宏:
我想在我设置的变量上调用宏以获得字符串:
我试过了
但它不起作用。我不确定是否必须更改呼叫或宏。你知道我怎样才能做到这一点吗?
提前致谢!
data-warehouse - dbt 表覆盖率指标
鉴于我有一个数据仓库,其中包含从各种来源创建的各种表,其中许多表是由 dbt 创建的,我想衡量一个概念,如“dbt 表覆盖率”,我将其定义为:
这对于保持质量/完整性感非常有用,尤其是在过渡项目期间。是否有类似的 dbt 命令:
如果没有,我们如何将其添加到项目中?!
我可以采取哪些替代方法来解决问题
snowflake-cloud-data-platform - 数据湖中带时间戳的 csv 外部表的临时缓慢变化的维度具体化
问题
主要问题
如何从每日提取的文件夹中临时实现缓慢变化的维度类型 2,其中每个 csv 都是来自源系统的表的完整提取?
理由
我们正在设计临时数据仓库作为最终用户的数据集市,可以在没有任何后果的情况下启动和烧毁。这要求我们在一个湖/块/桶中拥有所有数据。
我们每天都在提取完整的提取物,因为:
- 我们不能可靠地仅提取变更集(出于我们无法控制的原因),并且
- 我们想维护一个包含“最原始”数据的数据湖。
挑战问题
有没有一种解决方案可以给我一个特定日期的状态,而不仅仅是“最新”状态?
存在问题
我是否完全倒退了这一点,并且有更简单的方法可以做到这一点?
可能的方法
自定义dbt
物化
包中有一个insert_by_period
dbt 实现dbt.utils
,我认为这可能正是我正在寻找的?但是我很困惑dbt snapshot
,但是:
dbt snapshot
一次增量地为每个文件运行;和,- 直接从外部表构建?
三角洲湖
我对 Databricks 的 Delta Lake 了解不多,但看起来应该可以使用Delta Tables吗?
修复提取作业
如果我们可以让我们的提取物只包含自上次提取物以来发生的变化,我们的问题就解决了吗?
例子
假设以下三个文件位于数据湖的文件夹中。(要点 3 个 csvs 和所需的表格结果为 csv)。我添加了 Extracted 列,以防从文件名中解析时间戳太棘手。
2020-09-14_CRM_extract.csv
2020-09-15_CRM_extract.csv
2020-09-16_CRM_extract.csv
最终结果
以下是截至 9 月 16 日的三个文件的 SCD-II。9/15 的 SCD-II 将是相同的,但OppId=3
只有一个来自valid_from=9/15
和valid_to=null