我被要求用 javascript 开发一个客户端应用程序来查询存储在 BigQuery 上的一些表,所以目前我正在掌握查询语法。
我的架构除其他外具有以下字段:
download_speed: FLOAT
real_address: STRING
timestamp: INTEGER
upload_speed: FLOAT
[...]
我想找到不同日期聚合的平均上传和下载速度,并跟踪不同的 IP,所以我写了这个查询:
SELECT LEFT( FORMAT_UTC_USEC(UTC_USEC_TO_DAY(timestamp*1000000)),10) as date_day,
AVG (download_speed)avg_download,
AVG (upload_speed)avg_upload,
real_address
FROM [xxxxxxxxxxxx:xxxxxxx.xxxx]
GROUP BY date_day, real_address
ORDER BY date_day ASC
这没关系,但结果是平的,我需要每天汇总平均速度,以便我可以在时间轴上绘制它们。一种可能性是处理查询客户端返回的 json,但是对于大量的数据集和许多具有不同地址的不同用户(正如我们应该拥有的那样),这种方法对我来说听起来像是自杀。
所以我问自己是否有一种方法可以在一个字段中保存一个包含给定日期的所有地址的数组。我想返回这个元组结构:
+---------------+-------------------+--------------------+--------------------+
| date_day | avg_download | avg_upload | real_addr_list |
+---------------+-------------------+--------------------+--------------------+
| | | | 79.20.xx.xx, |
| 2013-01-13 | 510574.63 | 29599.92 | 151.46.xxx.xx, |
| | | | 151.70.xx.xx |
+---------------+-------------------+--------------------+--------------------+
这是可能的,还是我被迫在 BigQuery 之外处理结果?
在此先感谢您的帮助。