From 886a6852d11e32c46e4851ebadd7fe346553b8c2 Mon Sep 17 00:00:00 2001 From: Michael Flanakin Date: Mon, 16 Feb 2026 19:24:34 -0800 Subject: [PATCH 1/2] Force common filters/group bys to be lowercase --- .../Analytics/scripts/IngestionSetup_v1_2.kql | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Analytics/scripts/IngestionSetup_v1_2.kql b/src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Analytics/scripts/IngestionSetup_v1_2.kql index 2b36351ea..665128d79 100644 --- a/src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Analytics/scripts/IngestionSetup_v1_2.kql +++ b/src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Analytics/scripts/IngestionSetup_v1_2.kql @@ -1721,8 +1721,8 @@ Recommendations_transform_v1_2() // | project ProviderName, - ResourceId, - ResourceName, + ResourceId = tolower(ResourceId), // Force lowercase for consistent grouping/filtering + ResourceName = tolower(ResourceName), // Force lowercase for consistent grouping/filtering ResourceType, SubAccountId = coalesce(SubAccountId, iff(isnotempty(SubscriptionId), strcat('/subscriptions/', SubscriptionId), '')), SubAccountName, @@ -1734,8 +1734,8 @@ Recommendations_transform_v1_2() x_RecommendationDate, x_RecommendationDescription, x_RecommendationDetails, - x_RecommendationId, // TODO: Set for reservation recommendations - x_ResourceGroupName, + x_RecommendationId = coalesce(x_RecommendationId, tolower(ResourceId)), // Force lowercase for consistent grouping/filtering + x_ResourceGroupName = tolower(x_ResourceGroupName), // Force lowercase for consistent grouping/filtering x_SourceName, x_SourceProvider, x_SourceType, From 1e31b20498cd02f17494d3b389bf664754aa6460 Mon Sep 17 00:00:00 2001 From: Michael Flanakin Date: Tue, 24 Feb 2026 03:34:55 -0800 Subject: [PATCH 2/2] Address PR #2012 feedback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove unintended coalesce(x_RecommendationId, ResourceId) fallback - Apply tolower() directly to x_RecommendationId for consistent casing - Restore TODO comment for reservation recommendations 🤖 Generated with [Claude Code](https://claude.ai/claude-code) Co-Authored-By: Claude --- .../Analytics/scripts/IngestionSetup_v1_2.kql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Analytics/scripts/IngestionSetup_v1_2.kql b/src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Analytics/scripts/IngestionSetup_v1_2.kql index 665128d79..ee4c04448 100644 --- a/src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Analytics/scripts/IngestionSetup_v1_2.kql +++ b/src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Analytics/scripts/IngestionSetup_v1_2.kql @@ -1734,8 +1734,8 @@ Recommendations_transform_v1_2() x_RecommendationDate, x_RecommendationDescription, x_RecommendationDetails, - x_RecommendationId = coalesce(x_RecommendationId, tolower(ResourceId)), // Force lowercase for consistent grouping/filtering - x_ResourceGroupName = tolower(x_ResourceGroupName), // Force lowercase for consistent grouping/filtering + x_RecommendationId = tolower(x_RecommendationId), // TODO: Set for reservation recommendations; force lowercase for consistent grouping/filtering + x_ResourceGroupName = tolower(x_ResourceGroupName), // Force lowercase for consistent grouping/filtering x_SourceName, x_SourceProvider, x_SourceType,