join() 函数
join()
基于具有相等值的列,将两个表流合并为单个输出流。比较列值时,空值不被视为相等。结果架构是输入架构的并集。结果组键是输入组键的并集。
已弃用
join()
已弃用,建议使用 join.inner()
。join
包提供对多种连接方法的支持。
输出数据
连接输出数据的架构和组键是输入架构和组键的并集。在两个输入流中都存在但未指定为连接列的列将使用 <column>_<table>
模式重命名,以防止连接表中的歧义。
Join 与 union 的区别
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"])
此页是否对您有帮助?
感谢您的反馈!