Snowflake cloud data platform 雪花-读取逗号分隔的有效负载,双引号之间带逗号?

Snowflake cloud data platform 雪花-读取逗号分隔的有效负载,双引号之间带逗号?,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,如何在雪花中读取逗号分隔的有效负载,在某些列的双引号之间可以有逗号? 例如: (o,“sadasdasd”,123123,“这是一个数据字段示例,带有逗号和反斜杠\应作为一个唯一列读取”,0,…) 到目前为止,我正在使用: with your_table as (select json_text:message::string as payload from table) split_part(payload,',',1) as firstfield, ... from your_tabl

如何在雪花中读取逗号分隔的有效负载,在某些列的双引号之间可以有逗号? 例如:
(o,“sadasdasd”,123123,“这是一个数据字段示例,带有逗号和反斜杠\应作为一个唯一列读取”,0,…)

到目前为止,我正在使用:

with your_table as 
(select json_text:message::string as payload from table)
split_part(payload,',',1) as firstfield, 
...
from 
your_table

这里有一个JavaScript UDF可以做到这一点:

create or replace function SPLIT_QUOTED_STRING(STR string)
returns array
language javascript
as
$$
var arr = STR.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g);
for (var i = 0; i < arr.length; i++) {
    arr[i] = arr[i].replace(/['"]+/g, '')
}
return arr;
$$;

select split_quoted_string('o,"sadasdasd",123123123,"asdasdasd.www.org,123123,link.com",0');

-- To get a member of the array:
select split_quoted_string('o,"sadasdasd",123123123,"asdasdasd.www.org,123123,link.com",0')[1]::string;

谢谢这个@Greg。在我的例子中,我希望将引号之间的所有数据作为一个唯一的数据字段保存。有什么建议吗?我修改了示例以使其更清晰。您希望它作为数组还是表?请记住,在雪花文字中,必须将反斜杠加倍,这样才能显示它如何存在于数据表中。反斜杠不需要出现在最终结果中。当前我要读取所有列。已更新以显示如何从数组输出展平到表。您也可以将UDF转换为UDTF,但展平效果很好。我假设数据已经在雪花中了,那么?如果这是一个文件,则很容易正确地加载到单独的列中。
select "VALUE"::string as MY_VALUE
from table(flatten (split_quoted_string('o,"sadasdasd",123123123,"asdasdasd.www.org,123123,link.com",0')));