跳到主要内容
哒哒星球DADA PLANET

Skill · 已公开版本

dbt-sf-to-bq-translator · 迁移 Snowflake 的 dbt 模型

处理 dbt SQL 编译、Jinja 占位、类型和 JSON 差异,转换为 BigQuery SQL。

先看看示例

作者提供的示例,实际效果取决于你的输入和使用工具。

输入

编辑构造材料(未运行):
原片段:SELECT payload:user_id::NUMBER AS user_id FROM {{ source('raw', 'events') }}。已确认 user_id 是整型 ID,目标采用 INT64。

输出

编辑示例 · 未运行

SELECT
  CAST(JSON_EXTRACT_SCALAR(payload, '$.user_id') AS INT64) AS user_id
FROM {{ source('raw', 'events') }}

这里只展示表达式迁移片段,尚未编译或通过 BigQuery 验证。

方法说明

处理 dbt SQL 编译、Jinja 占位、类型和 JSON 差异,转换为 BigQuery SQL。

具体任务

转换一个 dbt 模型的 JSON 字段表达式:处理 dbt SQL 编译、Jinja 占位、类型和 JSON 差异,转换为 BigQuery SQL。

必需材料

Snowflake dbt SQL 与项目中的 ref/source 定义

目标 BigQuery 项目、区域与输出目录

可选材料

数据库元数据导出

迁移项目名和获准 GCS 暂存桶

使用门槛

能够辨认 dbt Jinja 与 SQL 方言,具备隔离输出目录。

这个 Skill 额外提供的方法

用占位符保护 Jinja,经翻译后恢复宏,并检查显式类型、JSON 提取和去重逻辑。

编辑示例(未运行)

转换一个 dbt 模型的 JSON 字段表达式

任务:转换一个 dbt 模型的 JSON 字段表达式

输入:
编辑构造材料(未运行):
原片段:SELECT payload:user_id::NUMBER AS user_id FROM {{ source('raw', 'events') }}。已确认 user_id 是整型 ID,目标采用 INT64。

结果片段:
```sql
SELECT
  CAST(JSON_EXTRACT_SCALAR(payload, '$.user_id') AS INT64) AS user_id
FROM {{ source('raw', 'events') }}
```
这里只展示表达式迁移片段,尚未编译或通过 BigQuery 验证。

这是依据固定入口方法撰写的编辑示例,没有运行上游 Skill 或访问真实账号。用占位符保护 Jinja,经翻译后恢复宏,并检查显式类型、JSON 提取和去重逻辑。

首次任务

请使用已安装的 dbt-sf-to-bq-translator Skill。
任务:转换一个 dbt 模型的 JSON 字段表达式。

我的必需材料:
- Snowflake dbt SQL 与项目中的 ref/source 定义:[粘贴我的实际材料或路径;缺少时写明]
- 目标 BigQuery 项目、区域与输出目录:[粘贴我的实际材料或路径;缺少时写明]

可选补充:
- 数据库元数据导出:[可选,未提供时不要假定存在]
- 迁移项目名和获准 GCS 暂存桶:[可选,未提供时不要假定存在]

请先确认材料是否足够,只处理我提供的范围。只转换给定模型,不新增历史数据 union 或业务宏;云翻译会上传 SQL 和元数据,需批准暂存范围。交付可直接审阅的代码或查询片段,明确尚未执行或验证的部分。不要代入页面例子的虚构数据。
验收:
1. ref/source 和增量分支保留,未新增业务逻辑。
2. ID、布尔值与日期转换依据真实类型核对。
3. 编译与少量数据对账通过后再迁移完整模型。

验收方法

ref/source 和增量分支保留,未新增业务逻辑。

ID、布尔值与日期转换依据真实类型核对。

编译与少量数据对账通过后再迁移完整模型。

依赖与准备

需要完整 Skill 目录,保留 scripts/bulk_translate_via_gcloud.py、scripts/dbt_translator.py、references/dbt_migration_patterns.md 等引用。完整目录含 bulk_translate_via_gcloud.py 与 dbt_translator.py;在线流程需 gcloud、ADC、BigQuery Migration/Storage API、计费和暂存桶权限。

使用边界

只转换给定模型,不新增历史数据 union 或业务宏;云翻译会上传 SQL 和元数据,需批准暂存范围。

需要原 dbt 项目、Google 认证、启用的迁移 API 与计费;转换结果必须验证。

页面中的例子为编辑撰写,未运行上游 Skill;不代表平台兼容认证或生产实测。

排错

Jinja 被改成普通表名:检查占位恢复和命名解析,不直接把编译后路径写死。

自定义宏仍含 Snowflake 语法:按宏审计结果逐项处理并保留警告,不把批量脚本完成当作全部兼容。

固定来源

https://github.com/google/skills/blob/2964a69c4d4a27632a43d60dab5f4f645f2a82df/skills/cloud/dbt-sf-to-bq-translator/SKILL.md

许可

Apache-2.0。许可原文:https://github.com/google/skills/blob/2964a69c4d4a27632a43d60dab5f4f645f2a82df/LICENSE

仓库热度

google/skills 仓库 20,504 Stars(2026-09-30 核验);这是父仓库指标,不是单个 Skill 的评分。