TL;DR InfluxDB 技术提示 - 有趣的 InfluxDB 时间戳问题和 INTO 子句
作者:Regan Kuchan / 开发者
2016 年 12 月 08 日
导航至
在这篇每周文章中,我们回顾了您可能在过去一周左右错过的最有趣的 InfluxDB 时间戳和 TICK-stack 相关问题、带有 INTO 子句的函数、解决方法、操作指南以及来自 GitHub、IRC 和 InfluxDB Google Group 的问答。
负时间戳
问:我正在将历史数据输入到 InfluxDB 中。是否可以写入时间戳早于 epoch 0 的数据?
答:是的!InfluxDB 支持负时间戳。最小可接受时间戳为 -9223372036854775806
或 1677-09-21T00:12:43.145224194Z
。这是一个在线协议中使用负时间戳的示例 - 人类可读格式的时间戳为 1969-12-07T18:47:12Z
> INSERT holidata snow=3 -2092368000000000
带有 INTO 子句的函数
问: 当我使用 DISTINCT()
而不带 INTO
子句 时,一切都按预期工作。当我使用带有 INTO
子句的 DISTINCT()
时,最终会丢失目标 measurement 中的数据点。这是预期的行为吗?我错过了什么?我的数据
> 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!
目标 measurement 中的结果
> SELECT * FROM "influxdays_copy" name: influxdays_copy time distinct ---- -------- 1970-01-01T00:00:00Z fa la la <---- I only see one point!
答:您看到的是预期的行为,但我可以理解这不一定符合您的期望。
像 DISTINCT()
这样的函数(另请参阅 TOP()
和 BOTTOM()
)通常返回多个具有相同时间戳的点。InfluxDB 假设具有相同 series 和时间戳的点是重复的点,因此,当您在查询中包含 INTO
子句时,InfluxDB 只是覆盖它认为在目标 measurement 中重复的点。
带有 fill() 的 COUNT()
问: 大多数 InfluxQL 函数对于没有数据的时间间隔报告 null
值,但 COUNT()
对于没有数据的时间间隔报告 0
。那么 fill()
如何与 COUNT()
一起使用呢?
答: 将 fill(<fill_option>)
与 COUNT()
一起使用会将任何 0
值替换为给定的 fill_option
不带 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 如何帮助他们取得成功的故事。提交您的证词,即可获得限量版连帽衫作为感谢。