【发布时间】:2020-05-14 16:01:26
【问题描述】:
我在 Google BigQuery 中有一个包含来自 Firebase 的事件数据的表格,其中包含以下列:
event_date, event_timestamp, event_name, (etc..).
要按 event_name 计算事件数,我使用以下查询:
SELECT event_name, count(event_name) as event_count
FROM `analytics.events_20200510`
GROUP BY event_name;
导致:
我想将此结果转换为结构数组,格式为 JSON。示例:
{
"events": [
{"first_open": 69},
{"screen_view": 510},
{"user_engagement": 354},
{"...": ..}
]
}
我开始了
SELECT TO_JSON_STRING(
STRUCT(
??? as events
), true)
但我被卡住了,不知道应该在 ??? 上进行什么操作才能使其正常工作。任何帮助将不胜感激。
编辑:
答案如下:
SELECT TO_JSON_STRING(
STRUCT(
(SELECT ARRAY (SELECT AS STRUCT event_name, count(*) AS count FROM `analytics.events_20200510` GROUP BY event_name)) AS events
), true);
结果
{
"events": [
{
"event_name": "session_start",
"count": 69
},
{
"event_name": "screen_view",
"count": 510
},
(...)
]
}
这几乎是正确的,但我希望事件名称是“键”,而计数是结构中的“值”(如我的 JSON 示例中所示)。这可能吗?
【问题讨论】:
-
请提供样本数据和期望的结果。我也无法判断您的问题是什么——计算值(未定义)或构造为 JSON。
-
@GordonLinoff 我更新了问题,希望现在清楚
标签: sql google-bigquery