Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database Bigquery:字段中的值数组_Database_Google Bigquery - Fatal编程技术网

Database 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

我被要求用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之外处理结果


提前感谢您的帮助。

好的,我发现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

希望这对其他人也有用。

注意:如果要将每个地址与另一个表中的相应记录连接起来,我不知道这种方法是否会导致问题。