TL;DR InfluxDB 技术提示 - InfluxDB 字段键问题和解决方案

导航至

在本周的帖子中,我们回顾了来自 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.1452241942262-04-11T23:47:16.854775806Z UTC 之间的时间范围。但是,也包含 GROUP BY time() 子句SELECT 查询涵盖 1677-09-21 00:12:43.145224194now() 之间的时间范围。如果您的任何数据发生在 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 = 1location = ''
  • level = 3location = 2
  • level = 4location = 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 如何帮助他们取得成功的故事。提交您的客户评价,即可获赠限量版连帽衫,以表感谢。