STRINE_OUTER_ARRAY支持什么JSON格式? [英] What JSON format does STRIP_OUTER_ARRAY support?

查看:17
本文介绍了STRINE_OUTER_ARRAY支持什么JSON格式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个由包含多个记录的单个数组组成的文件。

{
    "Client": [
        {
            "ClientNo": 1,
            "ClientName": "Alpha",
            "ClientBusiness": [
                {
                    "BusinessNo": 1,
                    "IndustryCode": "12345"
                },
                {
                    "BusinessNo": 2,
                    "IndustryCode": "23456"
                }
            ]
        },
        {
            "ClientNo": 2,
            "ClientName": "Bravo",
            "ClientBusiness": [
                {
                    "BusinessNo": 1,
                    "IndustryCode": "34567"
                },
                {
                    "BusinessNo": 2,
                    "IndustryCode": "45678"
                }
            ]
        }
    ]
}

我用以下代码加载它:

create or replace stage stage.test
  url='azure://xxx/xxx'
  credentials=(azure_sas_token='xxx');

create table if not exists stage.client (json_data variant not null);

copy into stage.client_test
from @stage.test/client_test.json
file_format = (type = 'JSON' strip_outer_array = true);

Snowflake将整个文件作为一行导入。

我希望使用Copy Into命令删除外部数组结构,并将记录加载到单独的表行中。

当我加载较大的文件时,我达到了变量的大小限制并收到错误Error parsing JSON: document is too large, max size 16777216 bytes

推荐答案

如果您可以将文件导入到Snowflake中的单行中,则可以在"客户端"字段上使用"横向展平"来为数组中的每个元素生成一行。

这里有一篇关于横向和扁平的博客文章(或者你可以在雪花文档中查找它们): https://support.snowflake.net/s/article/How-To-Lateral-Join-Tutorial

如果文件的格式如指定的那样是具有单个属性的单个对象,该对象包含一个包含500MB元素的数组,那么导入它可能仍然有效--如果这样做有效,那么横向平面化正是您想要的。但这种形式对于数据处理来说并不是特别好。如果需要,您可能希望使用某些文本处理脚本来处理数据。

这篇关于STRINE_OUTER_ARRAY支持什么JSON格式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