Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion docs-mslearn/toolkit/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: FinOps toolkit changelog
description: Review the latest features and enhancements in the FinOps toolkit, including updates to FinOps hubs, Power BI reports, and more.
author: MSBrett
ms.author: brettwil
ms.date: 10/14/2026
ms.date: 10/15/2026
ms.topic: reference
ms.service: finops
ms.subservice: finops-toolkit
Expand Down Expand Up @@ -42,6 +42,7 @@ The following section lists features and enhancements that are currently in deve
- Switched dimension enrichment in the v1_0/v1_2 ingestion transforms (`PricingUnits`, `Regions`, `ResourceTypes`, `Services`) from `join` to the broadcast-optimized `lookup` operator and deduplicated the `Services` mapping per resource type to prevent cost row fan-out ([#2225](https://github.com/microsoft/finops-toolkit/pull/2225)).
- Fixed FinOps hub dashboard "Governance, policy, and risk" and "FinOps tools and services" links that landed on a 404 page by linking directly to the Microsoft Learn pages ([#2319](https://github.com/microsoft/finops-toolkit/issues/2319)).
- Fixed the v1_0 and v1_2 price transforms setting `x_CommitmentDiscountSpendEligibility` from reservation meters and `x_CommitmentDiscountUsageEligibility` from savings plan meters, the opposite of the FOCUS `CommitmentDiscountCategory` value the same transform assigns. The spend column now reports savings plan pricing and the usage column reports reservation pricing. Prices ingested after upgrading carry the corrected values; rows ingested earlier keep the old values until they are reingested ([#2279](https://github.com/microsoft/finops-toolkit/issues/2279)).
- Fixed `monthly-cost-change-percentage` returning `inf` when the prior month's cost was exactly zero. The divide-by-zero guard used `isempty()`, which is true for the null that `prev()` returns on the first row but false for `0.0`, and KQL evaluates `x / 0.0` as an infinity rather than raising. A zero prior month is reachable because `BilledCost` is zero on usage rows covered by a commitment discount ([#2323](https://github.com/microsoft/finops-toolkit/issues/2323)).

### [FinOps workbooks](workbooks/finops-workbooks-overview.md)

Expand Down
4 changes: 2 additions & 2 deletions src/queries/catalog/monthly-cost-change-percentage.kql
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@ Costs()
| extend PreviousBilledCost = prev(BilledCost)
| extend PreviousEffectiveCost = prev(EffectiveCost)
| project ChargePeriodStart,
BilledCostChangePct = iff(isempty(PreviousBilledCost), 0.0, toreal((BilledCost - PreviousBilledCost) * 100.0 / PreviousBilledCost)),
EffectiveCostChangePct = iff(isempty(PreviousEffectiveCost), 0.0, toreal((EffectiveCost - PreviousEffectiveCost) * 100.0 / PreviousEffectiveCost))
BilledCostChangePct = iff(isempty(PreviousBilledCost) or PreviousBilledCost == 0.0, 0.0, toreal((BilledCost - PreviousBilledCost) * 100.0 / PreviousBilledCost)),
EffectiveCostChangePct = iff(isempty(PreviousEffectiveCost) or PreviousEffectiveCost == 0.0, 0.0, toreal((EffectiveCost - PreviousEffectiveCost) * 100.0 / PreviousEffectiveCost))
Loading