在打开 PR 期间比较 dbt 中的模型
项目描述
dbt_table_diff
此存储库旨在比较BigQuery models在dbt公开 PR 期间发生更改的内容。
用法
该存储库已作为Github Actionand发布PyPi Package,这意味着可以通过多种方式利用它:
- 直接在 Python 中通过
run_dbt_table_diff. - 通过直接在终端中
python3 -m dbt_table_diff。 - 在 Github 工作流文件中,通过自动在 Open PR 上
Github Actions添加评论。
快速开始:
pip3 install dbt_table_diff
示例代码用法:
from dbt_table_diff import run_dbt_table_diff
run_dbt_table_diff(
project_id="ultimate-bit-359101",
keyfile_path="secrets/bq_keyfile.json",
manifest_file="target/manifest.json",
dev_prefix="dev_",
prod_prefix="prod_",
fallback_prefix="fb_",
custom_checks_path="",
ignored_schemas=[],
irregular_schemas=[],
org_name="org-not-included",
repo_name="dbt_example",
pr_id="2",
auth_token="my_github_pat",
)
示例 CLI 用法:
python3 -m dbt_table_diff -t $GH_TOKEN -o org-not-included -r dbt_example -l 2 \
--manifest_file 'target/manifest.json' --project_id 'ultimate-bit-359101' \
--keyfile_path 'secrets/bq_keyfile.json' --dev_prefix 'dev_' --prod_prefix 'prod_' --fallback_prefix 'fb_'
示例 Github 操作用法:
Github 操作输入参数:
| 输入参数 | 描述 |
|---|---|
| GCP_TOKEN | 用于连接到 BQ(运行dbt compile和dbt_table_diff/sql_checks比较表) |
| GH_TOKEN | 用于连接到 Github(即获取您的 PR 中修改models/*.sql的内容,在您的 PR 上添加评论) |
| PR_NUMBER | 用于从 github 获取打开的 PR(拉取请求 ID [int]) |
| GH_REPO | 用于从 github 获取打开的 PR(存储库名称) |
| GH_ORG | 用于从 github 获取开放 PR(存储库所有者/组织名称) |
| DBT_PROFILE_FILE | 您的存储库中到您的profile.ymlfor dbt 的本地路径(这是manifest.json在安装过程中编译所必需的) |
| dev_prefix | 在本地运行 dbt 时使用的前缀(用于比较的源模式/环境) |
| prod_prefix | 远程运行 dbt 时使用的前缀(用于比较的目标架构/环境) |
| fallback_prefix | 如果您的 dbt 项目中有一个覆盖的宏generate_schema_name,它会为 prod 中的某些模式利用不同的前缀,这很有用。 |
| 不规则模式 | 使用逗号分隔的模式字符串fallback_prefix |
| 项目编号 | 用于连接到 BQ(BigQuery 项目 ID) |
| 忽略模式 | 要忽略的逗号分隔字符串(在 github 操作期间跳过检查) |
| custom_checks_path | 包含要运行的任何自定义 SQL 检查的本地文件夹。 |
逐步分解过程:
- 获取在拉取请求中修改的文件列表
- 通过卷曲
github.api.com/repos/{organization}/{repository}/pulls/{pull_request_id}/files
- 通过卷曲
- 过滤器开启
relevant_files- 哪些是匹配的文件
models/*.sql
- 哪些是匹配的文件
- 构建
manifest.json- 通过运行
dbt deps; dbt compile
- 通过运行
- 解析
manifest.json为relevant_models- 使用清单属性
original_file_path匹配relevant_files
- 使用清单属性
- 运行所有 SQL 文件
dbt_table_diff/sql_checks- 对于每一个
relevant_models,比较两个 dbt 目标 (dev_prefixvsprod_prefix)
- 对于每一个
- 将输出保存到文件
- 采用 Github 评论支持的格式
- 对公开公关发表评论
- 利用
dbt_table_diffPyPi 包
- 利用
文档
python3 -m dbt_table_diff --help
usage: dbt_table_diff [-h] [-o ORG_NAME] [-r REPO_NAME] [-t AUTH_TOKEN] [-l PR_ID] [--manifest_file MANIFEST_FILE] [--project_id PROJECT_ID] [--keyfile_path KEYFILE_PATH] [--ignored_schemas IGNORED_SCHEMAS]
[--irregular_schemas IRREGULAR_SCHEMAS] [--dev_prefix DEV_PREFIX] [--prod_prefix PROD_PREFIX] [--fallback_prefix FALLBACK_PREFIX] [--custom_checks_path CUSTOM_CHECKS_PATH]
optional arguments:
-h, --help show this help message and exit
-o ORG_NAME, --org_name ORG_NAME
Owner of GitHub repository.
-r REPO_NAME, --repo_name REPO_NAME
Name of the GitHub repository.
-t AUTH_TOKEN, --auth_token AUTH_TOKEN
User's GitHub Personal Access Token.
-l PR_ID, --pr_id PR_ID
The issue # of the Pull Request.
--manifest_file MANIFEST_FILE
The path to dbt's manifest file.
--project_id PROJECT_ID
The BigQuery Project ID to leverage.
--keyfile_path KEYFILE_PATH
The path to the keyfile to use during BQ calls.
--ignored_schemas IGNORED_SCHEMAS
Folders in models/ to always ignore during row/col checks.
--irregular_schemas IRREGULAR_SCHEMAS
Folders in models/ which use 'fallback_prefix' in prod.
--dev_prefix DEV_PREFIX
Prefix used by development datasets in dbt.
--prod_prefix PROD_PREFIX
Prefix used by production datasets in dbt.
--fallback_prefix FALLBACK_PREFIX
Uncommon prefix used by only some production datasets in dbt.
--custom_checks_path CUSTOM_CHECKS_PATH
A local folder containing any custom SQL to run.
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
dbt_table_diff-2.2.3.tar.gz
(22.5 kB
查看哈希)
内置分布
dbt_table_diff-2.2.3-py3-none-any.whl
(21.0 kB
查看哈希)
关
dbt_table_diff -2.2.3.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 90673b6e454e0cf1755d1e66bb3c8fc6bd3233ec5e7d99ea0764c80523dbc6b8 |
|
| MD5 | d31e3b6f29c868dcaf413d3218b603f4 |
|
| 布莱克2-256 | d6be17e30b960be498c45639aa8518847191a6dc761d85f37ffac4652b4468d5 |
关
dbt_table_diff -2.2.3-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 1e6da17b03ef3366cf951fec40e86336ef66fe5c97e5b442bcc58d7289000279 |
|
| MD5 | a2537468a487cb8437b75a0dacfc2564 |
|
| 布莱克2-256 | ef1d977b80064849dddb5e9f2fc8ff0142ccabc5b6e3047b6ec7090b45eb86e1 |