如何在 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;
我在 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;