SuperAPI AI 工具集

snowflake-snowpark-dbt

编程与开发

查看项目

更新于 10-16 01:16

技能介绍

用途:指导使用 Snowpark Python(Snowflake 服务端 Python API)与 dbt-snowflake 适配器构建生产级数据转换管道。

Snowpark 主要能力:Session 从环境变量读取凭据并显式指定 role、warehouse、database、schema;DataFrame API 支持 filter、select、group_by().agg()、join、sort、with_column、drop、distinct、limit、union_all、flatten、write.save_as_table(),且惰性求值,仅在 collect()/show() 或写入时执行;支持标量 UDF、向量化(pandas)UDF、UDTF、存储过程;可用 session.add_packages() 添加第三方包并固定版本,用 session.add_import() 附加静态文件;也可用 modin.pandas 配合 Snowpark 插件实现 pandas-on-Snowflake。

dbt 主要能力:分层建模(stg_* 做重命名与类型转换,mart 承载业务逻辑);物化方式含 view、table、incremental、ephemeral、dynamic_table;在 _sources.yml 声明源并配置新鲜度阈值;对关键列加 unique/not_null 测试;增量模型需用 {% if is_incremental() %} 保护 {{ this }};Snowflake 专属配置包括 cluster_by、transient、query_tag、copy_grants、snowflake_warehouse、secure。

使用方式:安装 pip install dbt-snowflake,在 profiles.yml 中通过 env_var() 引用凭据;常用命令 dbt run、dbt test、dbt build、dbt compile、dbt source freshness、dbt docs generate && dbt docs serve;可用 --select model+ 或 +model 选择性运行。

适用场景:服务端数据清洗与转换、ML 推理、多步 ETL 编排、近实时动态表、大型事实表增量处理。

限制与注意:不要将大型 DataFrame collect 到客户端,避免逐行 Python 循环,勿硬编码凭据或库表名,小表(约 1TB 以下)不宜设 cluster_by,不要默认全部物化为 table。具体收费、价格与平台支持情况暂未提供。