BigQuery 每 x 行返回数据
Posted
技术标签:
【中文标题】BigQuery 每 x 行返回数据【英文标题】:BigQuery return data per x rows 【发布时间】:2019-02-25 16:19:38 【问题描述】:对于最近的一个项目,我想绘制传感器运动图。 很简单,我的数据是一个时间戳,一个以mm为单位的值。
现在,这个值可能会有些波动,所以我已经通过获取这些值的滚动中值得到了帮助,因此图表变得平滑了。
现在,如果我想绘制一年的运动,它包含 100.000 个数据点。这对于浏览器来说太多了,无法加载或绘制,而且分辨率过高。在人物屏幕上,我应该能够画出 250 个点,但要给出图形的特征。
现在,有几种选择: 首先,我猜中位数永远是起点。
对于每 x 行,返回平均值有道理。但是如何让 BigQuery 从每块 100 行中返回一个 ts 和平均值?
但是,如果在这 100 行中,我们有一个明显的尖峰,它将被拉平,因此不可见(有趣的数据点)
所以,也许我想查看这 100 行的最大值或最小值,并将其返回,以便客户端可以在该数据块上绘制一个峰值。
我是程序员,不是统计学家,但也许这类问题并不少见:)
【问题讨论】:
【参考方案1】:按小时(如果点太多,则每天)对数据点进行分组,图表 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
以查找有很多变化的时间:
您可能会注意到,发现高方差点是很正常的 - 在这种情况下尤其是每天早上。因此,您并不需要真正关心高方差,而是与正常趋势线进行比较。这将是一个有趣的新问题的开始。
【讨论】:
这确实有效,但是 timestamp_trunc 太死板了。我想在 50、100、400 行上执行此操作。这给了我两个挑战:如何“截断”到一组行;如何获得关于该集合的平均时间戳; “日/时/月”不是很相关,只是测量的数量。 如果它解决了问题,您可以接受这个答案,然后发布一个包含额外详细信息的新问题。点赞和接受答案是一种说“谢谢”的轻松方式。以上是关于BigQuery 每 x 行返回数据的主要内容,如果未能解决你的问题,请参考以下文章
基于 SQL (BigQuery) 中的多列返回许多小数据样本