【问题标题】:How to plot a time series from BigQuery with a minute accuracy?如何以分钟的精度从 BigQuery 绘制时间序列?
【发布时间】:2019-07-24 23:46:45
【问题描述】:

我在 BigQuery 中有一个数据集,我将它用作在 Data Studio 上创建报告的源。

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

我遇到的问题是,我能得到的最大精度是小时,而我需要一分钟的精度。 BigQuery 中的数据集精度为毫秒,但我在 Data Studio 中似乎无法获取。

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

【问题讨论】:

  • 您能否发布一个指向描述您的数据的 CSV 数据示例的链接?显然不要暴露敏感数据,但您正在使用的数据样本将有助于检查我们正在使用的内容。
  • @Kolban 我编辑了问题以包含 BigQuery 数据的示例。
  • 此链接可能会有所帮助....en.advertisercommunity.com/t5/Data-Studio/…
  • 令人难以置信的是,这在 DataStudio 中很难做到。让您毫无疑问 - >“在 Data Studio 中,指标值始终是聚合的”。祝贺那里的产品团队构建了一个无法绘制普通旧时间序列的数据可视化工具......(参考:support.google.com/datastudio/answer/6402048?hl=en

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


【解决方案1】:

2019 年更新:现在原生支持分钟分辨率!


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

查询此访问:

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

【讨论】:

    【解决方案2】:

    您可以使用此查询创建表的视图:

    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 用于您的时间序列

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-16
      相关资源
      最近更新 更多