Arrays 变量中数组中的元素中的数组

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

如何从存储在Snowflake变量列中的数组中获取数据。我不在乎它是新表、视图还是查询。还有第二列varchar(256)类型,它包含唯一的ID。 如果你能帮我阅读“确认”数据和“编辑”数据,我可能会从那里得到。非常感谢

输出示例如下

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]语法。