首页 > 解决方案 > BigQuery 每 x 行返回数据

问题描述

对于最近的一个项目,我想绘制传感器运动图。这很简单,我的数据是一个时间戳,一个以 mm 为单位的值。

现在,这个值可能会有一点波动,所以我已经通过获取这些值的滚动中值得到了帮助,所以图表变得平滑了。

现在,如果我想绘制一年的运动,它由 100.000 个数据点组成。这对于浏览器来说太多了,无法加载或绘制,而且分辨率过高。在人物屏幕中,我应该能够绘制 250 个点,但要给出图形的特征​​。

现在,有几种选择:首先,我猜中位数始终是起点。

说得通。但是我怎样才能让 BigQuery 从每块 100 行中返回一个 ts 和平均值?

但是,如果在这 100 行中,我们有一个明显的尖峰,它将被拉平,因此不可见(有趣的数据点)

所以,也许我想查看这 100 行的最大值或最小值,并将其返回,以便客户端可以在该数据块上绘制一个峰值。

我是程序员,不是统计员,但也许这类问题并不少见 :)

标签: google-bigquerymoving-average

解决方案


按小时(如果点太多,则每天)对数据点进行分组,图表 3 行:

  • 平均
  • 最大限度
  • 最小

例如:

在此处输入图像描述

#standardSQL
SELECT SensorName, TIMESTAMP_TRUNC(Timestamp, hour) hour
  , COUNT(*) c, AVG(Data) avg, MAX(Data) max, MIN(Data) min
FROM `data-sensing-lab.io_sensor_data.moscone_io13`
WHERE SensorName='XBee_40670F5F/light'
GROUP BY 1,2
ORDER BY 2

一次可视化一个传感器时这很容易 - 但是您是否正在寻找一个可以同时显示 X 传感器的图表?

如果添加VARIANCE以查找有很多变化的时间:

在此处输入图像描述

您可能会注意到,找到高方差点是很正常的——尤其是在这种情况下每天早上。因此,您并不需要真正关心高方差,而是与正常趋势线进行比较。这将是一个有趣的新问题的开始。


推荐阅读