dbt-snowflake 项目使用教程
1. 项目的目录结构及介绍
dbt-snowflake 项目的目录结构如下:
dbt-snowflake/
├── README.md
├── dbt_project.yml
├── models/
│ ├── example/
│ │ ├── my_first_dbt_model.sql
│ │ ├── my_second_dbt_model.sql
│ │ └── schema.yml
├── tests/
│ ├── example/
│ │ ├── my_first_dbt_test.sql
│ │ └── schema.yml
├── snapshots/
│ ├── example/
│ │ ├── my_snapshot.sql
│ │ └── schema.yml
├── analyses/
│ ├── example/
│ │ ├── my_analysis.sql
│ │ └── schema.yml
├── macros/
│ ├── example/
│ │ ├── my_macro.sql
│ │ └── schema.yml
├── seeds/
│ ├── example/
│ │ ├── my_seed.csv
│ │ └── schema.yml
├── packages.yml
├── profiles.yml
目录结构介绍
README.md
: 项目说明文件,包含项目的基本信息和使用指南。dbt_project.yml
: 项目的主配置文件,定义项目的基本配置和设置。models/
: 存放数据模型的目录,包含 SQL 文件和模型定义文件。tests/
: 存放测试文件的目录,用于验证模型的正确性。snapshots/
: 存放快照文件的目录,用于记录数据状态的变化。analyses/
: 存放分析文件的目录,用于进行数据分析。macros/
: 存放宏文件的目录,用于定义可重用的 SQL 代码片段。seeds/
: 存放种子数据的目录,用于导入初始数据。packages.yml
: 定义项目依赖的包。profiles.yml
: 定义项目连接到 Snowflake 数据库的配置。
2. 项目的启动文件介绍
dbt-snowflake 项目的启动文件是 dbt_project.yml
。这个文件定义了项目的基本配置和设置,包括项目名称、版本、模型路径、测试路径等。
dbt_project.yml 示例
name: 'my_dbt_project'
version: '1.0.0'
config-version: 2
profile: 'my_snowflake_profile'
source-paths: ["models"]
analysis-paths: ["analyses"]
test-paths: ["tests"]
snapshot-paths: ["snapshots"]
macro-paths: ["macros"]
seed-paths: ["seeds"]
target-path: "target"
clean-targets:
- "target"
- "dbt_modules"
- "logs"
models:
my_dbt_project:
example:
materialized: view
配置项介绍
name
: 项目名称。version
: 项目版本。profile
: 连接到 Snowflake 数据库的配置文件名称。source-paths
: 模型文件路径。analysis-paths
: 分析文件路径。test-paths
: 测试文件路径。snapshot-paths
: 快照文件路径。macro-paths
: 宏文件路径。seed-paths
: 种子数据文件路径。target-path
: 生成文件的输出路径。clean-targets
: 清理目标路径。
3. 项目的配置文件介绍
dbt-snowflake 项目的配置文件包括 dbt_project.yml
和 profiles.yml
。
profiles.yml 示例
my_snowflake_profile:
target: dev
outputs:
dev:
type: snowflake
account: "your_account"
user: "your_username"
password: "your_password"
role: "your_role"
database: "your_database"
warehouse: "your_warehouse"
schema: "your_schema"
threads: 4
client_session_keep_alive: False
query_tag: "my_dbt_project"