标签: dbt

使用文件夹结构的 DBT 自定义架构

DBT 中有没有一种方法可以通过查看文件夹结构以派生方式为模型创建自定义架构?

\n

例如,假设这是我的结构:

\n
models\n\xe2\x94\x94-- product1\n    \xe2\x94\x94-- team1\n    |   \xe2\x94\x94-- model1.sql\n    \xe2\x94\x94-- team2\n        \xe2\x94\x94-- model2.sql\n
Run Code Online (Sandbox Code Playgroud)\n

在这种情况下, model1.sql 将在 schema 中创建product1_team1,而 model2.sql 将在 schema 中创建product1_team2。我想我可以在文件中“手动”指定这些内容dbt_project.yml,但我想知道是否有一种方法可以自动执行此操作 - 以便每个新模型或文件夹都会在正确的模式中自动创建。

\n

我正在查看自定义模式宏(https://docs.getdbt.com/docs/building-a-dbt-project/building-models/using-custom-schemas),但它似乎是简单的 jinja 或简单的 Python 内置 -插入。不确定我如何能够访问这些宏中的文件夹路径。

\n

另外,有没有办法用Python编写宏?因为知道文件路径和操作系统模块可能相对简单。

\n

dbt

15
推荐指数
1
解决办法
4944
查看次数

dbt 如何在不使用 CTAS 的情况下创建自定义表?

我想创建一个包含特定列和数据类型的空表,我没有任何可以执行 SELECT * FROM 的引用表。以下链接有一张我打算做的图片请查找所附图片

sql dbt

14
推荐指数
1
解决办法
6727
查看次数

配置 SQLFluff 规则

我使用 SQLFluff 来确保公司的语法统一,并在 dbt 中运行模型之前减少错误警告。由于我们的语法与 SQLFluff 的语法不完全匹配,我想进行一些更改。

SQLFluff 提供的规则参考帮助我设置了内联忽略错误,如下面的代码(最后一行代码)所示。

所以我有两个问题,在 SQLFluff 规则参考的帮助下我也无法回答。

  1. 我想将规则L032设置为默认“false”,而无需每次在 SQL 中手动输入。

  2. 如何更改有关规则L016的行的最大长度?我想设置默认值,例如 150。

规则_L016

SELECT
    country.country_name,
    country.population,
    currency.currency_name,
    currency.currency_id,
    currency.strange_long_variable_name_which_is_too_long as not_so_long_variable_name
FROM country
LEFT JOIN currency
    USING (country) -- noqa: L032
Run Code Online (Sandbox Code Playgroud)

我试图通过规则参考来解决这个问题,但无法解决。非常感谢帮助!

sql postgresql dbt sqlfluff

13
推荐指数
1
解决办法
2万
查看次数

dbt ref() 与 source()

I\xe2\x80\x99m 试图使 dbt 中的一个模型依赖于另一个模型(尝试在第一个模型完全完成后运行第二个模型),但我\xe2\x80\x99m 感到困惑,何时使用ref()or source()

\n

它们之间有什么区别?

\n

postgresql dbt

13
推荐指数
1
解决办法
1万
查看次数

为正值编写 dbt 测试

有没有一种简单的方法可以为 dbt 中呈阳性的列编写测试?

accepted_values似乎不适用于连续变量。

我知道您可以编写查询,./tests但对于如此简单的事情来说,这看起来有点过分了。

dbt

12
推荐指数
2
解决办法
7935
查看次数

运行 dbt run 命令时出现错误

与 dbt 和 Snowfalke 的连接成功,但当尝试运行此命令时:

$ dbt run
Run Code Online (Sandbox Code Playgroud)

它给出了这个错误

错误:运行时错误找不到名为“learn_dbt”的配置文件遇到错误:运行时错误无法运行 dbt”

我是否犯了任何命令错误?

dbt

12
推荐指数
3
解决办法
4万
查看次数

只运行一组模型?

我开始将你们的一些转换工作迁移到 DBT。如下图所示,在获得最终表格之前通常需要进行 1 到 2 次转换(在某些情况下最多进行 5 次转换)。

我想要实现的是仅针对链接模型上的集合执行 dbt 运行。例如,sales_predictionforecast。我目前可以dbt run o使用 r just 特定模型来运行所有内容dbt run --select model_name

在此输入图像描述

dbt

12
推荐指数
2
解决办法
3万
查看次数

如何为数据沿袭设置 dbt UI?

我是 dbt 的新手,我打算使用 dbt cli。一个问题是如何设置 dbt ui 并拥有这样的数据沿袭图?我没有找到如何使用 cli https://docs.getdbt.com/tutorial/create-a-project-dbt-cli来完成此操作。

在此输入图像描述

dbt

11
推荐指数
1
解决办法
1万
查看次数

为什么在尝试表实现时,dbt 中会出现“选择活动仓库”错误,而视图实现时却不会出现该错误?

我已经使用 dbt 几个月了,所以对它还很陌生。运行测试模型时,使用视图物化没有任何问题:

{{ config(materialized='view') }}

select 1 as id
Run Code Online (Sandbox Code Playgroud)

导致:

15:30:25 | 1 of 1 START view model dbt.stg_CampaignTableTest.................... [RUN]
15:30:26 | 1 of 1 OK created view model dbt.stg_CampaignTableTest............... [SUCCESS 1 in 1.48s]
Run Code Online (Sandbox Code Playgroud)

但是,当我切换到表实现时,我收到一条错误消息,表明未在 Snowflake 中选择活动仓库:

{{ config(materialized='table') }}

select 1 as id
Run Code Online (Sandbox Code Playgroud)

导致:

15:32:52 | 1 of 1 START table model dbt.stg_CampaignTableTest................... [RUN]
15:32:53 | 1 of 1 ERROR creating table model dbt.stg_CampaignTableTest.......... [ERROR in 1.22s]

Database Error in model stg_CampaignTableTest (models/test/stg_CampaignTableTest.sql)
  000606 (57P03): No active warehouse …
Run Code Online (Sandbox Code Playgroud)

snowflake-cloud-data-platform dbt

10
推荐指数
1
解决办法
4452
查看次数

在 DBT 中使用 Unique_Key 中的多个列进行增量加载

对于增量模型,DBT 文档在这里说:

\n
\n

unique_key 应在模型定义中作为表示简单列的字符串或可以一起使用的单引号列名称列表提供,例如 [\'col1\', \'col2\', \xe2\x80 \xa6])

\n
\n

我已经用这个增量定义在 DBT 中构建了一个增量模型

\n
{{\n  config(\n    materialized=\'incremental\',\n    unique_key = [\'Col1\', \'Col2\', \'Col3\']\n  )\n}}\n
Run Code Online (Sandbox Code Playgroud)\n

它编译成 Snowflake 中的合并语句:

\n
{{\n  config(\n    materialized=\'incremental\',\n    unique_key = [\'Col1\', \'Col2\', \'Col3\']\n  )\n}}\n
Run Code Online (Sandbox Code Playgroud)\n

这合理地引发了一个 SQL 错误,抱怨括号:

\n
\n

SQL编译错误:语法错误第4行位于位置32意外\'[\'。第 4 行语法错误位于位置 45 意外的 \',\'。语法错误第 4 行位于位置 98 处意外的 \'[\'。第 4 行语法错误,位置 111 处出现意外的 \',\'。

\n
\n

我找不到任何其他以这种方式使用多列的好例子。(有涉及连接列的选项,我愿意接受有关最佳方法的建议,但我正在尝试找出如何使用 DBT 推荐的语法)

\n

snowflake-cloud-data-platform dbt

10
推荐指数
1
解决办法
8213
查看次数