Documentation

join.full() 函数

join.full() 在两个表流上执行完全外连接.

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

函数类型签名
(<-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 分别)的函数,并返回一个记录。 返回的记录包含在最终输出中。

示例

执行全外连接

在全外连接中,lr 可能是默认记录,但它们不会同时都是默认记录。

要获取输出记录的非空值,请检查lr以查看哪个包含所需的值。

下面的示例定义了一个针对as参数的函数,该函数适当地处理全外连接的不确定性。

v_leftv_right 仍然直接使用来自 lr 的值,因为我们预期它们在输出表中有时会是 null。

有关外连接行为的更多信息,请参见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.full(
    left: left,
    right: right,
    on: (l, r) => l.label == r.id and l._time == r._time,
    as: (l, r) => {
        time = if exists l._time then l._time else r._time
        label = if exists l.label then l.label else r.id

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

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