join.right() 函数
join.right() 在两个表流上执行右外连接。
该函数调用 join.tables(),将 method 参数设置为 "right"。
函数类型签名
(<-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。
参数
左
左输入流。默认是管道转发数据 (<-).
右侧
(必填) 右输入流。
开启
(必需)
一个接受左侧和右侧记录(l和r)的函数,并返回一个布尔值。
函数的主体必须是一个单一的布尔表达式,由一个或多个属性之间的相等比较组成,l 和 r的属性,通过 and 运算符连接在一起。
作为
(必需)
接收左侧和右侧记录的函数(l 和 r),并返回一个记录。
返回的记录包含在最终输出中。
示例
执行右外连接
在右外连接中,r 被保证不是默认记录,但 l 可能是默认记录。因为 l 更可能包含空值,输出记录几乎完全由 r 的属性构成,除了 v_left,我们期望它有时为空。
有关外连接行为的更多信息,请参阅外连接部分在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.right(
left: left,
right: right,
on: (l, r) => l.label == r.id and l._time == r._time,
as: (l, r) => ({_time: r._time, label: r.id, v_left: l._value, v_right: r._value}),
)