【发布时间】:2021-04-11 02:27:06
【问题描述】:
对 Snowflake 还很陌生,但已通过各种方法成功加载数据。
问题: 我通过 Azure 数据工厂调用 Web API,使用分页规则写入 blob 存储中的单个 JSON 文件。这是通过单个 ADF 数据复制活动使用多个调用完成的,该活动利用 AbsoluteURL 合并到单个文件(我可以编写额外的、复杂的 ADF 逻辑来生成多个文件,但对于本示例,我希望使用单个文件方法)。这在我的 ADF 管道中非常有效,我可以写成数组或对象集。
ADF 部分运行良好,但在通过阶段加载到 Snowflake 中的行表时,我无法解析“合并”的 JSON 文件。
名为“setOfObjects.json”的输出 JSON 文件对于 ADF JSON 接收器设置如下所示:setOfObjects(JSON 行):
{"values":[{"a":"1","b":"1","c":"1"},{"a":"2","b":"2","c":"2"}]}
{"values":[{"a":"3","b":"3","c":"3"},{"a":"4","b":"4","c":"4"}]}
<empty line>
在雪花中,我创建了一个舞台,例如
create or replace stage dbo.stage_json_example url = 'azure://<endpoint>.blob.core.windows.net/test/stackOverflow/'
credentials = (azure_sas_token = '<sas_token>')
file_format = (type = 'json');
然后在 Snowflake 中,我尝试解析 JSON 文件,但它返回 NULL 值:
select $1:values:a::string
from @dbo.stage_json_example/setOfObjects.json;
从上面,我想将单个 JSON 文件转换为 4 行:
| a | b | c |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
| 4 | 4 | 4 |
感谢任何建议。谢谢
【问题讨论】:
-
请包含您用于定义
@dbo.stage_json_example的代码。此外,尝试只解析一种 JSON 格式 - 检查 ADF docs.microsoft.com/en-us/azure/data-factory/format-json 以将输出设置为JSON Lines(默认) -
是的,我已经尝试过 setOfObjects (JSON Lines),它是上面的“对象集”示例,以及 arrayOfObjects,它是上面的“数组集”示例。还尝试了所有不会更改 JSON 文件格式的“复制行为”选项。雪花阶段是标准的,我有两个 strip_outer_array 值的不同阶段选项。创建或替换阶段 dbo.stage_json_example url = '
' credentials = (azure_sas_token = ' ') file_format = (type = 'json',strip_outer_array = ); -
为了重现问题的简单性 - 你能给我一个文件示例和一个设置示例吗?我对问题中有两种选择感到困惑。如果我可以重现一个文件,那么我可以帮助您解决问题。
-
@FelipeHoffa 嗨,我通过查看一堆雪花文章找到了问题所在。感谢您的帮助。
标签: json snowflake-cloud-data-platform azure-data-factory-2