文档文档

故障排除连接操作

了解如何排除使用 join时可能发生的常见行为和错误。

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

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

故障排除连接行为

在连接中显式映射的列为空

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


原因

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

解决方案

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


原因

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

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

解决方案

使用 group() 从每个输入流的组键中删除任何会阻止组键实例匹配的列。


故障排除连接错误消息

表缺少列 '<column>'

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

原因

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

解决方案

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


表缺少标签 <label>

错误消息
table is missing label <label>

原因

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

解决方案

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


记录缺少标签 <label>

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

原因

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

解决方案

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


原因

您的 as 输出模式函数使用不存在的列。 如果使用外部连接,则 as 尝试使用来自“主”输入流(join.left()leftjoin.right()right)中不存在的列的值。

解决方案

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


无法连接空表

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

原因

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

解决方案

使用 array.from()union() 在每个流中插入一个虚拟表,您可以在连接操作后将其过滤掉。 虚拟表需要包含与其联合的流的所有组键列。


此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。 更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、最近数据引擎,可实时收集和处理数据,并将其持久保存到本地磁盘或对象存储。 InfluxDB 3 Enterprise 构建在 Core 的基础上,增加了高可用性、读取副本、增强的安全性以及数据压缩,从而实现更快的查询和优化的存储。 InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

有关更多信息,请查看