when i write below query getting "“invalid: error @21:8-21:35: stream[{A with _value: float, _value: float}] is not Divisible” error how to fix it. i need to divide the result of query1 by query2 both are groped by BCM_Modecommand.
distance_m_sum = from(bucket: “vehicle_bucket”)
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r[“_measurement”] == “vehicle_005”)
|> filter(fn: (r) => r[“_field”] == “distance_m”)
|> aggregateWindow(every: v.windowPeriod, fn: sum, createEmpty: false)
|> group()
|> sum(column: “_value”)
|> keep(columns: [“_value”])
Drive_energy = from(bucket: “vehicle_bucket”)
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r[“_measurement”] == “vehicle_005”)
|> filter(fn: (r) => r._field == “power_F” or r._field == “power_P”)
|> filter(fn: (r) => r[“BCM_ModeCommand_tag”] == “Park” or r[“BCM_ModeCommand_tag”] == “Ride” or r[“BCM_ModeCommand_tag”] == “Reverse” or r[“BCM_ModeCommand_tag”] == “Eco”)
|> pivot(rowKey: [“_time”], columnKey: [“_field”], valueColumn: “_value”)
|> map(fn: (r) => ({ r with _value: r.power_F + r.power_P }))
|> sum(column: “_value”)
|> map(fn: (r) => ({ r with _value: r._value / 3600.0 }))
Range= Drive_energy/distance_m_sum
//array.from(rows: [{Range: Range}]). please help me with this
I don’t think you can divide queries.
join both queries using join function, then use map to do the division of the columns containing the values you want to divide.
I tried with Join also getting “invalid: error calling function “join” @22:15-25:2: expected “drive_energy” to be stream type; instead got object” ths error. please help me with this
“drive_energy = from(bucket: “vehicle_bucket”)
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r[”_measurement"] == “vehicle_005”)
|> filter(fn: (r) => r._field == “power_F” or r._field == “power_P”)
|> filter(fn: (r) => r[“BCM_ModeCommand_tag”] == “Park” or r[“BCM_ModeCommand_tag”] == “Ride” or r[“BCM_ModeCommand_tag”] == “Reverse” or r[“BCM_ModeCommand_tag”] == “Eco”)
|> pivot(rowKey: [“_time”], columnKey: [“_field”], valueColumn: “_value”)
|> map(fn: (r) => ({ r with _value: r.power_F + r.power_P }))
|> sum(column: “_value”)
|> map(fn: (r) => ({ r with _value: r._value / 3600.0 }))
|> findRecord(fn: (key) => true, idx: 0)
distance_m_sum = from(bucket: “vehicle_bucket”)
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r[“_measurement”] == “vehicle_005”)
|> filter(fn: (r) => r[“_field”] == “distance_m”)
|> aggregateWindow(every: v.windowPeriod, fn: sum, createEmpty: false)
|> group()
|> sum(column: “_value”)
|> keep(columns: [“_value”])
|> findRecord(fn: (key) => true, idx: 0)
joined_data = join(
tables: {drive_energy: drive_energy, distance_m_sum: distance_m_sum},
on:[“_time”]
)
result = joined_data
|> map(fn: (r) => ({
_time: r._time,
Range: r.drive_energy._value / r.distance_m_sum._value
}))
|> keep(columns: [“_time”, “Range”])
|> findRecord(fn: (key) => true, idx: 0)
//array.from(rows: [result])
|> findRecord(fn: (key) => true, idx: 0)
Operates on tables but the result is not a table, remove this.
I tried by removing |> findRecord(fn: (key) => true, idx: 0) but still only joining is happening. I am not able to divide the values.
Drive_Energy= from(bucket: “vin010_test”)
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r[“_measurement”] == “${vin}”)
|> filter(fn: (r) => r[“Status_key”] == “active”)
|> filter(fn: (r) => r._field == “power_F” or r._field == “power_P”)
|> filter(fn: (r) => r[“BCM_ModeCommand_tag”] == “Eco” or r[“BCM_ModeCommand_tag”] == “Ride” or r[“BCM_ModeCommand_tag”] == “Dash” or r[“BCM_ModeCommand_tag”] == “Sonic”)
|> pivot(rowKey: [“_time”], columnKey: [“_field”], valueColumn: “_value”)
|> group(columns: [“BCM_ModeCommand_tag”])
|> map(fn: (r) => ({ r with _value: r.power_F + r.power_P }))
|> sum(column: “_value”)
|> map(fn: (r) => ({ r with _value: r._value / -3600.0 }))
//|> group()
|> yield(name: “Drive_Energy”)
Distance=from(bucket: “vin010_test”)
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r[“_measurement”] == “${vin}”)
|> filter(fn: (r) => r[“Status_key”] == “active”)
|> filter(fn: (r) => r[“_field”] == “distance_m”)
|> filter(fn: (r) => r[“BCM_ModeCommand_tag”] == “Eco” or r[“BCM_ModeCommand_tag”] == "Ride"or r[“BCM_ModeCommand_tag”] == “Dash” or r[“BCM_ModeCommand_tag”] == “Sonic”)
|> group(columns: [“BCM_ModeCommand_tag”])
|> aggregateWindow(every: v.windowPeriod, fn:sum, createEmpty: false)
|> yield(name: “Distance”)
joined_data = join(
tables: {Drive_Energy: Drive_Energy, Distance: Distance},
on:[“_time”]
)
result = joined_data
|> map(fn: (r) => ({
_time: r._time,
Range: r.Drive_Energy._value / r.Distance._value
}))
|> keep(columns: [“_time”, “Range”])