Influxdb 子查询结果中存在重复项

Influxdb 子查询结果中存在重复项,influxdb,Influxdb,我试图从测量值中计算不同的sessionid。sessionId是一个标记,我在父查询中计算不同的条目,因为distinct对标记不起作用。 在子查询中,我使用group by sessionId limit 1仍然可以从索引中获益。如果有更有效的技术,我的耳朵是敞开的,但我仍然想了解发生了什么 我有两种变体: > select count(distinct(sessionId)) from (select * from UserSession group by sessionId li

我试图从测量值中计算不同的sessionid。sessionId是一个标记,我在父查询中计算不同的条目,因为distinct对标记不起作用。 在子查询中,我使用group by sessionId limit 1仍然可以从索引中获益。如果有更有效的技术,我的耳朵是敞开的,但我仍然想了解发生了什么

我有两种变体:

>  select count(distinct(sessionId)) from (select * from UserSession group by sessionId limit 1)
name: UserSession
time count
---- -----
0    3757
据我所知,这些应该返回相同的数字,因为group by sessionId limit 1已经以group的形式返回了不同的sessionId

事实上,如果我执行:

select * from UserSession group by sessionId limit 1
我有3757个结果组,而不是4206个

事实上,只要我将其放入子查询并在父查询中重新选择字段,一些sessionid就会在最终结果中多次出现。不总是这样,因为总共有17549行,但有些是


这表明limit 1在某种程度上起作用,但某些sessionId在重新选择时仍会获得多个条目。可能是某种未定义的行为?

我可以确认我得到了相同的结果。 根据我的经验,使用嵌套查询并不总是能满足您的期望

根据使用方式,您可以检索标记所有值的列表,包括:

SHOW TAG VALUES FROM UserSession WITH KEY=sessionId
或获取标记的不同值的基数:

SHOW TAG VALUES EXACT CARDINALITY FROM UserSession WITH KEY=sessionId.

它将返回一行和一列计数,其中包含一个数字。如果不需要精确地描述结果,您可以删除精确的修改器:。

谢谢,我在某种程度上感到放心。显示标签功能很棒。我实现了我想要做的简单计数,显示标记值精确基数,我将编辑您的答案以反映这一点。我会接受你们的答案,直到有人最终解释了为什么子查询会这样。升级投票将针对基于显示标签的解决方案;哦,很好地抓住了红衣主教!啊,不幸的是,SHOW标签不能在WHERE子句中使用时间过滤器,我需要这个。我必须回到我以前的解决方案。XDB工作时很酷,但它充满了令人惊讶的行为。编写查询可能是一件非常痛苦的事情。
SHOW TAG VALUES EXACT CARDINALITY FROM UserSession WITH KEY=sessionId.