Snowflake中用JSON_EXTRACT_PATH_TEXT提取数组对象所有name属性
提取Snowflake JSON列数组中所有元素的name值
要提取JSON列mycolumn里elements数组中所有name字段的值,你需要先使用FLATTEN函数展开数组,再提取对应字段,具体方法如下:
方法1:将每个name拆分为单独行
SELECT f.value:name::STRING AS element_name FROM 你的表名, LATERAL FLATTEN(input => mycolumn:elements) f;
执行后会返回三行结果:NAME_1、NAME_2、NAME_3。
方法2:将所有name合并为单个字符串(逗号分隔)
如果需要把所有name合并成一个字符串,可搭配LISTAGG函数:
SELECT LISTAGG(f.value:name::STRING, ', ') AS all_element_names FROM 你的表名, LATERAL FLATTEN(input => mycolumn:elements) f;
执行后会返回一行结果:NAME_1, NAME_2, NAME_3。
为什么之前的方法无效
JSON_EXTRACT_PATH_TEXT函数仅支持单个明确的JSON路径,不支持通配符(如[*]、[])或多索引的路径写法,所以只能提取到数组中单个指定索引的元素值。
内容的提问来源于stack exchange,提问作者fguillen
相关产品推荐
相关产品推荐

