Arrays 变量中数组中的元素中的数组
如何从存储在Snowflake变量列中的数组中获取数据。我不在乎它是新表、视图还是查询。还有第二列varchar(256)类型,它包含唯一的ID。 如果你能帮我阅读“确认”数据和“编辑”数据,我可能会从那里得到。非常感谢 输出示例如下Arrays 变量中数组中的元素中的数组,arrays,json,parsing,element,snowflake-cloud-data-platform,Arrays,Json,Parsing,Element,Snowflake Cloud Data Platform,如何从存储在Snowflake变量列中的数组中获取数据。我不在乎它是新表、视图还是查询。还有第二列varchar(256)类型,它包含唯一的ID。 如果你能帮我阅读“确认”数据和“编辑”数据,我可能会从那里得到。非常感谢 输出示例如下 UniqueID ConfirmationID EditorID u3kd9 xxxx-436a-a2d7 nupd u3kd9 xxxx-436a-a2d7 9l34c R3nDo xxxx-43
UniqueID ConfirmationID EditorID
u3kd9 xxxx-436a-a2d7 nupd
u3kd9 xxxx-436a-a2d7 9l34c
R3nDo xxxx-436a-a3e4 5rnj
yP48a xxxx-436a-a477 jTpz8
yP48a xxxx-436a-a477 nupd
[
{
"confirmed": {
"Confirmation": "Entry ID=xxxx-436a-a2d7-3525158332f0: Confirmed order submitted.",
"ConfirmationID": "xxxx-436a-a2d7-3525158332f0",
"ConfirmedOrders": 1,
"Received": "8/29/2019 4:31:11 PM Central Time"
},
"editorIds": [
"xxsJYgWDENLoX",
"JR9bWcGwbaymm3a8v",
"JxncJrdpeFJeWsTbT"
] ,
"id": "xxxxx5AvGgeSHy8Ms6Ytyc-1",
"messages": [],
"orderJson": {
"EntryID": "xxxxx5AvGgeSHy8Ms6Ytyc-1",
"Orders": [
{
"DropShipFlag": 1,
"FromAddressValue": 1,
"OrderAttributes": [
{
"AttributeUID": 548
},
{
"AttributeUID": 553
},
{
"AttributeUID": 2418
}
],
"OrderItems": [
{
"EditorId": "aC3f5HsJYgWDENLoX",
"ItemAssets": [
{
"AssetPath": "https://xxxx573043eac521.png",
"DP2NodeID": "10000",
"ImageHash": "000000000000000FFFFFFFFFFFFFFFFF",
"ImageRotation": 0,
"OffsetX": 50,
"OffsetY": 50,
"PrintedFileName": "aC3f5HsJYgWDENLoX-10000",
"X": 50,
"Y": 52.03909266409266,
"ZoomX": 100,
"ZoomY": 93.75
}
],
"ItemAttributes": [
{
"AttributeUID": 2105
},
{
"AttributeUID": 125
}
],
"ItemBookAttribute": null,
"ProductUID": 52,
"Quantity": 1
}
],
"SendNotificationEmailToAccount": true,
"SequenceNumber": 1,
"ShipToAddress": {
"Addr1": "Addr1",
"Addr2": "0",
"City": "City",
"Country": "US",
"Name": "Name",
"State": "ST",
"Zip": "00000"
}
}
]
},
"orderNumber": null,
"status": "order_placed",
"submitted": {
"Account": "350000",
"ConfirmationID": "xxxxx-436a-a2d7-3525158332f0",
"EntryID": "xxxxx-5AvGgeSHy8Ms6Ytyc-1",
"Key": "D83590AFF0CC0000B54B",
"NumberOfOrders": 1,
"Orders": [
{
"LineItems": [],
"Note": "",
"Products": [
{
"Price": "00.30",
"ProductDescription": "xxxxxint 8x10",
"Quantity": 1
},
{
"Price": "00.40",
"ProductDescription": "xxxxxut Black 8x10",
"Quantity": 1
},
{
"Price": "00.50",
"ProductDescription": "xxxxx"
},
{
"Price": "00.50",
"ProductDescription": "xxxscount",
"Quantity": 1
}
],
"SequenceNumber": "1",
"SubTotal": "00.70",
"Tax": "1.01",
"Total": "00.71"
}
],
"Received": "8/29/2019 4:31:10 PM Central Time"
},
"tracking": null,
"updatedOn": 1.598736670503000e+12
}
]
因此,假设数据位于表
x
中的var
列中,我就是这样查询确切的JSON的:
SELECT x.var[0]:confirmed:ConfirmationID::varchar as ConfirmationID,
f.value::varchar as EditorID
FROM x,
LATERAL FLATTEN(input => var[0]:editorIds) f
;
因为您的示例输出与您提供的JSON不匹配,所以我假设这就是您所需要的
另外,需要注意的是,JSON包含outer[],它表示整个JSON字符串都在一个数组中。这就是我的查询中出现
var[0]
的原因。如果该数组中有多条记录,则应删除该记录。通常,您应该排除这些记录,而是将每个记录分别加载到表中。我不确定您是否可以进行更改,所以我只想做一个记录。您能否分享您希望如何查看所请求数据的输出?这将有助于正确构建查询。我将其添加到原始帖子中。非常感谢。是的,这就是我想要的结果。非常感谢。对我想将括号中的数组中的多个元素提取到列中。我可以将其转换为新的表或视图吗?我会使用与上面相同的过程吗?如果这样做了,我会不再需要“[0]”语法吗?我上面使用的查询可以用来更新表,也可以用来使用视图(如果需要的话,物化可能会更好)。如果[]始终位于每个记录的变量中,并且该数组中只有一个记录值的数据,则需要使用[0]语法。