From 702518579b98c5f00cad985100f098304149d608 Mon Sep 17 00:00:00 2001 From: Jason Kulatunga Date: Wed, 4 May 2022 20:40:48 -0700 Subject: [PATCH] fixed summary query. --- .../pkg/database/scrutiny_repository.go | 49 +++++++++++++++---- ...tiny_repository_device_smart_attributes.go | 39 +++++++++------ 2 files changed, 63 insertions(+), 25 deletions(-) diff --git a/webapp/backend/pkg/database/scrutiny_repository.go b/webapp/backend/pkg/database/scrutiny_repository.go index a285091..c35923f 100644 --- a/webapp/backend/pkg/database/scrutiny_repository.go +++ b/webapp/backend/pkg/database/scrutiny_repository.go @@ -252,15 +252,46 @@ func (sr *scrutinyRepository) GetSummary(ctx context.Context) (map[string]*model // Get parser flux query result //appConfig.GetString("web.influxdb.bucket") queryStr := fmt.Sprintf(` - import "influxdata/influxdb/schema" - from(bucket: "%s") - |> range(start: -1y, stop: now()) - |> filter(fn: (r) => r["_measurement"] == "smart" ) - |> filter(fn: (r) => r["_field"] == "temp" or r["_field"] == "power_on_hours" or r["_field"] == "date") - |> last() - |> schema.fieldsAsCols() - |> group(columns: ["device_wwn"]) - |> yield(name: "last") + import "influxdata/influxdb/schema" + bucketBaseName = "%s" + + dailyData = from(bucket: bucketBaseName) + |> range(start: -10y, stop: now()) + |> filter(fn: (r) => r["_measurement"] == "smart" ) + |> filter(fn: (r) => r["_field"] == "temp" or r["_field"] == "power_on_hours" or r["_field"] == "date") + |> last() + |> schema.fieldsAsCols() + |> group(columns: ["device_wwn"]) + + weeklyData = from(bucket: bucketBaseName + "_weekly") + |> range(start: -10y, stop: now()) + |> filter(fn: (r) => r["_measurement"] == "smart" ) + |> filter(fn: (r) => r["_field"] == "temp" or r["_field"] == "power_on_hours" or r["_field"] == "date") + |> last() + |> schema.fieldsAsCols() + |> group(columns: ["device_wwn"]) + + monthlyData = from(bucket: bucketBaseName + "_monthly") + |> range(start: -10y, stop: now()) + |> filter(fn: (r) => r["_measurement"] == "smart" ) + |> filter(fn: (r) => r["_field"] == "temp" or r["_field"] == "power_on_hours" or r["_field"] == "date") + |> last() + |> schema.fieldsAsCols() + |> group(columns: ["device_wwn"]) + + yearlyData = from(bucket: bucketBaseName + "_yearly") + |> range(start: -10y, stop: now()) + |> filter(fn: (r) => r["_measurement"] == "smart" ) + |> filter(fn: (r) => r["_field"] == "temp" or r["_field"] == "power_on_hours" or r["_field"] == "date") + |> last() + |> schema.fieldsAsCols() + |> group(columns: ["device_wwn"]) + + union(tables: [dailyData, weeklyData, monthlyData, yearlyData]) + |> sort(columns: ["_time"], desc: false) + |> group(columns: ["device_wwn"]) + |> last(column: "device_wwn") + |> yield(name: "last") `, sr.appConfig.GetString("web.influxdb.bucket"), ) diff --git a/webapp/backend/pkg/database/scrutiny_repository_device_smart_attributes.go b/webapp/backend/pkg/database/scrutiny_repository_device_smart_attributes.go index eaa1852..0479986 100644 --- a/webapp/backend/pkg/database/scrutiny_repository_device_smart_attributes.go +++ b/webapp/backend/pkg/database/scrutiny_repository_device_smart_attributes.go @@ -108,25 +108,32 @@ func (sr *scrutinyRepository) aggregateSmartAttributesQuery(wwn string, duration import "influxdata/influxdb/schema" weekData = from(bucket: "metrics") - |> range(start: -1w, stop: now()) - |> filter(fn: (r) => r["_measurement"] == "smart" ) - |> filter(fn: (r) => r["device_wwn"] == "%s" ) - |> aggregateWindow(every: 1h, fn: mean, createEmpty: false) - |> group(columns: ["device_wwn"]) - |> toInt() + |> range(start: -1w, stop: now()) + |> filter(fn: (r) => r["_measurement"] == "smart" ) + |> filter(fn: (r) => r["device_wwn"] == "0x5000c5002df89099" ) + |> schema.fieldsAsCols() monthData = from(bucket: "metrics_weekly") - |> range(start: -1mo, stop: now()) - |> filter(fn: (r) => r["_measurement"] == "smart" ) - |> filter(fn: (r) => r["device_wwn"] == "%s" ) - |> aggregateWindow(every: 1h, fn: mean, createEmpty: false) - |> group(columns: ["device_wwn"]) - |> toInt() + |> range(start: -1mo, stop: -1w) + |> filter(fn: (r) => r["_measurement"] == "smart" ) + |> filter(fn: (r) => r["device_wwn"] == "0x5000c5002df89099" ) + |> schema.fieldsAsCols() - union(tables: [weekData, monthData]) - |> group(columns: ["device_wwn"]) - |> sort(columns: ["_time"], desc: false) - |> schema.fieldsAsCols() + yearData = from(bucket: "metrics_monthly") + |> range(start: -1y, stop: -1mo) + |> filter(fn: (r) => r["_measurement"] == "smart" ) + |> filter(fn: (r) => r["device_wwn"] == "0x5000c5002df89099" ) + |> schema.fieldsAsCols() + + foreverData = from(bucket: "metrics_yearly") + |> range(start: -10y, stop: -1y) + |> filter(fn: (r) => r["_measurement"] == "smart" ) + |> filter(fn: (r) => r["device_wwn"] == "0x5000c5002df89099" ) + |> schema.fieldsAsCols() + + union(tables: [weekData, monthData, yearData, foreverData]) + |> sort(columns: ["_time"], desc: false) + |> yield(name: "last") */