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() - - union(tables: [weekData, monthData]) - |> group(columns: ["device_wwn"]) - |> sort(columns: ["_time"], desc: false) - |> schema.fieldsAsCols() + |> range(start: -1mo, stop: -1w) + |> filter(fn: (r) => r["_measurement"] == "smart" ) + |> filter(fn: (r) => r["device_wwn"] == "0x5000c5002df89099" ) + |> 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") */