文档文档

join() 函数

join() 根据具有相等值的列将两个表流合并为单个输出流。比较列值时,不考虑空值。结果模式是输入模式的并集。结果组键是输入组键的并集。

已弃用

join() 已弃用,推荐使用 join.inner()join 提供了对多种连接方法的支持。

输出数据

合并输出数据的模式和组键是输入模式和组键的并集。存在于两个输入流中且未指定为连接列的列使用模式 <column>_<table> 重命名,以防止在连接表中产生歧义。

连接与并集

join() 基于一个或多个指定列中的公共值创建新行。输出行还包含每个连接流的不同值。union() 不修改行中的数据,但将表流合并为单个表流,并根据现有的组键对数据进行分组。

函数类型签名
(<-tables: A, ?method: string, ?on: [string]) => stream[B] where A: Record, B: Record

有关更多信息,请参阅 函数类型签名

参数

tables

包含要连接的两个输入流的记录。

on

要连接的列列表。

method

连接方法。默认为 inner

支持的方法:

  • inner

示例

连接两个表流

import "generate"

t1 =
    generate.from(
        count: 4,
        fn: (n) => n + 1,
        start: 2021-01-01T00:00:00Z,
        stop: 2021-01-05T00:00:00Z,
    )
        |> set(key: "tag", value: "foo")

t2 =
    generate.from(
        count: 4,
        fn: (n) => n * (-1),
        start: 2021-01-01T00:00:00Z,
        stop: 2021-01-05T00:00:00Z,
    )
        |> set(key: "tag", value: "foo")

join(tables: {t1: t1, t2: t2}, on: ["_time", "tag"])

查看示例输出

从不同的数据源连接数据

import "sql"

sqlData =
    sql.from(
        driverName: "postgres",
        dataSourceName: "postgresql://username:password@localhost:5432",
        query: "SELECT * FROM example_table",
    )

tsData =
    from(bucket: "example-bucket")
        |> range(start: -1h)
        |> filter(fn: (r) => r._measurement == "example-measurement")
        |> filter(fn: (r) => exists r.sensorID)

join(tables: {sql: sqlData, ts: tsData}, on: ["_time", "sensorID"])

这个页面有帮助吗?

感谢您的反馈!


Flux的未来

Flux正在进入维护模式。您无需更改代码即可继续像现在一样使用它。

阅读更多

InfluxDB v3增强和InfluxDB集群版现已正式发布

新功能包括更快的查询性能和管理工具,这些功能推动了InfluxDB v3产品线的进步。InfluxDB集群版现已正式发布。

InfluxDB v3性能和功能

InfluxDB v3产品线在查询性能方面取得了重大改进,并提供了新的管理工具。这些改进包括用于监控InfluxDB集群健康的操作仪表板,InfluxDB Cloud专用中的单一登录(SSO)支持以及用于令牌和数据库的新管理API。

了解新的v3增强功能


InfluxDB集群版正式发布

InfluxDB集群版现已正式发布,为您在自行管理的堆栈中提供InfluxDB v3的功能。

与我们讨论InfluxDB集群版