From 7709444c05834269c654418215a35d0ad5e87913 Mon Sep 17 00:00:00 2001 From: Roland Krummenacher Date: Wed, 28 Oct 2026 16:02:13 +0100 Subject: [PATCH 1/2] fix(power-bi): read gzip-compressed CSV exports in storage reports The raw export file filter in ftk_Storage only kept .parquet and .csv files, so Cost Management exports configured with gzip compression (part_*.csv.gz, extension .gz) were dropped and the reports showed no data. ReadContent already decompresses .gz files; let them through. Co-Authored-By: Claude Opus 5.5 --- docs-mslearn/toolkit/changelog.md | 1 + src/power-bi/storage/Shared.Dataset/definition/expressions.tmdl | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs-mslearn/toolkit/changelog.md b/docs-mslearn/toolkit/changelog.md index df5f21026..2c8154ad5 100644 --- a/docs-mslearn/toolkit/changelog.md +++ b/docs-mslearn/toolkit/changelog.md @@ -63,6 +63,7 @@ The following section lists features and enhancements that are currently in deve - Switched the InstanceSizeFlexibility table in the storage and KQL shared datasets from the retired `ccmstorageprod` AutofitComboMeterData.csv to the FinOps toolkit [Instance size flexibility](open-data.md#instance-size-flexibility) open data file, joined to reservation recommendations on the unique ARM SKU name ([#2090](https://github.com/microsoft/finops-toolkit/issues/2090)). - **Fixed** - Fixed the storage reports failing to refresh when the Cost Management export uses the FOCUS 1.2 schema. The FOCUS 1.2 branch searched for a column named `SkuMeterName` instead of `SkuMeter`, and the surrounding block assumed the FOCUS 1.0 columns (`x_InvoiceId`, `x_PricingCurrency`, `x_SkuMeterName`) were always present, which fails for a storage container that holds only FOCUS 1.2 exports. Added a lint rule that fails the build when a Power Query column name doesn't exist ([#2332](https://github.com/microsoft/finops-toolkit/issues/2332)). + - Fixed the storage reports showing no data when they connect directly to Cost Management exports that use gzip-compressed CSV (`.csv.gz`). The export file filter only kept `.parquet` and `.csv` files, so compressed files were skipped even though the reports can read them. ### [Optimization Engine](optimization-engine/overview.md) diff --git a/src/power-bi/storage/Shared.Dataset/definition/expressions.tmdl b/src/power-bi/storage/Shared.Dataset/definition/expressions.tmdl index 459620085..d254aa6a6 100644 --- a/src/power-bi/storage/Shared.Dataset/definition/expressions.tmdl +++ b/src/power-bi/storage/Shared.Dataset/definition/expressions.tmdl @@ -196,7 +196,7 @@ expression ftk_Storage = ``` ), {"Folder Path"} ), - FilterExpData = Table.SelectRows(FilterExports, each ([Extension] = ".parquet" or [Extension] = ".csv") and List.Contains(Table.Column(DatasetPaths, "Folder Path"), [Folder Path])), + FilterExpData = Table.SelectRows(FilterExports, each ([Extension] = ".parquet" or [Extension] = ".csv" or [Extension] = ".gz") and List.Contains(Table.Column(DatasetPaths, "Folder Path"), [Folder Path])), ExportMonth = Table.AddColumn(FilterExpData, "StartDate", each if data = "reservationrecommendations" then null else _toMonth([Segments]{[SegmentCount]-(if Text.Length([Segments]{[SegmentCount]-2}) = 17 then 2 else 3)}), type date) in ExportMonth otherwise null From 611615c7ea43e259f64f57b74bf673a79f4bed4e Mon Sep 17 00:00:00 2001 From: Roland Krummenacher Date: Wed, 28 Oct 2026 16:28:08 +0100 Subject: [PATCH 2/2] docs: trim gzip export changelog entry to the user-visible fix Co-Authored-By: Claude Opus 5.5 --- docs-mslearn/toolkit/changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs-mslearn/toolkit/changelog.md b/docs-mslearn/toolkit/changelog.md index 2c8154ad5..b8c7df26c 100644 --- a/docs-mslearn/toolkit/changelog.md +++ b/docs-mslearn/toolkit/changelog.md @@ -63,7 +63,7 @@ The following section lists features and enhancements that are currently in deve - Switched the InstanceSizeFlexibility table in the storage and KQL shared datasets from the retired `ccmstorageprod` AutofitComboMeterData.csv to the FinOps toolkit [Instance size flexibility](open-data.md#instance-size-flexibility) open data file, joined to reservation recommendations on the unique ARM SKU name ([#2090](https://github.com/microsoft/finops-toolkit/issues/2090)). - **Fixed** - Fixed the storage reports failing to refresh when the Cost Management export uses the FOCUS 1.2 schema. The FOCUS 1.2 branch searched for a column named `SkuMeterName` instead of `SkuMeter`, and the surrounding block assumed the FOCUS 1.0 columns (`x_InvoiceId`, `x_PricingCurrency`, `x_SkuMeterName`) were always present, which fails for a storage container that holds only FOCUS 1.2 exports. Added a lint rule that fails the build when a Power Query column name doesn't exist ([#2332](https://github.com/microsoft/finops-toolkit/issues/2332)). - - Fixed the storage reports showing no data when they connect directly to Cost Management exports that use gzip-compressed CSV (`.csv.gz`). The export file filter only kept `.parquet` and `.csv` files, so compressed files were skipped even though the reports can read them. + - Fixed the storage reports showing no data when they connect directly to Cost Management exports that use gzip-compressed CSV (`.csv.gz`). ### [Optimization Engine](optimization-engine/overview.md)