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 行返回数据的主要内容,如果未能解决你的问题,请参考以下文章

将数据流式传输到 bigquery 仅返回部分数据

基于 SQL (BigQuery) 中的多列返回许多小数据样本

Bigquery 返回重复的行以及错误的计数

BigQuery:插入行,但未写入

我应该为每一行插入调用 BigQuery 还是应该插入一个批量?

BigQuery:插入行,但不写