如何以分钟精度绘制来自BigQuery的时间序列?

时间:2019-03-03 14:54:39

标签: google-cloud-platform google-bigquery google-data-studio

我在BigQuery中有一个数据集,并且将其用作在Data Studio上创建报表的来源。

我可以使用“时间戳记”作为维度并将其他数字字段作为度量标准,将数据绘制为时间序列/组合/折线图。

我的问题是,由于准确度降低到一个小时,而我却需要一分钟的精确度,所以我能获得的最多。 BigQuery中的数据集的精度为毫秒,但我似乎无法在Data Studio中获得它。

我已经阅读了有关创建带有日期的字符串并将其用作度量标准,或者提取并组合分钟字段的简短建议,但是我似乎无法使其工作。

samp

2 个答案:

答案 0 :(得分:0)

您可以使用以下查询创建表格视图:

SELECT
  t.*,
  FORMAT_TIMESTAMP("%Y-%m-%d %H:%M", t.timestamp) as date_time
FROM
  `project-id.dataset-id.table-id` AS t

创建此类视图后,您可以将该视图添加为数据源,并在时间序列中使用字段date_time

答案 1 :(得分:0)

在BigQuery中,TRUNCATEMINUTEGROUP BY。然后在Data Studio中将此时间戳记设置为STRING而不是DATE的值。创建一个带有此时间戳STRING作为X维的折线图,瞧。

enter image description here enter image description here

对此进行查询:

WITH data AS (
  SELECT bus, ST_GeogPoint(longitude, latitude) point
    , PARSE_TIMESTAMP('%Y%m%d %H%M%S',FORMAT('%i %06d', day, time)) ts
  FROM `fh-bigquery.mta_nyc_si.201410_bustime`
  WHERE day=20141014
  AND bus IN (7043, 7086, 7076, 2421, 7052, 7071)
)

SELECT bus, TIMESTAMP_TRUNC(ts, MINUTE) ts, AVG(distance/time) speed
FROM (
  SELECT bus, ts
    , ST_DISTANCE(point, LAG(point, 3) OVER(PARTITION BY bus ORDER BY ts)) distance
    , TIMESTAMP_DIFF(ts, LAG(ts, 3) OVER(PARTITION BY bus ORDER BY ts), SECOND) time
  FROM data
)
WHERE time IS NOT null 
GROUP BY bus, ts
HAVING speed < 500