目录
一、单表数据Flux
二、单表聚合Flux
三、跨表数据聚合Flux
四、flux常用数据格式
一、单表数据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 |