diff --git a/docs/_resources/changelog.md b/docs/_resources/changelog.md
index 64cee392a..11983294d 100644
--- a/docs/_resources/changelog.md
+++ b/docs/_resources/changelog.md
@@ -142,6 +142,8 @@ Legend:
>
> - [Pricing units](../_reporting/data/README.md#-pricing-units)
> 1. Added handling for the following new UnitOfMeasure values: "1 /Minute", "10 PiB/Hour", "100000 /Month", "Text".
+> - [Regions](../_reporting/data/README.md#ī¸-regions)
+> 1. Added the following new region values: "asiapacific", "australia", azure "stack", "eastsu2", "gbs", germany west "central", "japan", sweden "central", "unitedstates", us dod "central", us dod "east", us gov "iowa", us gov "virginia", "us2", "usa", "usv".
>
> âī¸ Changed
>
diff --git a/src/open-data/README.md b/src/open-data/README.md
index 4083546eb..487d90148 100644
--- a/src/open-data/README.md
+++ b/src/open-data/README.md
@@ -99,15 +99,47 @@ Meters
## đēī¸ Regions
- đ
Updated: Jun 1, 2024
+ đ
Updated: Aug 22, 2024
âĄī¸ Source: Commerce Platform Data Model team
-The [Regions.csv](./Regions.csv) file contains data from several internal sources. We shouldn't need to update this file as Cost Management data is standardizing on Azure regions.
+The [Regions.csv](./Regions.csv) file contains the list of all unique `ResourceLocation` and `ResourceLocationNormalized` values. This data will need to be updated periodically as new regions are added.
+
+Use the following query to update the data:
+
+```kql
+let oldValues = externaldata(OriginalValue:string, RegionId:string, RegionName:string,) [@"https://raw.githubusercontent.com/microsoft/finops-toolkit/dev/src/open-data/Regions.csv"] with (format="csv", ignoreFirstRecord=true);
+let newValues = union cluster('.kusto.windows.net').database('*'). | where ResourceType != 'Microsoft.Security/securityConnectors' | distinct ResourceLocation, ResourceLocationNormalized;
+newValues | project OriginalValue = tolower(ResourceLocation)
+| union (newValues | project OriginalValue = tolower(ResourceLocationNormalized))
+| where isnotempty(OriginalValue) and OriginalValue !in ('null', 'true', 'false', 'test', 'unknown', 'zone1', 'zone 1')
+| distinct OriginalValue
+| where OriginalValue !in ((oldValues | distinct OriginalValue))
+| union (oldValues)
+| as reg
+| extend regionWithoutLetter = extract(@'^([a-z ]+[1-2])[a-c]$', 1, OriginalValue)
+| extend regionWithoutNumber = extract(@'^([a-z]+( [a-z]+)*)[1-3][a-c]?$', 1, OriginalValue)
+| extend regionWithoutSpace = case(
+ OriginalValue contains ' ', replace_string(OriginalValue, ' ', ''),
+ OriginalValue == 'eastsu2', 'eastus2',
+ OriginalValue == 'gbs', 'uksouth',
+ OriginalValue == 'usa', 'usgovarizona',
+ OriginalValue == 'usv', 'usgovvirginia',
+ '')
+// DEBUG: | where isempty(regionWithoutLetter) or regionWithoutLetter !in ((reg | distinct OriginalValue))
+// DEBUG: | where isempty(regionWithoutNumber) or regionWithoutNumber !in ((reg | distinct OriginalValue))
+| join kind=leftouter (reg) on $left.regionWithoutLetter == $right.OriginalValue
+| join kind=leftouter (reg) on $left.regionWithoutNumber == $right.OriginalValue
+| join kind=leftouter (reg) on $left.regionWithoutSpace == $right.OriginalValue
+| extend RegionId = case(isnotempty(RegionId), RegionId, isnotempty(RegionId1), RegionId1, isnotempty(RegionId2), RegionId2, isnotempty(RegionId3), RegionId3, RegionId)
+| extend RegionName = case(isnotempty(RegionName), RegionName, isnotempty(RegionName1), RegionName1, isnotempty(RegionName2), RegionName2, isnotempty(RegionName3), RegionName3, RegionName)
+| project OriginalValue, RegionId, RegionName
+| order by OriginalValue asc
+```
-> âšī¸ _Internal only: Contact the CPDM PM team for any updates._
+After updating the list of available original values, other columns must be manually populated.
diff --git a/src/open-data/Regions.csv b/src/open-data/Regions.csv
index cf2a9421e..ed1d5dc16 100644
--- a/src/open-data/Regions.csv
+++ b/src/open-data/Regions.csv
@@ -11,6 +11,7 @@ ap southeast,southeastasia,Southeast Asia
apeast,eastasia,East Asia
apsoutheast,southeastasia,Southeast Asia
asiaeast,eastasia,East Asia
+asiapacific,asiapacific,Asia Pacific
asiasoutheast,southeastasia,Southeast Asia
at east,austriaeast,Austria East
ate,austriaeast,Austria East
@@ -23,6 +24,7 @@ aucentral2,australiacentral2,Australia Central 2
aueast,australiaeast,Australia East
auh,uaecentral,UAE Central
ausoutheast,australiasoutheast,Australia Southeast
+australia,australia,Australia
australia east,australiaeast,Australia East
australia southeast,australiasoutheast,Australia Southeast
australia_east,australiaeast,Australia East
@@ -34,6 +36,7 @@ australiaeast,australiaeast,Australia East
australiasoutheast,australiasoutheast,Australia Southeast
austriae,austriaeast,Austria East
austriaeast,austriaeast,Austria East
+azure stack,azurestack,Azure Stack
azurestack,azurestack,Azure Stack
bd,usdodeast,USDoD East
be central,belgiumcentral,Belgium Central
@@ -140,6 +143,7 @@ east_asia,eastasia,East Asia
eastasia,eastasia,East Asia
eastcanada,canadaeast,Canada East
eastjapan,japaneast,Japan East
+eastsu2,eastus2,East US 2
eastus,eastus,East US
eastus2,eastus2,East US 2
eastus2euap,eastus2euap,East US 2 EUAP
@@ -173,6 +177,8 @@ francesouth,francesouth,France South
frc,francecentral,France Central
frcentral,francecentral,France Central
frsouth,francesouth,France South
+gbs,uksouth,UK South
+germany west central,germanywestcentral,Germany West Central
germanycentral,germanycentral,Germany Central
germanyn,germanynorth,Germany North
germanynorth,germanynorth,Germany North
@@ -220,6 +226,7 @@ itn,italynorth,Italy North
ja east,japaneast,Japan East
ja west,japanwest,Japan West
jaeast,japaneast,Japan East
+japan,japan,Japan
japan east,japaneast,Japan East
japan west,japanwest,Japan West
japan_east,japaneast,Japan East
@@ -353,6 +360,7 @@ southindia,southindia,South India
southsoutheastasia,southeastasia,Southeast Asia
spainc,spaincentral,Spain Central
spaincentral,spaincentral,Spain Central
+sweden central,swedencentral,Sweden Central
swedenc,swedencentral,Sweden Central
swedencentral,swedencentral,Sweden Central
swedens,swedensouth,Sweden South
@@ -388,12 +396,17 @@ ukwest,ukwest,UK West
unassigned,global,Global
unitedkingdomsouth,uksouth,UK South
unitedkingdomsouth2,uksouth,UK South
+unitedstates,unitedstates,United States
us central,centralus,Central US
+us dod central,usdodcentral,USDoD Central
+us dod east,usdodeast,USDoD East
us east,eastus,East US
us east 2,eastus2,East US 2
us east 3,eastus3,East US 3
us gov az,usgovarizona,USGov Arizona
+us gov iowa,usgoviowa,USGov Iowa
us gov tx,usgovtexas,USGov Texas
+us gov virginia,usgovvirginia,USGov Virginia
us north central,northcentralus,North Central US
us sec east,usseceast,USSec East
us sec west,ussecwest,USSec West
@@ -403,9 +416,10 @@ us west,westus,West US
us west 2,westus2,West US 2
us west 3,westus3,West US 3
us west central,westcentralus,West Central US
+us2,eastus2,East US 2
us_east,eastus,East US
us_west,westus,West US
-us2,eastus2,East US 2
+usa,usgovarizona,USGov Arizona
uscentral,centralus,Central US
usdodcentral,usdodcentral,USDoD Central
usdodeast,usdodeast,USDoD East
@@ -446,6 +460,7 @@ usstagesc,southcentralusstg,South Central US STG
ussw,ussecwest,USSec West
usswc,ussecwestcentral,USSec West Central
ustsc,southcentralusstg,South Central US STG
+usv,usgovvirginia,USGov Virginia
usw3,westus3,West US 3
uswest,westus,West US
uswest2,westus2,West US 2
diff --git a/src/powershell/Private/Get-OpenDataRegion.ps1 b/src/powershell/Private/Get-OpenDataRegion.ps1
index 6dc619224..0b6e554ea 100644
--- a/src/powershell/Private/Get-OpenDataRegion.ps1
+++ b/src/powershell/Private/Get-OpenDataRegion.ps1
@@ -17,6 +17,7 @@ function Get-OpenDataRegion
,[PSCustomObject]@{ OriginalValue = 'apeast'; RegionId = 'eastasia'; RegionName = 'East Asia'; }
,[PSCustomObject]@{ OriginalValue = 'apsoutheast'; RegionId = 'southeastasia'; RegionName = 'Southeast Asia'; }
,[PSCustomObject]@{ OriginalValue = 'asiaeast'; RegionId = 'eastasia'; RegionName = 'East Asia'; }
+ ,[PSCustomObject]@{ OriginalValue = 'asiapacific'; RegionId = 'asiapacific'; RegionName = 'Asia Pacific'; }
,[PSCustomObject]@{ OriginalValue = 'asiasoutheast'; RegionId = 'southeastasia'; RegionName = 'Southeast Asia'; }
,[PSCustomObject]@{ OriginalValue = 'at east'; RegionId = 'austriaeast'; RegionName = 'Austria East'; }
,[PSCustomObject]@{ OriginalValue = 'ate'; RegionId = 'austriaeast'; RegionName = 'Austria East'; }
@@ -29,6 +30,7 @@ function Get-OpenDataRegion
,[PSCustomObject]@{ OriginalValue = 'aueast'; RegionId = 'australiaeast'; RegionName = 'Australia East'; }
,[PSCustomObject]@{ OriginalValue = 'auh'; RegionId = 'uaecentral'; RegionName = 'UAE Central'; }
,[PSCustomObject]@{ OriginalValue = 'ausoutheast'; RegionId = 'australiasoutheast'; RegionName = 'Australia Southeast'; }
+ ,[PSCustomObject]@{ OriginalValue = 'australia'; RegionId = 'australia'; RegionName = 'Australia'; }
,[PSCustomObject]@{ OriginalValue = 'australia east'; RegionId = 'australiaeast'; RegionName = 'Australia East'; }
,[PSCustomObject]@{ OriginalValue = 'australia southeast'; RegionId = 'australiasoutheast'; RegionName = 'Australia Southeast'; }
,[PSCustomObject]@{ OriginalValue = 'australia_east'; RegionId = 'australiaeast'; RegionName = 'Australia East'; }
@@ -40,6 +42,7 @@ function Get-OpenDataRegion
,[PSCustomObject]@{ OriginalValue = 'australiasoutheast'; RegionId = 'australiasoutheast'; RegionName = 'Australia Southeast'; }
,[PSCustomObject]@{ OriginalValue = 'austriae'; RegionId = 'austriaeast'; RegionName = 'Austria East'; }
,[PSCustomObject]@{ OriginalValue = 'austriaeast'; RegionId = 'austriaeast'; RegionName = 'Austria East'; }
+ ,[PSCustomObject]@{ OriginalValue = 'azure stack'; RegionId = 'azurestack'; RegionName = 'Azure Stack'; }
,[PSCustomObject]@{ OriginalValue = 'azurestack'; RegionId = 'azurestack'; RegionName = 'Azure Stack'; }
,[PSCustomObject]@{ OriginalValue = 'bd'; RegionId = 'usdodeast'; RegionName = 'USDoD East'; }
,[PSCustomObject]@{ OriginalValue = 'be central'; RegionId = 'belgiumcentral'; RegionName = 'Belgium Central'; }
@@ -146,6 +149,7 @@ function Get-OpenDataRegion
,[PSCustomObject]@{ OriginalValue = 'eastasia'; RegionId = 'eastasia'; RegionName = 'East Asia'; }
,[PSCustomObject]@{ OriginalValue = 'eastcanada'; RegionId = 'canadaeast'; RegionName = 'Canada East'; }
,[PSCustomObject]@{ OriginalValue = 'eastjapan'; RegionId = 'japaneast'; RegionName = 'Japan East'; }
+ ,[PSCustomObject]@{ OriginalValue = 'eastsu2'; RegionId = 'eastus2'; RegionName = 'East US 2'; }
,[PSCustomObject]@{ OriginalValue = 'eastus'; RegionId = 'eastus'; RegionName = 'East US'; }
,[PSCustomObject]@{ OriginalValue = 'eastus2'; RegionId = 'eastus2'; RegionName = 'East US 2'; }
,[PSCustomObject]@{ OriginalValue = 'eastus2euap'; RegionId = 'eastus2euap'; RegionName = 'East US 2 EUAP'; }
@@ -179,6 +183,8 @@ function Get-OpenDataRegion
,[PSCustomObject]@{ OriginalValue = 'frc'; RegionId = 'francecentral'; RegionName = 'France Central'; }
,[PSCustomObject]@{ OriginalValue = 'frcentral'; RegionId = 'francecentral'; RegionName = 'France Central'; }
,[PSCustomObject]@{ OriginalValue = 'frsouth'; RegionId = 'francesouth'; RegionName = 'France South'; }
+ ,[PSCustomObject]@{ OriginalValue = 'gbs'; RegionId = 'uksouth'; RegionName = 'UK South'; }
+ ,[PSCustomObject]@{ OriginalValue = 'germany west central'; RegionId = 'germanywestcentral'; RegionName = 'Germany West Central'; }
,[PSCustomObject]@{ OriginalValue = 'germanycentral'; RegionId = 'germanycentral'; RegionName = 'Germany Central'; }
,[PSCustomObject]@{ OriginalValue = 'germanyn'; RegionId = 'germanynorth'; RegionName = 'Germany North'; }
,[PSCustomObject]@{ OriginalValue = 'germanynorth'; RegionId = 'germanynorth'; RegionName = 'Germany North'; }
@@ -226,6 +232,7 @@ function Get-OpenDataRegion
,[PSCustomObject]@{ OriginalValue = 'ja east'; RegionId = 'japaneast'; RegionName = 'Japan East'; }
,[PSCustomObject]@{ OriginalValue = 'ja west'; RegionId = 'japanwest'; RegionName = 'Japan West'; }
,[PSCustomObject]@{ OriginalValue = 'jaeast'; RegionId = 'japaneast'; RegionName = 'Japan East'; }
+ ,[PSCustomObject]@{ OriginalValue = 'japan'; RegionId = 'japan'; RegionName = 'Japan'; }
,[PSCustomObject]@{ OriginalValue = 'japan east'; RegionId = 'japaneast'; RegionName = 'Japan East'; }
,[PSCustomObject]@{ OriginalValue = 'japan west'; RegionId = 'japanwest'; RegionName = 'Japan West'; }
,[PSCustomObject]@{ OriginalValue = 'japan_east'; RegionId = 'japaneast'; RegionName = 'Japan East'; }
@@ -359,6 +366,7 @@ function Get-OpenDataRegion
,[PSCustomObject]@{ OriginalValue = 'southsoutheastasia'; RegionId = 'southeastasia'; RegionName = 'Southeast Asia'; }
,[PSCustomObject]@{ OriginalValue = 'spainc'; RegionId = 'spaincentral'; RegionName = 'Spain Central'; }
,[PSCustomObject]@{ OriginalValue = 'spaincentral'; RegionId = 'spaincentral'; RegionName = 'Spain Central'; }
+ ,[PSCustomObject]@{ OriginalValue = 'sweden central'; RegionId = 'swedencentral'; RegionName = 'Sweden Central'; }
,[PSCustomObject]@{ OriginalValue = 'swedenc'; RegionId = 'swedencentral'; RegionName = 'Sweden Central'; }
,[PSCustomObject]@{ OriginalValue = 'swedencentral'; RegionId = 'swedencentral'; RegionName = 'Sweden Central'; }
,[PSCustomObject]@{ OriginalValue = 'swedens'; RegionId = 'swedensouth'; RegionName = 'Sweden South'; }
@@ -394,12 +402,17 @@ function Get-OpenDataRegion
,[PSCustomObject]@{ OriginalValue = 'unassigned'; RegionId = 'global'; RegionName = 'Global'; }
,[PSCustomObject]@{ OriginalValue = 'unitedkingdomsouth'; RegionId = 'uksouth'; RegionName = 'UK South'; }
,[PSCustomObject]@{ OriginalValue = 'unitedkingdomsouth2'; RegionId = 'uksouth'; RegionName = 'UK South'; }
+ ,[PSCustomObject]@{ OriginalValue = 'unitedstates'; RegionId = 'unitedstates'; RegionName = 'United States'; }
,[PSCustomObject]@{ OriginalValue = 'us central'; RegionId = 'centralus'; RegionName = 'Central US'; }
+ ,[PSCustomObject]@{ OriginalValue = 'us dod central'; RegionId = 'usdodcentral'; RegionName = 'USDoD Central'; }
+ ,[PSCustomObject]@{ OriginalValue = 'us dod east'; RegionId = 'usdodeast'; RegionName = 'USDoD East'; }
,[PSCustomObject]@{ OriginalValue = 'us east'; RegionId = 'eastus'; RegionName = 'East US'; }
,[PSCustomObject]@{ OriginalValue = 'us east 2'; RegionId = 'eastus2'; RegionName = 'East US 2'; }
,[PSCustomObject]@{ OriginalValue = 'us east 3'; RegionId = 'eastus3'; RegionName = 'East US 3'; }
,[PSCustomObject]@{ OriginalValue = 'us gov az'; RegionId = 'usgovarizona'; RegionName = 'USGov Arizona'; }
+ ,[PSCustomObject]@{ OriginalValue = 'us gov iowa'; RegionId = 'usgoviowa'; RegionName = 'USGov Iowa'; }
,[PSCustomObject]@{ OriginalValue = 'us gov tx'; RegionId = 'usgovtexas'; RegionName = 'USGov Texas'; }
+ ,[PSCustomObject]@{ OriginalValue = 'us gov virginia'; RegionId = 'usgovvirginia'; RegionName = 'USGov Virginia'; }
,[PSCustomObject]@{ OriginalValue = 'us north central'; RegionId = 'northcentralus'; RegionName = 'North Central US'; }
,[PSCustomObject]@{ OriginalValue = 'us sec east'; RegionId = 'usseceast'; RegionName = 'USSec East'; }
,[PSCustomObject]@{ OriginalValue = 'us sec west'; RegionId = 'ussecwest'; RegionName = 'USSec West'; }
@@ -409,9 +422,10 @@ function Get-OpenDataRegion
,[PSCustomObject]@{ OriginalValue = 'us west 2'; RegionId = 'westus2'; RegionName = 'West US 2'; }
,[PSCustomObject]@{ OriginalValue = 'us west 3'; RegionId = 'westus3'; RegionName = 'West US 3'; }
,[PSCustomObject]@{ OriginalValue = 'us west central'; RegionId = 'westcentralus'; RegionName = 'West Central US'; }
+ ,[PSCustomObject]@{ OriginalValue = 'us2'; RegionId = 'eastus2'; RegionName = 'East US 2'; }
,[PSCustomObject]@{ OriginalValue = 'us_east'; RegionId = 'eastus'; RegionName = 'East US'; }
,[PSCustomObject]@{ OriginalValue = 'us_west'; RegionId = 'westus'; RegionName = 'West US'; }
- ,[PSCustomObject]@{ OriginalValue = 'us2'; RegionId = 'eastus2'; RegionName = 'East US 2'; }
+ ,[PSCustomObject]@{ OriginalValue = 'usa'; RegionId = 'usgovarizona'; RegionName = 'USGov Arizona'; }
,[PSCustomObject]@{ OriginalValue = 'uscentral'; RegionId = 'centralus'; RegionName = 'Central US'; }
,[PSCustomObject]@{ OriginalValue = 'usdodcentral'; RegionId = 'usdodcentral'; RegionName = 'USDoD Central'; }
,[PSCustomObject]@{ OriginalValue = 'usdodeast'; RegionId = 'usdodeast'; RegionName = 'USDoD East'; }
@@ -452,6 +466,7 @@ function Get-OpenDataRegion
,[PSCustomObject]@{ OriginalValue = 'ussw'; RegionId = 'ussecwest'; RegionName = 'USSec West'; }
,[PSCustomObject]@{ OriginalValue = 'usswc'; RegionId = 'ussecwestcentral'; RegionName = 'USSec West Central'; }
,[PSCustomObject]@{ OriginalValue = 'ustsc'; RegionId = 'southcentralusstg'; RegionName = 'South Central US STG'; }
+ ,[PSCustomObject]@{ OriginalValue = 'usv'; RegionId = 'usgovvirginia'; RegionName = 'USGov Virginia'; }
,[PSCustomObject]@{ OriginalValue = 'usw3'; RegionId = 'westus3'; RegionName = 'West US 3'; }
,[PSCustomObject]@{ OriginalValue = 'uswest'; RegionId = 'westus'; RegionName = 'West US'; }
,[PSCustomObject]@{ OriginalValue = 'uswest2'; RegionId = 'westus2'; RegionName = 'West US 2'; }