dbt 种子(seeds)

dbt 中级

Mike Metzger

Data Engineer

什么是 dbt seeds?

  • 要加载到数据仓库的 CSV 文件
  • 通常为很少变化的数据集
    • 国家列表
    • 邮政编码列表
  • 并非用于原始数据

Seeds

1 照片:Maddi Bazzocco(Unsplash)
dbt 中级

为什么?

  • 易于管理
  • 易于在多种场景中使用
  • 可纳入版本控制
dbt 中级

如何定义 seeds?

  • 将 CSV 文件添加到 seeds 目录
  • 确保表头在第一行
  • 使用 dbt seed 命令导入
zipcode,place,state
99553,Akutan,Alaska
99571,Cold Bay,Alaska
99583,False Pass,Alaska

bash> dbt seed
1 邮政编码来源:https://github.com/zauberware/postal-codes-json-xml-csv
dbt 中级

进一步配置

  • 多种选项
    • 使用哪个 schema?
    • 使用哪个数据库?
    • 列名加引号
    • 列数据类型
  • 可作用于整个项目或单个 seed
  • 可添加到 dbt_project.ymlseeds/properties.yml
dbt 中级

定义数据类型

  • 可用数据类型取决于数据仓库
  • 常见类型均可用
    • Integer
    • Varchar
    • 等等
  • 未定义类型时,将基于数据推断
version: 2

seeds:
  - name: zipcodes
    config:
      column_types:
        zipcode: varchar(5)
dbt 中级

测试

  • 支持测试
  • 与 models 和 sources 相同
version: 2

seeds:
  - name: zipcodes
    config:
      column_types:
        zipcode: varchar(5)
    columns:
      - name: zipcode
        tests:
          - unique
dbt 中级

访问 seeds

  • 通过 {{ ref() }} 调用获取
  • 初次导入后行为与 model 相同
select * from
  {{ ref('zipcodes') }}
dbt 中级

让我们练习!

dbt 中级

Preparing Video For Download...