Documentation

故障排除连接操作

学习如何解决使用join包时可能出现的常见行为和错误。

提交关于无法解释的行为或错误的问题

这是一个“动态”的文档,可能会更新用户在使用join时遇到的常见问题。如果您对此处未记录的行为或错误有疑问,请向InfluxData文档或Flux GitHub存储库提交问题:

排查连接行为

在连接中明确映射的列为null

在某些情况下,您的连接输出可能包括在您预期为非空值的列中出现null值。这可能是由以下问题之一引起的:


原因

每个输入流的组键并不相同。 join包中的函数使用组键快速识别应该比较哪些表。

解决方案

使用 group() 重新分组您的两个输入流,以便在尝试将它们连接在一起之前,它们的组键匹配。


原因

在您的数据流中没有匹配的 组键实例join 包中的函数仅比较具有匹配的 组键实例 的表。输入流可能具有匹配的组键,但在您的流中没有匹配的组键实例。

当连接从 InfluxDB 查询的两个单独字段时,可能会发生这种情况。默认情况下,InfluxDB 返回的数据将 _field 作为组键的一部分。如果每个流包含不同的字段,则这两个流中的表将不会被比较,因为它们不会有任何匹配的 组键实例

解决方案

使用 group() 去除 任何会阻止组键实例匹配的输入流的组键列。


排除连接错误消息

表缺少列 ''

错误信息
cannot set join columns in left table stream: table is missing column '<column>'

原因

您的 on 连接谓词使用了一个不存在的列。 在 on 谓词函数中,您正在尝试比较一个在您的输入流之一中不存在的列。

解决方案

确保您在 on 谓词函数中比较的列存在于输入流中。如果必要,请更新谓词函数中的列名。


表格缺少标签

错误信息
table is missing label <label>

原因

您的 on 连接谓词使用了一个不存在的列。 在外连接的 on 谓词函数中,您尝试使用一个来自于“主”输入流中不存在的列的值 (left 对于 join.left()right 对于 join.right()).

解决方案

确保您在 on 谓词函数中比较的列确实存在于输入流中。必要时,更新谓词函数中的列名。


记录缺少标签

错误信息
record is missing label <label> (argument <left or right>)

原因

您的 on 连接谓词使用了一个不存在的列。 在 on 谓词函数中,您尝试比较一个在您的输入流之一中不存在的列。

解决方案

确保您在on谓词函数中比较的列实际上在输入流中存在。 如有必要,请更新谓词函数中的列名。


原因

您的 as 输出模式函数使用了一个不存在的列。如果使用 外连接,则 as 正在尝试使用一个在“主”输入流中不存在的列的值 (left 对于 join.left()right 对于 join.right())。

解决方案

确保您在as输出函数中用于分配值的列确实存在于输入流中。


无法在空表上连接

错误信息
error preparing <left or right> side of join: cannot join on an empty table

原因

你的一个输入流是空的表流。当一个或两个输入流为空时,连接包中的函数会出错。

解决方案

使用 array.from()union() 在每个你在连接操作后过滤掉的流中插入一个假表。 假表需要包括与其联合的流的所有分组键列。



Flux的未来

Flux 正在进入维护模式。您可以像现在一样继续使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看: