TL;DR InfluxDB技术技巧 - InfluxDB字段键问题及解决方案
作者:Regan Kuchan / 开发者
2016年12月22日
导航至
在本周回顾中,我们总结了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.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会假设您正在查询字段键。在某些情况下,这可能会使您的数据看起来缺失。您需要使用::
语法来区分字段键和标签键。
关于*
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 = 1
和location = ''
level = 3
和location = 2
level = 4
和location = 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取得成功的经历。提交您的评价,作为感谢,您将获得限量版卫衣。