TL;DR InfluxDB技术技巧 - 有趣的InfluxDB时间戳问题和INTO子句
作者:Regan Kuchan / 开发者
2016年12月8日
导航到
在本周的文章中,我们回顾了上周最有趣的InfluxDB时间戳和TICK-stack相关问题,具有INTO子句的函数,解决方案,如何操作和问答,这些问题可能在上周被您遗漏。GitHub,IRC和InfluxDB Google Group。
负时间戳
问:我在将历史数据输入InfluxDB。是否可以写入时间戳发生在epoch 0之前的数据?
A: 是的!InfluxDB 支持负时间戳。最小可接受的时间戳是 -9223372036854775806
或 1677-09-21T00:12:43.145224194Z
。这里是一个 行协议 中负时间戳的示例——可读的时间戳是 1969-12-07T18:47:12Z
> INSERT holidata snow=3 -2092368000000000
带有 INTO 子句的函数
Q: 当我使用没有 INTO
子句 的 DISTINCT()
时,一切按预期工作。当我使用 DISTINCT()
和 INTO
子句时,目标测量中缺少数据点。这是预期的行为吗?我漏掉了什么?我的数据
> SELECT * FROM "influxdays" name: influxdays time value ---- ----- 2016-12-01T19:06:50Z fa 2016-12-04T19:12:19Z fa 2016-12-14T19:06:50Z fa la 2016-12-17T19:06:50Z fa la la
DISTINCT()
没有 INTO
> SELECT DISTINCT("value") FROM "influxdays" name: influxdays time distinct ---- -------- 1970-01-01T00:00:00Z fa 1970-01-01T00:00:00Z fa la <---- There are three distinct values! 1970-01-01T00:00:00Z fa la la
DISTINCT()
有 INTO
> SELECT DISTINCT("value") INTO "influxdays_copy" FROM "influxdays" name: result time written ---- ------- 1970-01-01T00:00:00Z 3 <---- It says it wrote three points!
目标测量中的结果
> SELECT * FROM "influxdays_copy" name: influxdays_copy time distinct ---- -------- 1970-01-01T00:00:00Z fa la la <---- I only see one point!
A: 你所看到的是预期的行为,但我觉得这不一定是你所期望的。
如 DISTINCT()
(也见 TOP()
和 BOTTOM()
)这样的函数通常会返回具有相同时间戳的几个点。InfluxDB 假设具有相同系列和时间戳的点都是重复的点,因此,当你在查询中包含 INTO
子句时,InfluxDB 简单地覆盖它认为在目标测量中是重复的点。
COUNT() 与 fill()
Q: 大多数 InfluxQL 函数对没有数据的日期范围报告 null
值,但 COUNT()
对没有数据的日期范围报告 0
。那么 fill()
是如何与 COUNT()
一起工作的呢?
A: 使用 fill(<fill_option>)
与 COUNT()
替换任何 0
值。
没有 fill()
> SELECT COUNT("partridge") FROM "gifts" WHERE time >= '2016-12-07T00:00:00Z' AND time <= '2016-12-07T02:00:00Z' GROUP BY time(1h) name: gifts time count ---- ----- 2016-12-07T00:00:00Z 1 2016-12-07T01:00:00Z 2 2016-12-07T02:00:00Z 0
有 fill()
> SELECT COUNT("partridge") FROM "gifts" WHERE time >= '2016-12-07T00:00:00Z' AND time <= '2016-12-07T02:00:00Z' GROUP BY time(1h) fill(30) name: gifts time count ---- ----- 2016-12-07T00:00:00Z 1 2016-12-07T01:00:00Z 2 2016-12-07T02:00:00Z 30 <--- now the zero is 30
有关更多 InfluxDB 技巧,请参阅我们的 常见问题解答 页面,并请随意在 InfluxDB 用户组 中发布你的问题!
接下来是什么
- 下载 页面上有 TICK-stack 的下载链接
- 在云端部署:通过免费试用我们的 InfluxDB Cloud 开始使用,它具有完全管理的集群、Kapacitor 和 Grafana。
- 在您的服务器上部署:想在您的服务器上运行 InfluxDB 集群吗?试用 InfluxDB Enterprise 的免费 14 天试用期,它具有用于部署、监控和重新平衡集群的直观 UI,以及管理备份和恢复的功能。
- 分享你的故事: 超过 100 家公司 分享了他们如何通过 InfluxDB 取得成功的故事。提交你的故事,作为感谢,你将获得一件限量版卫衣。