TL;DR InfluxDB 技术提示 - InfluxDB 字段键问题和解决方案
作者:Regan Kuchan / 开发者
2016 年 12 月 22 日
导航至
在本周的帖子中,我们回顾了来自 GitHub、IRC 和 InfluxDB Google Group 中您可能错过的关于 InfluxDB 字段键和 TICK-stack 相关问题、解决方法、操作指南和问答的最有趣内容。
数据丢失案例
问:我对 InfluxDB 的写入操作成功了,但我的查询没有返回任何结果。我可以看到我创建的数据库和我写入的测量值,但实际的数据点似乎隐藏起来了。您有什么建议吗?
答:如果不进一步了解您的数据设置和查询,就很难准确地确定您那边发生了什么。以下是一些可能解释为什么您的查询没有返回任何结果的原因:
第一个也是最常见的解释涉及保留策略 (RP)。InfluxDB 会自动查询数据库的 DEFAULT
RP 中的数据。如果您的数据存储在 DEFAULT
RP 以外的 RP 中,除非您指定替代 RP,否则 InfluxDB 不会返回任何结果。
另一种可能的解释与您的查询的时间范围有关。默认情况下,大多数 SELECT
查询涵盖 1677-09-21 00:12:43.145224194
到 2262-04-11T23:47:16.854775806Z
UTC 之间的时间范围。但是,也包含 GROUP BY time()
子句 的 SELECT
查询涵盖 1677-09-21 00:12:43.145224194
到 now()
之间的时间范围。如果您的任何数据发生在 now()
之后,GROUP BY time()
查询将不会涵盖这些数据点。如果查询包含 GROUP BY time()
子句,并且您的任何数据发生在 now()
之后,则您的查询需要为时间范围提供替代上限。
最后一种也是更晦涩的解释涉及具有相同 模式 的 字段键 和 标签键。如果字段键与标签键匹配,并且您的查询仅指定键,则 InfluxDB 将假定您正在查询字段键。在某些情况下,这会使您的数据看起来好像丢失了。您需要使用 ::
语法来区分字段键和标签键。
星号研究
问:我在我的查询中包含了 GROUP BY *
。您能帮我理解我的查询的输出吗?InfluxDB 如何确定要 GROUP BY
的内容?
> SELECT MEAN("rache") FROM "scarlet" GROUP BY * name: scarlet tags: level=1, location= time mean ---- ---- 1970-01-01T00:00:00Z 13 name: scarlet tags: level=3, location=2 time mean ---- ---- 1970-01-01T00:00:00Z 2 name: scarlet tags: level=4, location=5 time mean ---- ---- 1970-01-01T00:00:00Z 14
答:当您 GROUP BY *
时,InfluxDB 会为 测量值 中的每个可能的 标签集 返回结果。在您的情况下,scarlet
测量值有三个唯一的标签组合:
level = 1
且location = ''
level = 3
且location = 2
level = 4
且location = 5
InfluxDB 按唯一的标签集组合对 scarlet
测量值中的数据点进行分组,并计算每个组的平均 rache
。
FOR 的符号
问:我正在运行一个连续查询 (CQ),并且我注意到它遗漏了一些数据点。我的主要问题似乎是我的数据到达较晚;因此,数据仅在 CQ 为该时间间隔运行后才到达特定时间间隔。有没有办法解决这个问题?这是我的 CQ:
CREATE CONTINUOUS QUERY in_1888 ON treasure BEGIN SELECT MAX("darts") INTO "items" FROM "pearls" GROUP BY time(15m) END
答:是的!有一种方法可以解决这种行为。您可以使用高级 CQ 语法来配置 CQ 的时间范围。您当前的 CQ 每 15 分钟运行一次,并查询过去 15 分钟内的数据。下面的 CQ 仍然每 15 分钟运行一次,但它查询过去 30 分钟内的数据:
CREATE CONTINUOUS QUERY in_1888 ON treasure ?RESAMPLE FOR 30m? BEGIN SELECT MAX("darts") INTO "items" FROM "pearls" GROUP BY time(15m) END
请查看 CQ 文档,了解高级语法的示例和其他信息。
下一步是什么
- 下载适用于 TICK-stack 的版本已在我们的“下载”页面上线
- 云端部署:开始免费试用 InfluxDB Cloud,其中包含完全托管的集群、Kapacitor 和 Grafana。
- 在您的服务器上部署:想在您的服务器上运行 InfluxDB 集群?免费试用 14 天 InfluxDB Enterprise,其中包含用于部署、监控和重新平衡集群以及管理备份和恢复的直观 UI。
- 讲述您的故事:超过 100 家公司分享了他们关于 InfluxDB 如何帮助他们取得成功的故事。提交您的客户评价,即可获赠限量版连帽衫,以表感谢。