You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Snowflake中集成使用lodash库?

关于Snowflake中使用lodash库的说明

结论先行:可以使用,但仅支持在Snowflake的JavaScript/TypeScript相关运行环境中引入,原生SQL、Python UDF/存储过程、Java/Scala UDF环境均不支持直接使用lodash

目前Snowflake没有官方内置的lodash集成,所有使用都需要自行引入依赖,以下是不同场景下的实操步骤:

场景1:JavaScript/TypeScript 编写的UDF、存储过程中使用

这是最常见的使用场景,Snowflake的JS运行环境不支持在线拉取npm依赖,需要通过两种方式引入lodash:

  • 内联引入:将lodash的UMD格式压缩版源码(一般是lodash.min.js的稳定版本,推荐4.17.21)直接粘贴到UDF/存储过程的代码块开头,后续代码可以直接通过全局_对象调用lodash方法
    示例代码:
CREATE OR REPLACE PROCEDURE array_chunk_test(input ARRAY)
RETURNS ARRAY
LANGUAGE JAVASCRIPT
AS
$$
// 此处粘贴完整的lodash.min.js源码,省略源码内容避免过长
// var _ = (function() { /* 完整lodash实现 */ })()

// 直接调用lodash方法
return _.chunk(INPUT, 2);
$$;
  • Stage引用引入:将本地的lodash.min.js文件上传到Snowflake内部Stage,创建UDF/存储过程时通过IMPORTS参数声明依赖,Snowflake运行时会自动加载文件,不需要把全量源码塞进过程定义
    示例代码:
-- 提前通过PUT命令将本地lodash.min.js上传到@UTIL_STAGE/js_lib/路径
CREATE OR REPLACE PROCEDURE array_shuffle_test(input ARRAY)
RETURNS ARRAY
LANGUAGE JAVASCRIPT
IMPORTS = ('@UTIL_STAGE/js_lib/lodash.min.js')
AS
$$
// 依赖加载完成后全局可直接访问_对象
return _.shuffle(INPUT);
$$;

场景2:Snowpark Node.js、Streamlit前端自定义组件中使用

这类场景的开发环境在本地,直接在项目目录执行npm install lodash安装依赖,代码中正常通过import _ from 'lodash'引入使用即可,部署到Snowflake时构建工具会自动把lodash打包进部署包,不需要额外配置。

注意事项

  • 不要使用ES Module格式的lodash构建包,Snowflake的JS运行环境对ES Module兼容性差,会出现依赖加载失败的问题,必须用UMD格式的构建产物
  • 普通SQL查询、Python/Java/Scala编写的UDF/存储过程无法使用JS版本的lodash,对应数据处理逻辑可以用对应语言的原生工具库实现等价能力
  • 不建议引入全量lodash,如果只用到少数几个方法,可以单独引入对应方法的轻量实现,减少代码体积、提升存储过程/UDF的加载速度

内容的提问来源于stack exchange,提问作者Liya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 14:54:37