用途 该技能用于在编写 Snowflake SQL、构建数据管道、使用 Cortex AI 以及使用 Snowpark Python 时提供 Snowflake 专属的开发指导;也适用于 dbt、性能调优和安全加固等需要 Snowflake 特定建议的场景。
主要能力 SQL 最佳实践:标识符使用 snake_case,避免双引号带来的大小写敏感;用 CTE 替代嵌套子查询;DDL 使用 CREATE OR REPLACE 保证幂等;生产环境显式列出列名,不用 SELECT *。SQL 存储过程(BEGIN...END)中,变量与参数在 SQL 语句内必须加冒号前缀,否则报 invalid identifier。半结构化数据使用 VARIANT/OBJECT/ARRAY,访问嵌套字段需显式转换类型(如 src:customer.name::STRING),加载时可用 STRIP_NULL_VALUE = TRUE 处理 JSON null,用 LATERAL FLATTEN 展平数组;用 MERGE 实现 upsert。
数据管道:提供三种方式的选择依据——Dynamic Tables 用于声明式转换(默认选择),Streams + Tasks 用于命令式 CDC 与过程逻辑,Snowpipe 用于从 S3/GCS/Azure 持续加载文件。Dynamic Tables 需设置 TARGET_LAG 与 WAREHOUSE,TARGET_LAG 建议自上而下逐步放宽,增量表不能依赖全量刷新表,SELECT * 会在模式变化时失效,基表需保持变更跟踪开启,两个 Dynamic Tables 之间不能夹视图。Tasks 创建后处于 SUSPENDED 状态,必须执行 ALTER TASK ... RESUME 才会运行。
Cortex AI:列出 AI_COMPLETE、AI_CLASSIFY、AI_FILTER、AI_EXTRACT、AI_SENTIMENT、AI_PARSE_DOCUMENT、AI_REDACT 等函数用途,并指出 COMPLETE、CLASSIFY_TEXT、SUMMARIZE、SENTIMENT 等旧函数已弃用。TO_FILE 的 stage 路径与文件名是两个独立参数。分类任务应使用 AI_CLASSIFY 而非 AI_COMPLETE。Cortex Agents 使用 $spec$ 分隔符,models 为对象而非数组,tool_resources 是独立顶层对象,工具描述是质量关键因素,不应直接修改生产 Agent,应先克隆。
Snowpark Python:通过环境变量读取账号、用户名和密码,禁止硬编码凭据;DataFrame 惰性执行,大表避免 collect(),批量/ML 场景使用向量化 UDF。
dbt:可用 dynamic_table 物化(流式/近实时数据集市)与 incremental 物化(大事实表),可组合 transient、copy_grants、query_tag 等 Snowflake 专属配置;使用 {{ this }} 时需配合 is_incremental() 守卫。
性能与安全 性能方面:仅多 TB 表在 WHERE/JOIN/GROUP BY 列上设置聚簇键;可按需添加搜索优化;仓库从 X-Small 起步按需扩容,设置 AUTO_SUSPEND=60、AUTO_RESUME=TRUE,并按工作负载分离仓库;使用 AI 前先用 AI_COUNT_TOKENS 估算成本。安全方面:遵循最小权限 RBAC,使用数据库角色做对象级授权,定期审计 ACCOUNTADMIN,使用网络策略做 IP 白名单,对 PII 列使用掩码策略,用行访问策略做多租户隔离。
使用方式与限制 资料以规则和代码示例形式给出,未说明安装命令或调用步骤。技能应在任务明显符合上述范围时使用;输出不能替代针对具体环境的验证、测试或专家评审;缺少必要输入、权限、安全边界或成功标准时应停止并请求澄清。具体收费与价格信息暂未提供。