我使用以下查询从我的 InfluxDB 获取表
from(bucket: "external")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "Elektro")
|> filter(fn: (r) => r["_field"] == "Verbrauch")
|> filter(fn: (r) => contains(value: r["_zaehler"], set: strings.split(v: "IT A1,IT A2,IT A3,Carrier A,IT B1,IT B2,IT B3,Carrier B", t: ",")))
|> group(columns: ["_time"])
|> sum()
|> map(fn: (r) => ({ r with _field: "Summe IT" }))
|> group(columns: ["_time"])
然后使用完整的外部联接,我尝试将表本身联接起来(在 _time 列上):
join.full(
left: (
from(bucket: "external")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "Elektro")
|> filter(fn: (r) => r["_field"] == "Verbrauch")
|> filter(fn: (r) => contains(value: r["_zaehler"], set: strings.split(v: "IT A1,IT A2,IT A3,Carrier A,IT B1,IT B2,IT B3,Carrier B", t: ",")))
|> group(columns: ["_time"])
|> sum()
|> map(fn: (r) => ({ r with _field: "Summe IT" }))
|> group(columns: ["_time"])
|> yield(name: "left")
),
right:
(
from(bucket: "external")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "Elektro")
|> filter(fn: (r) => r["_field"] == "Verbrauch")
|> filter(fn: (r) => contains(value: r["_zaehler"], set: strings.split(v: "IT A1,IT A2,IT A3,Carrier A,IT B1,IT B2,IT B3,Carrier B", t: ",")))
|> group(columns: ["_time"])
|> sum()
|> map(fn: (r) => ({ r with _field: "Summe IT" }))
|> group(columns: ["_time"])
|> yield(name: "right")
),
on: (l, r) => (l._time == r._time),
as: (l, r) => ({l}),
)
但这会导致:
error @21:1-21:5: expected {
A with
full: (
as: (l: B, r: C) => {l: B},
left: stream[{D with _field: string}],
on: (l: {E with _time: F}, r: {G with _time: H}) => bool,
right: stream[{I with _field: string}],
) => stream[J],
} (record) but found (<-tables: K, ?method: string, ?on: [string]) => stream[L] (function)
表格的格式将保留,实际上,
["_zaehler"]
列会有不同的数组。
我尝试将代码中的
as
部分更改为 as: (l, r) => (l),
。
我还尝试删除 yield
并用 group()
替换最后一个分组。
另外,将字符串的分割更改为常规数组也没有帮助。
这些都不起作用。 我只是不明白为什么 join 返回一个函数(这至少是我解释错误消息的方式)。 我的输入数据对我来说似乎很好,但看起来这就是问题所在。
我自己弄清楚了。 我实际上忘记了
import "join"
。
不知怎的,忘记导入会导致这个晦涩的错误消息。
我希望其他遇到同样问题的人可以得到这个答案的帮助。