【发布时间】:2020-11-13 08:52:46
【问题描述】:
我无法使用 Snowflake SQL 正确查询多级 (json) 数据的半结构化数据。 您能否协助评论不正确的内容、我正在解析的数据或我的 FLATTEN 语法? 如何写出正确的语法?非常感谢! 我的查询是:
WITH a AS (
SELECT PARSE_JSON('[
{
"name": "conversion_event",
"created_at" : "2020-01-01 00:00:00",
"uuid" : 12314512441312312,
"campaign_name": "campaign_name1",
"campaign_channel": "channel1",
"meta":{
"app_name": "iOS",
"os_version": 11,
"country" : "ABC",
"latitude": 12.12,
"longitude": 12.12,
},
"type_of_conversion": "registrations"
}
,
{
"name": "conversion_event",
"created_at" : "2020-01-15 00:00:00",
"uuid" : 12314512441312435,
"campaign_name": "campaign_name2",
"campaign_channel": "channel1",
"meta":{
"app_name": "Winsows",
"os_version": "n/a" ,
"country" : "AC",
"latitude": 16.35,
"longitude": 31.45,
},
"type_of_conversion": "purchase"
}
,
{
"name": "conversion_event",
"created_at" : "2020-01-30 00:00:00",
"uuid" : 12314512441554433,
"campaign_name": "campaign_name1",
"campaign_channel": "channel3",
"meta":{
"app_name": "iOS",
"os_version": 11,
"country" : "AB",
"latitude": 12.12,
"longitude": 12.12,
},
"type_of_conversion": "registrations"
}
,
{
"name": "conversion_event",
"created_at" : "2020-02-28 00:00:00",
"uuid" : 12314512441312312,
"campaign_name": "campaign_name2",
"campaign_channel": "channel3",
"meta":{
"app_name": "iOS",
"os_version": "9",
"country" : "ABC",
"latitude": 12.12,
"longitude": 12.12,
},
"type_of_conversion": "registrations"
}
,
{
"name": "conversion_event",
"created_at" : "2020-01-30 00:00:00",
"uuid" : 12314512441312435,
"campaign_name": "campaign_name3",
"campaign_channel": "channel4",
"meta":{
"app_name": "Winsows",
"os_version": "n/a",
"country" : "AC",
"latitude": 16.35,
"longitude": 31.45,
},
"type_of_conversion": "purchase"
}
,
{
"name": "conversion_event",
"created_at" : "2020-03-01 00:00:00",
"uuid" : 12314512441312355,
"campaign_name": "campaign_name9",
"campaign_channel": "channel1",
"meta":{
"app_name": "Linux",
"os_version": "n/a",
"country" : "DE",
"latitude": 12.12,
"longitude": 12.12,
},
"type_of_conversion": "purchase"
}
,
{
"name": "conversion_event",
"created_at" : "2020-01-06 00:00:00",
"uuid" : 12314512441312355,
"campaign_name": "campaign_name9",
"campaign_channel": "channel1",
"meta":{
"app_name": "Linux",
"os_version": "n/a",
"country" : "DE",
"latitude": 12.12,
"longitude": 12.12,
},
"type_of_conversion": "registration"
}
,
{
"name": "conversion_event",
"created_at" : "2020-01-01 00:00:00",
"uuid" : 12314512441554433,
"campaign_name": "campaign_name6",
"campaign_channel": "channel5",
"meta":{
"app_name": "iOS",
"os_version": 11,
"country" : "AB",
"latitude": 12.12,
"longitude": 12.12,
},
"type_of_conversion": "registrations"
}
,
{
"name": "conversion_event",
"created_at" : "2020-01-01 00:00:00",
"uuid" : 12314512441312312,
"campaign_name": "campaign_name1",
"campaign_channel": "channel1",
"meta":{
"app_name": "iOS",
"os_version": 11,
"country" : "ABC",
"latitude": 12.12,
"longitude": 12.12,
},
"type_of_conversion": "registrations"
}
,
{
"name": "conversion_event",
"created_at" : "2020-01-01 00:00:00",
"uuid" : 12314512441312312,
"campaign_name": "campaign_name1",
"campaign_channel": "channel1",
"meta":{
"app_name": "iOS",
"os_version": 11,
"country" : "ABC",
"latitude": 12.12,
"longitude": 12.12,
},
"type_of_conversion": "registrations"
}
,
{
"name": "conversion_event",
"created_at" : "2020-06-04 00:00:00",
"uuid" : 12314512441312312,
"campaign_name": "campaign_name3",
"campaign_channel": "channel2",
"meta":{
"app_name": "iOS",
"os_version": 11,
"country" : "ABC",
"latitude": 12.12,
"longitude": 12.12,
},
"type_of_conversion": "registrations"
}
]')::variant as var)
SELECT var:name::string AS "name", meta.value:country::string AS "country", var:uuid::int AS "uuid",
var:type_of_conversion::string AS "type_of_conversion", var:campaign_name::string AS "campaign_name",
meta.value:app_name::string AS "app_name"
FROM a
, LATERAL FLATTEN (var:meta) AS meta ;
【问题讨论】:
-
您的问题应该包含一个最小可重现的示例。这个 JSON 不是一个最小的例子
标签: sql json snowflake-cloud-data-platform flatten