如何在DBT中从其他数据库及Schema快照数据与结构?
解决DBT跨数据库快照的编译错误
1. 配置跨库源信息
在dbt_project.yml或独立的sources.yml配置文件中,明确指定源所在的目标数据库、Schema和表名,示例配置如下:
sources: - name: myschema database: other_database # 替换为实际的目标数据库名称 schema: myschema tables: - name: customer
注意:需确认你的数据仓库支持跨数据库访问(如Snowflake、BigQuery原生支持,PostgreSQL需借助dblink),且沙箱环境的DBT账号拥有目标数据库的访问权限。
2. 修正快照文件的源引用
在快照文件snapshots\customer.sql中,确保正确引用配置好的跨库源,示例代码:
{% snapshot customer_snapshot %} {{ config( target_schema='snapshots', unique_key='customer_id', strategy='check', check_cols=['email', 'phone'], ) }} select * from {{ source('myschema', 'customer') }} {% endsnapshot %}
此时source('myschema', 'customer')会解析为你配置的other_database.myschema.customer。
3. 验证跨库访问权限
先手动执行查询验证DBT账号能否访问目标表:
select * from other_database.myschema.customer limit 10;
若查询失败,需先联系运维开通对应数据库和表的访问权限。
4. 重新编译运行快照
执行以下命令重新编译并运行指定快照:
dbt snapshot --select customer_snapshot
内容的提问来源于stack exchange,提问作者iuri
相关产品推荐
相关产品推荐

