Database Bigquery:字段中的值数组
我被要求用javascript开发一个客户端应用程序,用于查询BigQuery上存储的一些表,因此目前我掌握了查询语法 除其他外,我的模式包含以下字段:Database Bigquery:字段中的值数组,database,google-bigquery,Database,Google Bigquery,我被要求用javascript开发一个客户端应用程序,用于查询BigQuery上存储的一些表,因此目前我掌握了查询语法 除其他外,我的模式包含以下字段: download_speed: FLOAT real_address: STRING timestamp: INTEGER upload_speed: FLOAT [...] 我想找出不同天数的平均上传和下载速度,并跟踪不同的IP地址,所以我写了这个查询: SELECT LEFT( FORMAT_UTC_USEC(UTC_USEC_TO_DA
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之外处理结果
提前感谢您的帮助。好的,我发现BigQuery支持函数组_CONCAT('str'),用法如下: 将多个字符串连接成一个逗号分隔的字符串, 与字符串的SUM()类似。将其与分组语句和 str的字段名,用于连接一个字符串中所有字符串值的列表 分组成一个字符串 如果有人感兴趣,查询是:
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,
GROUP_CONCAT(real_address)as real_address_list
FROM [xxxxxxx:xxxxx.xxxxx]
GROUP BY date_day
ORDER BY date_day ASC
希望这对其他人也有用。注意:如果要将每个地址与另一个表中的相应记录连接起来,我不知道这种方法是否会导致问题。