文档文档

连接数据

使用 Flux join 基于通用值连接两个数据集。了解如何使用以下连接方法连接两个数据集

何时使用 join 包

我们建议使用 join 包连接具有大部分不同架构或来自两个不同数据源的流。如果您要连接来自同一数据源且具有相同架构的数据,则使用 union()pivot() 来组合数据可能会更高效。

有关更多信息,请参阅何时使用 union 和 pivot 而不是 join 函数

join 函数的工作原理

join 函数基于每个输入流中的通用值将两个表流连接在一起。

输入流

每个输入流都分配给 leftright 参数。输入流可以从任何有效数据源定义。有关更多信息,请参阅

数据要求

要连接数据,每个输入流必须具有以下内容

  • 一个或多个具有要连接的通用值的列.
    列不需要相同的标签,但它们确实需要具有可比较的值。

  • 相同的 分组键.
    join 包中的函数使用分组键来快速确定应将每个输入流中的哪些表配对并评估以进行连接操作。
    两个输入流都应具有相同的分组键。 如果没有,则您的连接操作可能找不到任何匹配的表,并将返回意外的输出。如果输入流的分组键不相同,请在使用 group() 连接它们之前,先对每个输入流重新分组。

    仅连接具有相同分组键实例的表。

连接谓词函数 (on)

join 包函数需要 on 参数来比较来自每个输入流(由 l(左)和 r(右)表示)的值,并返回 truefalse。返回 true 的行将被连接。此参数是一个谓词函数

(l, r) => l.column == r.column

连接输出函数 (as)

join 包函数join.time() 除外) 需要 as 参数来定义连接的输出架构。as 参数使用来自连接行的值返回一个新记录 - 左 (l) 和右 (r)。

(l, r) => ({l with name: r.name, location: r.location})

请勿修改分组键列

请勿修改分组键列。as 函数必须返回与两个输入流相同的分组键,才能成功执行连接。

执行连接操作

join 包支持以下连接类型和特殊用例

排查连接操作故障

有关使用 join 包时意外行为和错误的信息,请参阅排查连接操作故障


此页内容是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

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

有关更多信息,请查看