TL;DR InfluxDB技术技巧 - InfluxDB字段键问题及解决方案

导航至

在本周回顾中,我们总结了InfluxDB字段键和TICK-stack相关的问题、解决方案、教程和问答,这些问题、解决方案、教程和问答可能在上周或更早之前被您忽略。GitHub、IRC和InfluxDB Google Group

数据丢失案例

问:我的InfluxDB写入操作成功,但查询没有返回任何结果。我可以看到我创建的数据库以及我写入的度量,但实际的数据点似乎在隐藏。您有什么建议吗?

A: 如果您不了解更多关于您的数据配置和查询信息,将很难准确判断您端发生了什么。以下是一些可能解释您查询未返回任何结果的原因:

最常见的原因之一涉及保留策略(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会假设您正在查询字段键。在某些情况下,这可能会使您的数据看起来缺失。您需要使用:: 语法来区分字段键和标签键。

关于*

Q: 我在查询中包括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

A: 当您GROUP BY *时,InfluxDB会为测量中的每个可能的标签集返回结果。在您的情况下,scarlet 测量有三个独特的标签组合:

  • level = 1location = ''
  • level = 3location = 2
  • level = 4location = 5

InfluxDB会根据唯一的标签集组合对scarlet 测量中的数据点进行分组,并计算每个组的平均rache

FOR的符号

Q: 我正在运行连续查询(CQ),并注意到它错过了一些我的数据点。我的主要问题似乎是我的数据到达延迟;在CQ运行特定时间段之后,才会为该时间段到达数据。有没有什么方法可以解决这个问题?以下是我的CQ:

CREATE CONTINUOUS QUERY in_1888 ON treasure BEGIN SELECT MAX("darts") INTO "items" FROM "pearls" GROUP BY time(15m) END

A:是的!有一种方法可以绕过这种行为。您可以使用高级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集群?尝试InfluxDB Enterprise的免费14天试用版,它具有直观的用户界面,用于部署、监控和重新平衡集群,以及管理备份和恢复。
  • 讲述您的故事:超过100家公司分享了他们如何利用InfluxDB取得成功的经历。提交您的评价,作为感谢,您将获得限量版卫衣。