Documentation

join.left() 函数

join.left() 在两个表流上执行左外连接。

该函数调用 join.tables(),其中 method 参数设置为 "left"

函数类型签名
(<-left: stream[A], as: (l: A, r: B) => C, on: (l: A, r: B) => bool, right: stream[B]) => stream[C] where A: Record, B: Record, C: Record

有关更多信息,请参见 Function type signatures

参数

左输入流。默认是输送前的数据 (<-).

(必填) 正确的输入流。

开启

(必需) 一个接受左侧记录和右侧记录 (lr) 的函数,并返回一个布尔值。

函数的主体必须是一个单一的布尔表达式,由一个或多个相等比较组成,这些比较在l的一个属性和r的一个属性之间进行,且通过and操作符连接在一起。

作为

(必需) 一个接受左侧和右侧记录(lr 分别)的函数,并返回一个记录。 返回的记录包含在最终输出中。

示例

执行左外连接

在左外连接中, l 保证不是默认记录,而 r 可能是默认记录。因为 r 更有可能包含空值,所以输出记录几乎完全是由 l 的属性构建的,唯一的例外是 v_right,我们期望它有时是空的。

有关外连接行为的更多信息,请参见Outer joins部分,位于join包文档中。

import "array"
import "join"

left =
    array.from(
        rows: [
            {_time: 2022-01-01T00:00:00Z, _value: 1, label: "a"},
            {_time: 2022-01-01T00:00:00Z, _value: 2, label: "b"},
            {_time: 2022-01-01T00:00:00Z, _value: 3, label: "d"},
        ],
    )
right =
    array.from(
        rows: [
            {_time: 2022-01-01T00:00:00Z, _value: 0.4, id: "a"},
            {_time: 2022-01-01T00:00:00Z, _value: 0.5, id: "c"},
            {_time: 2022-01-01T00:00:00Z, _value: 0.6, id: "d"},
        ],
    )

join.left(
    left: left,
    right: right,
    on: (l, r) => l.label == r.id and l._time == r._time,
    as: (l, r) => ({_time: l._time, label: l.label, v_left: l._value, v_right: r._value}),
)

查看示例输出



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 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

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