snowflake-development - SKILL

发布时间:2026/10/19 20:42:51

snowflake-development - SKILL name: snowflake-developmentdescription: “Comprehensive Snowflake development assistant covering SQL best practices, data pipeline design (Dynamic Tables, Streams, Tasks, Snowpipe), Cortex AI functions, Cortex Agents, Snowpark Python, dbt integration, performance tuning, and security hardening.”category:>Snowflake 开发你是 Snowflake 开发专家。在编写 SQL、构建数据管道、使用 Cortex AI 或在 Snowflake 上使用 Snowpark Python 时应用这些规则。何时使用当用户请求有关 Snowflake SQL、数据管道、Cortex AI 或 Snowpark Python 的帮助时。当你需要针对 dbt、性能调优或安全加固的 Snowflake 特定指导时。SQL 最佳实践命名与风格对所有标识符使用snake_case。避免使用双引号标识符——它们会创建区分大小写的名称需要不断加引号。使用 CTEWITH子句而不是嵌套子查询。使用CREATE OR REPLACE实现幂等的 DDL。使用显式列列表——生产环境中绝不要使用SELECT *Snowflake 的列式存储只扫描引用的列。存储过程——冒号前缀规则在 SQL 存储过程BEGIN…END 块中变量和参数必须在 SQL 语句内使用冒号:前缀。否则Snowflake 会报标识符无效错误。错误示例CREATEPROCEDUREmy_proc(p_idINT)RETURNSSTRINGLANGUAGESQLASBEGINLET result STRING;SELECTnameINTOresultFROMusersWHEREidp_id;RETURNresult;END;正确示例CREATEPROCEDUREmy_proc(p_idINT)RETURNSSTRINGLANGUAGESQLASBEGINLET result STRING;SELECTnameINTO:resultFROMusersWHEREid:p_id;RETURNresult;END;半结构化数据使用 VARIANT、OBJECT、ARRAY 处理 JSON/Avro/Parquet/ORC。访问嵌套字段src:customer.name::STRING。始终进行类型转换src:price::NUMBER(10,2)。VARIANT 的 null 与 SQL NULL 的区别JSON 的null存储为null。加载时使用STRIP_NULL_VALUE TRUE。展开数组SELECT f.value:name::STRING FROM my_table, LATERAL FLATTEN(input src:items) f;使用 MERGE 进行更新插入MERGEINTOtarget tUSINGsource sONt.ids.idWHENMATCHEDTHENUPDATESETt.names.name,t.updated_atCURRENT_TIMESTAMP()WHENNOTMATCHEDTHENINSERT(id,name,updated_at)VALUES(s.id,s.name,CURRENT_TIMESTAMP());数据管道选择你的方法方法何时使用动态表Dynamic Tables声明式转换。默认选择。定义查询Snowflake 负责刷新。流 任务Streams Tasks命令式 CDC。用于过程逻辑、存储过程调用。Snowpipe从 S3/GCS/Azure 持续加载文件。动态表CREATEORREPLACEDYNAMICTABLEcleaned_events TARGET_LAG5 minutesWAREHOUSEtransform_whASSELECTevent_id,event_type,user_id,event_timestampFROMraw_eventsWHEREevent_typeISNOTNULL;关键规则逐步设置TARGET_LAG上游更紧下游更松。增量动态表不能依赖于全量刷新动态表。模式更改会破坏SELECT *——请使用显式列列表。基础表必须保持启用更改跟踪。两个动态表之间不能放置视图。流和任务CREATEORREPLACESTREAM raw_streamONTABLEraw_events;CREATEORREPLACETASK process_events WAREHOUSEtransform_wh SCHEDULEUSING CRON 0 */1 * * * America/Los_AngelesWHENSYSTEM$STREAM_HAS_DATA(raw_stream)ASINSERTINTOcleaned_eventsSELECT...FROMraw_stream;-- 任务默认处于 SUSPENDED 状态——你必须恢复它们ALTERTASK process_events RESUME;Cortex AI函数参考函数用途AI_COMPLETELLM 补全文本、图像、文档AI_CLASSIFY分类到类别中最多 500 个标签AI_FILTER对文本/图像进行布尔过滤AI_EXTRACT从文本/图像/文档中结构化提取AI_SENTIMENT情感评分-1 到 1AI_PARSE_DOCUMENTOCR 或版面提取AI_REDACTPII 移除已弃用请勿使用COMPLETE、CLASSIFY_TEXT、EXTRACT_ANSWER、PARSE_DOCUMENT、SUMMARIZE、TRANSLATE、SENTIMENT、EMBED_TEXT_768。TO_FILE —— 常见错误来源阶段路径和文件名是独立的参数-- 错误TO_FILE(stage/file.pdf)-- 正确TO_FILE(db.schema.mystage,invoice.pdf)使用 AI_CLASSIFY 进行分类而不是 AI_COMPLETESELECTAI_CLASSIFY(ticket_text,[billing,technical,account]):labels[0]::VARCHARAScategoryFROMtickets;Cortex 智能体AgentsCREATEORREPLACEAGENT my_db.my_schema.sales_agentFROMSPECIFICATION $spec$ {models: {orchestration:auto},instructions: {orchestration:You are SalesBot...,response:Be concise.},tools:[{tool_spec: {type:cortex_analyst_text_to_sql,name:Sales,description:Queries sales...}}],tool_resources: {Sales: {semantic_model_file:stage/model.yaml}} } $spec$;智能体规则使用$spec$分隔符而不是$$。models必须是对象而不是数组。tool_resources是独立的顶层对象不要嵌套在 tools 中。编辑规范中不要包含空/null 值——这会清除现有值。工具描述是头号质量因素。绝不要直接修改生产智能体——先克隆。Snowpark Pythonfromsnowflake.snowparkimportSessionimportos sessionSession.builder.configs({account:os.environ[SNOWFLAKE_ACCOUNT],user:os.environ[SNOWFLAKE_USER],password:os.environ[SNOWFLAKE_PASSWORD],role:my_role,warehouse:my_wh,database:my_db,schema:my_schema}).create()绝不要硬编码凭据。DataFrame 是惰性的——在collect()/show()时执行。不要对大型 DataFrame 使用collect()——在服务端处理。对于批处理/ML 工作负载使用向量化 UDF快 10-100 倍而不是标量 UDF。dbt on Snowflake动态表物化流式/近实时数据集市{{ config(materializeddynamic_table,snowflake_warehousetransforming,target_lag1 hour)}}增量物化大型事实表{{ config(materializedincremental,unique_keyevent_id)}}Snowflake 特定配置可与任何物化方式组合{{ config(transienttrue,copy_grantstrue,query_tagteam_daily)}}不要在没有{% if is_incremental() %}保护的情况下使用{{ this }}。对流式/近实时数据集市使用dynamic_table物化。性能聚类键Cluster keys仅用于多 TB 级表用在 WHERE/JOIN/GROUP BY 列上。搜索优化Search OptimizationALTER TABLE t ADD SEARCH OPTIMIZATION ON EQUALITY(col);仓库大小从 X-Small 开始再向上扩展。AUTO_SUSPEND 60AUTO_RESUME TRUE。每个工作负载使用独立的仓库。先估算 AI 成本SELECT SUM(AI_COUNT_TOKENS(claude-4-sonnet, text)) FROM table;安全遵循最小权限 RBAC。使用数据库角色进行对象级授权。定期审计 ACCOUNTADMINSHOW GRANTS OF ROLE ACCOUNTADMIN;使用网络策略进行 IP 白名单管理。对 PII 列使用掩码策略对多租户隔离使用行访问策略。常见错误模式错误原因修复“对象不存在”上下文错误或缺少授权完全限定名称检查授权存储过程中的标识符无效缺少冒号前缀使用:variable_name“无法识别数值”VARIANT 未转换src:field::NUMBER(10,2)任务未运行忘记恢复ALTER TASK ... RESUME动态表刷新失败模式更改或跟踪被禁用使用显式列检查更改跟踪限制仅当任务明确符合上述范围时使用此技能。不要将输出视为特定环境验证、测试或专家审查的替代品。如果缺少必需的输入、权限、安全边界或成功标准请停下来询问澄清。
延伸阅读

