Snowflake cloud data platform 从配置单元映射迁移到雪花变体

Snowflake cloud data platform 从配置单元映射迁移到雪花变体,snowflake-cloud-data-platform,variant,Snowflake Cloud Data Platform,Variant,我们正在将代码从配置单元迁移到雪花,所以配置单元映射被迁移到雪花变体。然而,当我们将数据加载到snowflake表中时,我们看到数据中添加了键和值字符串 蜂巢地图数据- {“SD10”:“,”SD9”:“} SnowSQL变量数据- [{“键”:“SD10”,“值”:“},{“键”:“SD9”,“值”:“}] 我使用stage和ORC文件将数据从Hadoop加载到Snowflake 是否有一种方法可以将地图数据按原样存储到雪花变体中。基本上我不需要额外的键和值字符串您可以使用PARSE_JSON

我们正在将代码从配置单元迁移到雪花,所以配置单元映射被迁移到雪花变体。然而,当我们将数据加载到snowflake表中时,我们看到数据中添加了键和值字符串

蜂巢地图数据- {“SD10”:“,”SD9”:“}

SnowSQL变量数据- [{“键”:“SD10”,“值”:“},{“键”:“SD9”,“值”:“}]

我使用stage和ORC文件将数据从Hadoop加载到Snowflake


是否有一种方法可以将地图数据按原样存储到雪花变体中。基本上我不需要额外的键和值字符串

您可以使用PARSE_JSON函数来实现这一点:

-- Returns { "SD10": "", "SD9": "" }
select parse_json('{"SD10":"","SD9":""}') as JSON;
您可以将其添加到“复制到”语句中。您可以在拼花文件的雪花示例中看到不同的选项,这与在雪花中加载ORC文件非常相似:


您还可以在此处找到有关加载转换的更多信息:

您可以使用UDF执行此操作

create or replace function list_to_dict(v variant)
    returns variant
    language javascript
    as'
        function listToDict(input){
            var returnDictionary = {}
            var inputLength = input.length;
            for (var i = 0; i < inputLength; i++) {
                returnDictionary[input[i]["key"]] = input[i]["value"]
            }
            return returnDictionary
        }
        return listToDict(V);
    ';

select list_to_dict(column)['SD10'] from table;
创建或替换功能列表(v变体)
返回变量
语言javascript
正如
功能列表(输入){
var returnDictionary={}
var inputLength=input.length;
对于(变量i=0;i
我尝试了您建议的选项;然而,获取错误-100069(22P02):解析JSON时出错:UTF-8序列中缺少第一个字节,pos 87我的复制代码是-copy to abc1 from(选择$1:_col0::varchar,$1:_col1::varchar,$1:_col2::varchar,$1:_col3::varchar,解析_JSON($1:_col4)::varchar,$1:$1:$col6::varchar,$1:$col7::varchar,$1:$col8::varchar,$1:$col9::varchar,$1:$col10::varchar,$1:$col11::varchar,$1:$col12::varchar from@abc/)FILE_FORMAT=(TYPE=ORC)truncateColmns=TRUE;请帮助。您可以添加\u ERROR=继续查看是否只是一行或多行失败,或者转换是否一直失败。运行之后,您可以使用VALIDATE命令返回所有错误,而不仅仅是第一个错误。谢谢你的建议。我的阶段数据本身有键值头,甚至在添加了ON_ERROR=CONTINUE之后,它也会引发异常。知道为什么蜂巢地图数据在雪花阶段会这样转换吗?配置单元映射数据-{“SD10”:“,”SD9”:“}SnowSQL变量数据-[{“键”:“SD10”,“值”:“},{“键”:“SD9”,“值”:“}]不,抱歉,不查看数据就不确定,等等。看起来像是雪花支持的数据。哦,好的。。感谢您的帮助。试着解决问题。