Skip to main content

在打开 PR 期间比较 dbt 中的模型

项目描述

dbt_table_diff

此存储库旨在比较BigQuery modelsdbt公开 PR 期间发生更改的内容。

PyPI 版本 CodeFactor 等级 GitHub 许可证
GitHub 拉取请求 GitHub 问题 GitHub 贡献者
GitHub 发布日期 GitHub 上次提交 GitHub 提交活动
GitHub 分叉 GitHub 星星 GitHub 观察者 推特关注

用法

该存储库已作为Github Actionand发布PyPi Package,这意味着可以通过多种方式利用它:


快速开始:

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 操作概述
  • 打开 PR展示如何dbt_table_diff作为 Github Action 使用。

Github 操作输入参数:

输入参数 描述
GCP_TOKEN 用于连接到 BQ(运行dbt compiledbt_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.jsonrelevant_models
    • 使用清单属性original_file_path匹配relevant_files
  • 运行所有 SQL 文件dbt_table_diff/sql_checks
    • 对于每一个relevant_models,比较两个 dbt 目标 ( dev_prefixvs prod_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 查看哈希

已上传 source

内置分布

dbt_table_diff-2.2.3-py3-none-any.whl (21.0 kB 查看哈希

已上传 py3