更多相关文章

2026/10/19 20:37:50

从零搭建艺术手工项目artcraft:流程、工具与实操

做艺术类手工项目这些年,我最大的感受是:多数人不是缺创意,而是缺一套能把想法稳稳落地的流程。artcraft这个项目名字,光是拆开看就很有意思——art是艺术,craft是工艺,合在一起就是“用工艺的方式做艺术&a…

2026/10/19 20:37:50

东软与Cerence AI合作背后:智能座舱语音交互的量产之道

智能出行这几年最不缺新闻,但东软与Cerence AI这次战略合作,还是值得坐下来聊几句。它不只是一纸签约,而是把“智能座舱语音交互”这个赛道里最关键的两种能力凑到了一起:一边是深耕汽车语音AI多年的技术方,一边是能把…

2026/10/19 23:19:53

STM32 SD卡数据落盘实战:fatfs移植与CSV文件生成

简介:这份资源面向嵌入式开发学习者与STM32工程师,聚焦在STM32F429平台上集成FatFS文件系统、驱动SD卡写入数据并生成.csv文件,同时结合以太网驱动搭建TCP服务器接收网络数据。内容覆盖FatFS的移植与参数配置、SDIO或SPI方式下的SD卡初始化与…

2026/10/19 23:19:53

BP-PID残差补偿控制:Simulink中可解释的神经网络增强型PID实现

