问题描述
如何从存储在SNowflake中的变量列中的数组中获取数据。我不在乎是新表,视图还是查询。第二个类型为varchar(256)的列包含唯一的ID。 如果您可以帮助我读取“已确认”数据和“ editorIds”数据,那么我可能可以从那里获取数据。非常感谢!
输出示例为
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",{
"Price": "00.50","ProductDescription": "xxxxx"
},"ProductDescription": "xxxscount","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
}
]
解决方法
因此,假设数据在表var
的列x
中,这就是我查询确切的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包含外部[],该外部[]表示整个JSON字符串都在数组内部。这就是在我的查询中使用var[0]
的原因。如果该数组中有多个记录,则应将其删除。通常,应该排除那些记录,而应将每个记录分别加载到表中。我不确定您是否可以进行更改,所以我只想记录一下。