以下は、中絶率を生成するクエリです。
filter_metric = (metric_name) => {
count = from(bucket: "application")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == metric_name and r["_field"] == "value")
|> filter(fn: (r) => contains(value: r["type"], set: ${types:json}))
|> filter(fn: (r) => contains(value: r["org"], set: ${org:json}))
|> keep(columns: ["_value", "_time"])
|> aggregateWindow(every: ${groupEventsBy}, fn: count, createEmpty: true)
return count
}
abortion_rate = () => {
disc_count = filter_metric(metric_name: "discontinued")
success_count = filter_metric(metric_name: "succeeded")
return join(tables: {d: disc_count, s: success_count}, on: ["_time"])
|> map(
fn: (r) => ({
_time: r._time,
_value: if r._value_d + r._value_s > 0 then float(v: r._value_d) / float(v: r._value_d + r._value_s) else float(v:0),
}),
)
}
abortion_rate()
「成功」と「廃止」にデータがあると、すべてがうまく機能します。フィルターを適用すると、テーブルの 1 つが空である可能性が高く、メトリックが生成されません。count
フィルター データ ストリームが空白の場合に集計関数のレコードを生成する方法はありますか。