2023年3月14日 07:09

种子是 dbt 项目中的 CSV 文件(通常在seeds目录中),dbt 可以使用命令dbt seed将其加载到您的seeds数据仓库。种子用于保存一些静态数据文件资源。

种子可以在下游模型中引用,方法与引用模型相同 — 通过使用 ref 函数。

由于这些 CSV 文件位于 dbt 存储库中,因此它们受版本控制且代码可审查。种子最适合不经常更改的静态数据。

dbt种子的良好用例:

  • 国家/地区代码到国家/地区名称的映射列表
  • 要从分析中排除的测试电子邮件列表
  • 员工帐户 ID 列表

dbt 种子的不良用例:

  • 加载已导出到 CSV 的原始数据
  • 包含敏感信息的任何类型的生产数据。例如个人身份信息和密码。

示例

  • 1、将文件添加到您的目录中seeds/country_codes.csv
    country_code,country_name
    US,United States
    CA,Canada
    GB,United Kingdom
    ...

  • 2、运行命令dbt seed country_codes,将在目标架构的仓库中创建,名为country_codes.

$ dbt seed
Found 2 models, 3 tests, 0 archives, 0 analyses, 53 macros, 0 operations, 1 seed file

14:46:15 | Concurrency: 1 threads (target='dev')
14:46:15 |
14:46:15 | 1 of 1 START seed file analytics.country_codes........................... [RUN]
14:46:15 | 1 of 1 OK loaded seed file analytics.country_codes....................... [INSERT 3 in 0.01s]
14:46:16 |
14:46:16 | Finished running 1 seed in 0.14s.

Completed successfully

Done. PASS=1 ERROR=0 SKIP=0 TOTAL=1

  • 3、使用ref函数在下游模型中引用种子。

models/orders.sql

select * from {{ ref('country_codes') }}