![]()
你的Snowflake账单又炸了,但你不知道谁干的。不是比喻——字面意义上的"谁"。ACCOUNT_USAGE里躺着过去三年的登录记录、仓库消耗、用户行为,但你需要先找到正确的表,再拼对七层JOIN,最后祈祷自己没把GB和TB搞混。
现在有人把这套流程压缩成了一句话。
「上个月哪个仓库烧掉最多积分?」
GitHub Copilot Chat里敲完这句,15秒后弹出名字和数字。不需要打开Snowflake界面,不需要写SQL,甚至不需要知道ACCOUNT_USAGE长什么样。
把数据仓库变成聊天对象
这套方案的核心是个叫Cortex Agent的东西,Snowflake去年推出的AI层。但单独用它还不够聪明——它需要你告诉它"查哪张表、怎么查"。
开发者Lalith Aswaroopk的解法是给Agent配了个翻译官:MCP服务器(Model Context Protocol,模型上下文协议)。Copilot Chat说的自然语言,先过MCP转成结构化请求,再丢给Cortex Agent。Agent自己看语义注释挑视图,最后才碰ACCOUNT_USAGE。
![]()
整个链路像什么呢?像酒店前台。你问"附近有好吃的吗",前台不用自己跑遍全城,他翻的是背后的分类手册——这个对应日料,那个对应夜宵,然后精准拨号。
这里的手册是7张语义视图(Semantic Views),每张都裹着自然语言注释。比如WAREHOUSE_USAGE_VIEW的注释写的是:"回答关于仓库积分消耗、执行时间和资源效率的问题"。Cortex Agent读到这句话,就知道"烧积分"这类词该往这儿送。
关键设计:注释即接口。 不用调Prompt,不用训练模型,改注释就能让Agent理解新业务。
部署比想象中轻
代码开源在GitHub,5个SQL脚本按顺序跑完就行。01建基础视图,02包语义层,03挂Cortex Agent,04设预算告警(可选),05给权限。本地Python环境装个依赖,配好.env文件,完事。
环境变量里有个细节:SNOWFLAKE_AUTHENTICATOR=externalbrowser。这意味着不用硬编码密码,浏览器弹窗点一下就能认证——对怕泄露密钥的团队友好。
MCP服务器本身是个轻量HTTP服务,只暴露一个工具:ask_admin。Copilot Chat侧看起来就像调用了一个普通函数,但背后已经走完"理解问题→选视图→生成SQL→执行→格式化"全套。
![]()
目前覆盖的场景很实在:仓库消耗排名、Top 5花钱大户、登录失败模式、查询性能瓶颈。全是BI团队每周被问烂的问题,现在业务部门自己打字就能拿答案。
但有个隐形成本
语义视图不是万能的。如果你的问题跨多张表——比如"哪个部门的人在上个月用了最贵的仓库"——得确保JOIN关系提前写在视图定义里。Cortex Agent不会自己发明关联逻辑,它只会挑现成的工具。
另一个坑是ACCOUNT_USAGE的延迟。Snowflake官方文档说数据可能有45分钟到3小时的滞后,实时告警别指望这套。
Lalith在README里埋了个TODO:支持ORGANIZATION_USAGE(组织级用量视图),方便管多个账户的企业。还没做,但架构上预留了口子——加视图、写注释、重启Agent就行。
这套方案最狠的地方不是技术深度,是把"数据民主化"从PPT落到了VS Code侧边栏。以前需要SQL技能+Snowflake权限+业务理解三角兼备的事,现在会打字就行。
当然,SQL不会死。复杂建模、性能调优、数据治理还得人上。但"帮我看看上周谁花了最多钱"这种需求,确实可以交给Agent了。
开源仓库地址:https://github.com/LALITHASWAROOPK/agent_snowflake_admin_assistant
如果你已经用Copilot写代码,多装一个MCP服务器的功夫,相当于给Snowflake配了个24小时在线的初级DBA。这个ROI,你觉得算得过账吗?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.