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
有关更多信息,请参阅 函数类型签名。
参数
left
左侧输入流。默认为管道传递数据 (<-)。
right
(必需) 右侧输入流。
on
(必需) 接受左侧和右侧记录(分别为 l
和 r
),并返回布尔值的函数。
函数的主体必须是单个布尔表达式,由 l
的属性和 r
的属性之间的一个或多个相等性比较组成,每个比较都由 and
运算符链接在一起。
as
(必需) 接受左侧和右侧记录(分别为 l
和 r
),并返回记录的函数。返回的记录包含在最终输出中。
示例
执行左外连接
在左外连接中,l
保证不是默认记录,但 r
可能是默认记录。由于 r
更可能包含空值,因此输出记录几乎完全由 l
的属性构建,但 v_right
除外,我们预计 v_right
有时为空。
有关外连接行为的更多信息,请参阅 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}),
)
此页面是否对您有帮助?
感谢您的反馈!