Ben*_*ley 1 json google-bigquery
我有一张桌子:
user device minutes
==== ====== =======
ben phone 1.9
ben tablet 2.3
anna phone 1.6
Run Code Online (Sandbox Code Playgroud)
我想将设备使用打包成用户的 json 字符串,例如:
user json
==== =====
ben {"phone":1.9, "tablet":2.3}
anna {"phone":1.6, "tablet":2.3}
Run Code Online (Sandbox Code Playgroud)
如何在 bigquery 中执行此操作?
以下是 BigQuery 标准 SQL 的版本
#standardSQL
WITH `yourproject.yourdataset.yourtable` AS (
SELECT 'ben' user, 'phone' device, 1.9 minutes UNION ALL
SELECT 'ben', 'tablet', 2.3 UNION ALL
SELECT 'anna', 'phone', 1.6
)
SELECT
user,
CONCAT('{', STRING_AGG(CONCAT('"',device, '":', CAST(minutes AS STRING))), '}') json,
ROUND(SUM(IF(device='tablet',minutes,0)),2) tablet_minutes
FROM `yourproject.yourdataset.yourtable`
GROUP BY user
Run Code Online (Sandbox Code Playgroud)
输出如下
user json tablet_minutes
ben {"phone":1.9,"tablet":2.3} 2.3
anna {"phone":1.6} 0.0
Run Code Online (Sandbox Code Playgroud)