目录
一、单表数据Flux
实例用量计费与定价计费Flux案例
用量计费查询:
from(bucket: "bucket2")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "huawei-instance")
|> filter(fn: (r) => r["_field"] == "count")
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "mean")
定价计费查询:
from(bucket: "bucket2")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "huawei-price-instance")
|> filter(fn: (r) => r["_field"] == "price")
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "mean")
二、单表聚合Flux
实例日用量合并月用量统计展示:
from(bucket: "bucket2")
|> range(start: -1mo, stop: now())
|> filter(fn: (r) => r["_measurement"] == "huawei-price-instance-hour")
|> filter(fn: (r) => r["_field"] == "price")
|> aggregateWindow(every: 1d, fn: sum, createEmpty: true)
|> yield(name: "sum")
三、跨表数据聚合Flux
注意:不同measurement数据合并使用join()函数,默认使用inner 合并,单measurement模型字段需要合并时,需保障不同的measurement需要具备相同的列。
功能示例:实例乘积聚合函数展示:
//使用 bucket2 的 huawei-instance 作为table一,取字段count的值,单位为5s
instanceCount = from(bucket: "bucket2")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "huawei-instance")
|> filter(fn: (r) => r["_field"] == "count")
|> truncateTimeColumn(unit:5s)
//使用 bucket2 的 huawei-price-instance 作为table2,取字段price的值
instancePrice = from(bucket: "bucket2")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "huawei-price-instance")
|> filter(fn: (r) => r["_field"] == "price")
|> truncateTimeColumn(unit:5s)
//合并table1与table2的指定字段的值作为一个新的结果输出,table1与table2需要具有相同的_time与instanceType属性
join(tables: {count:instanceCount, price:instancePrice}, on: ["_time","instanceType"])
|> map(fn: (r) => ({
_time: r._time,
instanceType: r.instanceType,
_value: r._value_count * r._value_price
}))
四、flux常用数据格式
flux常用时间单位:
单位 | 字段 |
---|---|
年 | y |
月 | mo |
日 | d |
时 | h |
分 | m |
秒 | s |