如何在 Snowflake 中将 json 格式转换为 table 格式

How to convert json to table format in Snowflake

我在 Snowflake 中有一个外部 table INV_EXT_TBL(1 个名为“VALUE”的变体列),它有 6000 行(每行是 json 文件)。 json 记录在 dynamo_json 格式中有双引号。 解析所有 json 文件并将其转换为 table 格式以进行 运行 sql 查询的最佳方法是什么。我给出了前 3 json 个文件的示例格式。

"{
  ""Item"": {
     ""sortKey"": {
      ""S"": ""DR-1630507718""
    },
    ""vin"": {
      ""S"": ""1FMCU9GD2JUA29""
    }
  }
}"

"{
  ""Item"": {
    ""sortKey"": {
      ""S"": ""affc5dd0875c-1630618108496""
    },
   },
    ""vin"": {
      ""S"": ""SALCH625018""
    }
  }
}"

"{
  ""Item"": {
    ""sortKey"": {
      ""S"": ""affc5dd0875c-1601078453607""
    },
    ""vin"": {
      ""S"": ""KL4CB018677""
    }
  }
}"

我创建了本地 table 并通过转换数据类型从外部 table 向其中插入数据。这是正确的方法还是我应该对 json 文件使用 parse_json 函数来将数据存储在本地 table.

insert into DB.SCHEMA.INV_HIST(VIN,SORTKEY)
(SELECT value:Item.vin.S::string AS VIN, value:Item.sortKey.S::string AS SORTKEY FROM INV_EXT_TBL);``` 

我通过在外部 table 上的变体列上使用 cast 创建实体化视图来解决这个问题。这有助于摆脱外部双引号,性能提高了数倍。我没有在 table 创建方法上取得进展。

CREATE OR REPLACE MATERIALIZED VIEW DB.SCHEMA.MVW_INV_HIST 
AS 
SELECT value:Item.vin.S::string AS VIN, value:Item.sortKey.S::string AS SORTKEY 
FROM DB.SCHEMA.INV_HIST;