From f04970a42683acb99b15abe60cea793dd5183ef5 Mon Sep 17 00:00:00 2001 From: MSBrett Date: Thu, 22 May 2025 06:57:57 -0700 Subject: [PATCH 1/5] Total savings number is incorrect Fixes #1614 --- .../Shared.Dataset/definition/tables/Costs.tmdl | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/power-bi/kql/Shared.Dataset/definition/tables/Costs.tmdl b/src/power-bi/kql/Shared.Dataset/definition/tables/Costs.tmdl index a0b24d02b..254c6210e 100644 --- a/src/power-bi/kql/Shared.Dataset/definition/tables/Costs.tmdl +++ b/src/power-bi/kql/Shared.Dataset/definition/tables/Costs.tmdl @@ -251,18 +251,20 @@ table Costs column ChargePeriodEnd dataType: dateTime - formatString: General Date - sourceProviderType: datetimeoffset + formatString: Long Date + sourceProviderType: date lineageTag: 0d353195-2c13-4b43-ab97-8f691c508997 summarizeBy: none sourceColumn: ChargePeriodEnd annotation SummarizationSetBy = Automatic + annotation UnderlyingDateTimeDataType = Date + column ChargePeriodStart dataType: dateTime - formatString: Mmm d, yyyy - sourceProviderType: datetimeoffset + formatString: Long Date + sourceProviderType: date lineageTag: 015b4c1a-f072-4c68-8f1b-d5e10c54b97e summarizeBy: none sourceColumn: ChargePeriodStart @@ -271,6 +273,8 @@ table Costs annotation PBI_FormatHint = {"isCustom":true} + annotation UnderlyingDateTimeDataType = Date + column CommitmentDiscountCategory dataType: string sourceProviderType: nvarchar(max) @@ -1838,9 +1842,10 @@ table Costs ", [MaxRows=null, MaxSize=null, NoTruncate=null, AdditionalSetStatements=null]), // Sort columns alphabetically - Output = Table.ReorderColumns(Source, List.Sort(Table.ColumnNames(Source))) + Output = Table.ReorderColumns(Source, List.Sort(Table.ColumnNames(Source))), + #"Changed Type" = Table.TransformColumnTypes(Output,{{"ChargePeriodEnd", type date}, {"ChargePeriodStart", type date}}) in - Output + #"Changed Type" annotation PBI_NavigationStepName = Navigation From db83bd765f2805b08ace81c2e2e692c0b353fe59 Mon Sep 17 00:00:00 2001 From: MSBrett Date: Thu, 22 May 2025 07:53:09 -0700 Subject: [PATCH 2/5] document change --- docs/power-bi.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/power-bi.md b/docs/power-bi.md index 811675883..9f88d948f 100644 --- a/docs/power-bi.md +++ b/docs/power-bi.md @@ -197,3 +197,19 @@ Create a new or update an existing FinOps hub instance. 💜 Give feedback
+ +## Data Model Update: ChargePeriodStart Column for KQL based reports + +- **Column:** `ChargePeriodStart` +- **Old Data Type:** `datetimezone` +- **New Data Type:** `date` +- **Reason for Change:** + - To ensure correct grouping and aggregation by day in Power BI and downstream analytics tools. + - This change eliminates issues with multiple rows per day caused by time and timezone components. + +**Note:** + +- All queries, visuals, and documentation should now treat `ChargePeriodStart` as a `date` type. +- If you previously used DAX or Power Query workarounds to normalize this column, you can now use it directly for daily grouping. + +
From d3275f61a74b16a999bfbd14377417797f8cf169 Mon Sep 17 00:00:00 2001 From: MSBrett Date: Thu, 22 May 2025 08:46:55 -0700 Subject: [PATCH 3/5] changelog --- docs-mslearn/toolkit/changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs-mslearn/toolkit/changelog.md b/docs-mslearn/toolkit/changelog.md index 0dde1514c..776cdf984 100644 --- a/docs-mslearn/toolkit/changelog.md +++ b/docs-mslearn/toolkit/changelog.md @@ -50,6 +50,7 @@ _Released June 2, 2025_ - **Fixed** - Address new data quality issues with data ingested into Data Explorer: - Fix BillingPeriodStart and BillingPeriodEnd to always be at the start of the month. + - Change data types for ChargePeriodStart and ChargePeriodEnd from 'datetimezone' to 'date' in Power BI KQL reports to resolve invalid calculations in running total measures. ### [FinOps alerts](alerts/finops-alerts-overview.md) v0.11 From 1a2b3e4d181ed9f1aebbadf32e7b28b0c78a9a89 Mon Sep 17 00:00:00 2001 From: MSBrett Date: Thu, 22 May 2025 08:59:28 -0700 Subject: [PATCH 4/5] re-ordering of steps --- .../kql/Shared.Dataset/definition/tables/Costs.tmdl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/power-bi/kql/Shared.Dataset/definition/tables/Costs.tmdl b/src/power-bi/kql/Shared.Dataset/definition/tables/Costs.tmdl index 254c6210e..b22aab4ac 100644 --- a/src/power-bi/kql/Shared.Dataset/definition/tables/Costs.tmdl +++ b/src/power-bi/kql/Shared.Dataset/definition/tables/Costs.tmdl @@ -1840,12 +1840,12 @@ table Costs ", [MaxRows=null, MaxSize=null, NoTruncate=null, AdditionalSetStatements=null]), + #"Changed Type" = Table.TransformColumnTypes(Source,{{"ChargePeriodEnd", type date}, {"ChargePeriodStart", type date}}), // Sort columns alphabetically - Output = Table.ReorderColumns(Source, List.Sort(Table.ColumnNames(Source))), - #"Changed Type" = Table.TransformColumnTypes(Output,{{"ChargePeriodEnd", type date}, {"ChargePeriodStart", type date}}) + Output = Table.ReorderColumns(#"Changed Type", List.Sort(Table.ColumnNames(#"Changed Type"))) in - #"Changed Type" + Output annotation PBI_NavigationStepName = Navigation From 1d97b007620eb98731f649d0d982ce1c7ba2c5d0 Mon Sep 17 00:00:00 2001 From: MSBrett Date: Thu, 22 May 2025 09:06:53 -0700 Subject: [PATCH 5/5] short date format --- .../kql/Shared.Dataset/definition/tables/Costs.tmdl | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/power-bi/kql/Shared.Dataset/definition/tables/Costs.tmdl b/src/power-bi/kql/Shared.Dataset/definition/tables/Costs.tmdl index b22aab4ac..15e86fa84 100644 --- a/src/power-bi/kql/Shared.Dataset/definition/tables/Costs.tmdl +++ b/src/power-bi/kql/Shared.Dataset/definition/tables/Costs.tmdl @@ -251,7 +251,7 @@ table Costs column ChargePeriodEnd dataType: dateTime - formatString: Long Date + formatString: Short Date sourceProviderType: date lineageTag: 0d353195-2c13-4b43-ab97-8f691c508997 summarizeBy: none @@ -263,7 +263,7 @@ table Costs column ChargePeriodStart dataType: dateTime - formatString: Long Date + formatString: Short Date sourceProviderType: date lineageTag: 015b4c1a-f072-4c68-8f1b-d5e10c54b97e summarizeBy: none @@ -271,8 +271,6 @@ table Costs annotation SummarizationSetBy = Automatic - annotation PBI_FormatHint = {"isCustom":true} - annotation UnderlyingDateTimeDataType = Date column CommitmentDiscountCategory