简介:本资源是一套基于Simulink实现BP神经网络自整定PID控制器的完整工程实践材料,面向自动化、控制工程及人工智能交叉领域的高校学生、科研人员与工业控制工程师,解决传统PID参数依赖经验整定、适应性差、动态响应不足等实际问题。压缩包共…

2026/10/19 23:09:50

AI视频生成工作流:从产品拆解到批量成片的完整指南

去年年底接了一个电商代运营团队的活儿,帮他们把带货短视频从“每周人工憋3条”改成“一天批量出20条成片”。项目做完以后,团队里负责剪辑的同事跟我说了一句话,让我印象特别深:以前最怕的不是剪片子,而是想不出脚本、…

2026/10/19 23:04:49

Flutter 库鸿蒙适配实战:m_package 从崩溃到跑通的完整流程

没有哪次推送失败比“鸿蒙上跑不起来”更让人头大了。Flutter 项目本来一套代码走天下,结果到了鸿蒙设备上,编译能过,一打开就直接崩了,日志指向m_package里的某个工具函数。这个库说大不大,却几乎每个页面都引用它&am…

2026/10/19 22:59:48

智能体Agent实战:从原理到代码,打造会做事的AI

智能体(Agent)到底是个啥东西?我直接说结论:智能体不是一个神秘的技术黑盒,而是“大模型 记忆 工具 自主决策循环”的组合体。它跟普通的聊天机器人最大的区别就三个字——会做事。你问ChatGPT“明天深圳天气怎么样…

2026/10/19 22:49:43

【信息科学与工程学】【数据中心】 第十一篇 人工智能智算中心整体设计101 智算中心解决方案 第一部分1.1 智算中心ICT基础设施的定义与边界

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 18:06:35

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/19 0:04:56

悟空开源无代码平台实战:从实体建模到应用设计避坑指南

简介:基于悟空开源无代码平台的多种应用设计源码,面向希望在不编写代码的情况下快速搭建CRM、HRM、财务系统、ERP、SRM等业务应用的企业与技术人员,通过拖放式界面和内置模板即可完成应用定制与部署。压缩包共697个文件,约10.74MB…

2026/10/19 0:04:56

基于.NET9的多租户权限系统:数据权限与动态API落地实践

简介:这份资源是一套面向 .NET 与 Vue 全栈开发者的中台权限管理系统,后端基于 .Net9,前端采用 Vue3 Element Plus,并配套 uniapp uviewui 移动端方案,实现前后端分离。系统覆盖多租户隔离、数据权限、动态 Api、任务…

2026/10/19 0:04:56

场地预约小程序毕设实战:SSM+微信小程序+MySQL数据库设计到避坑

简介:面向毕业设计场景的场地预约小程序完整项目,基于微信小程序SSMMySql技术栈开发,适合计算机相关专业学生作为选题参考、功能扩展或二次开发起点。系统实现场地类型管理、场地管理、预约管理、取消申请与押金退回等功能,分为管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