diff --git a/docs/_resources/changelog.md b/docs/_resources/changelog.md
index f6ce4e3dc..64cee392a 100644
--- a/docs/_resources/changelog.md
+++ b/docs/_resources/changelog.md
@@ -138,8 +138,15 @@ Legend:
🌐 Open data
{: .fs-5 .fw-500 .mt-4 mb-0 }
+> ➕ Added:
+>
+> - [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".
+>
> ✏️ Changed
>
+> - [Pricing units](../_reporting/data/README.md#-pricing-units)
+> 1. Changed DistinctUnits for the "10000s" UnitOfMeasure from "Units" to "Transactions".
> - [Services](../_reporting/data/README.md#️-services)
> 1. Moved Microsoft Genomics from the "AI and Machine Learning" service category to "Analytics".
> 2. Changed Microsoft Genomics from the "SaaS" service model to "PaaS".
diff --git a/src/open-data/PricingUnits.csv b/src/open-data/PricingUnits.csv
index 8ff15900c..9ddbe1bb3 100644
--- a/src/open-data/PricingUnits.csv
+++ b/src/open-data/PricingUnits.csv
@@ -3,6 +3,7 @@ UnitOfMeasure,AccountTypes,PricingBlockSize,DistinctUnits
"1 ",EA,1,Units
"1 /Day",EA,1,Units/Day
"1 /Hour",EA,1,Units/Hour
+"1 /Minute",EA,1,Units/Minute
"1 /Month",EA,1,Units/Month
"1 /Year",EA,1,Units/Year
"1 1 Hour",EA,1,Hours
@@ -144,6 +145,7 @@ UnitOfMeasure,AccountTypes,PricingBlockSize,DistinctUnits
"10 PB Seconds",EA,10,PB Seconds
"10 PB/Hour",EA,10,PB/Hour
"10 PiB Seconds",EA,10,PiB Seconds
+"10 PiB/Hour",EA,10,PiB/Hour
"10 Pipelines",EA,10,Pipelines
"10 Rotations",EA,10,Rotations
"10 Service Endpoints",EA,10,Endpoints
@@ -252,6 +254,7 @@ UnitOfMeasure,AccountTypes,PricingBlockSize,DistinctUnits
"100000 ",EA,100000,Units
"100000 /Day",EA,100000,Units/Day
"100000 /Hour",EA,100000,Units/Hour
+"100000 /Month",EA,100000,Units/Month
"100000 Executions",EA,100000,Executions
"100000 GB",EA,100000,GB
"100000 GB Seconds",EA,100000,GB Seconds
@@ -296,7 +299,7 @@ UnitOfMeasure,AccountTypes,PricingBlockSize,DistinctUnits
"10000000000 ",EA,10000000000,Units
"100000000000",EA,100000000000,Units
"100000000000 ",EA,100000000000,Units
-"10000s",MCA,1,Units
+"10000s",MCA,1,Transactions
"100K",MCA,100000,Units
"1024 GB",EA,1024,GB
"102400 TiB/Hour",EA,102400,TiB/Hour
@@ -369,6 +372,7 @@ UnitOfMeasure,AccountTypes,PricingBlockSize,DistinctUnits
"Minute(s)","MCA, EA",1,Minutes
"Per Call","MCA, EA",1,Calls
"Per Request",MCA,1,Requests
+"Text",MCA,1,Messages
"Unassigned",EA,1,Units
"Unit",MCA,1,Units
"Units",MCA,1,Units
diff --git a/src/open-data/README.md b/src/open-data/README.md
index 4efdf88d4..4083546eb 100644
--- a/src/open-data/README.md
+++ b/src/open-data/README.md
@@ -14,7 +14,7 @@ On this page:
## 📏 Pricing units
- 📅 Updated: Jun 1, 2024
+ 📅 Updated: Aug 22, 2024
➡️ Source: Cost Management team
@@ -60,6 +60,7 @@ Meters
| extend DistinctUnits = replace_regex(DistinctUnits, @'^Gb( ?/ ?Month)?$', @'GB\1')
//
// Clean up units per period
+| extend DistinctUnits = iff(DistinctUnits matches regex '^[a-z]', strcat(toupper(substring(DistinctUnits, 0, 1)), substring(DistinctUnits, 1)), DistinctUnits) // Capitalize first word
| extend DistinctUnits = replace_string(DistinctUnits, ' / ', '/') // Don't space out the slash
| extend DistinctUnits = replace_regex(DistinctUnits, @'(App|Border|Call|Certificate|Connection|Day|Device|Domain|Hour|Key|Machine|Meter|Minute|Month|Node|Pack|Pipeline|Plan|Request|Resource|Second|Subscription|Unit|User|Website|Zone)(/.*)?$', @'\1s\2') // Always plural before slash
| extend DistinctUnits = replace_regex(DistinctUnits, @'/(Second|Minute|Hour|Day|Month)s$', @'/\1') // Always singular after slash
@@ -68,10 +69,11 @@ Meters
| extend DistinctUnits = case(
UnitOfMeasure == '10000s' and DistinctUnits == 'S', 'Transactions',
DistinctUnits == '1,000s', 'Transactions in Thousands',
- DistinctUnits in ('API Calls', 'print job'), 'Requests',
+ DistinctUnits in ('API Calls', 'Print job'), 'Requests',
DistinctUnits == 'Concurrent DVC', 'Configurations',
DistinctUnits == 'CallingMinutes', 'Minutes',
DistinctUnits == 'Key Use', 'Keys',
+ DistinctUnits == 'Text', 'Messages',
DistinctUnits == 'Unassigned', 'Units',
DistinctUnits == 'VM', 'Virtual Machines',
DistinctUnits in ('MAUS', 'MAUs'), 'Users/Month',
@@ -81,7 +83,6 @@ Meters
// Prefix cleanup
| extend DistinctUnits = replace_regex(DistinctUnits, @'^1 ', '') // Remove duplicate quantity
| extend DistinctUnits = replace_regex(DistinctUnits, @'^[\s\pZ\pC]+', '') // Remove leading spaces
-| extend DistinctUnits = iff(DistinctUnits matches regex '^[a-z]', strcat(toupper(substring(DistinctUnits, 0, 1)), substring(DistinctUnits, 1)), DistinctUnits) // Capitalize first word
| extend DistinctUnits = replace_regex(DistinctUnits, @'^(Per|Por) ', '') // Remove starting "per"
| extend DistinctUnits = replace_regex(DistinctUnits, @'^(Activity|Border|Content|Core|Database|Hosted|Instance|Messaging|Named|Operation|Privacy Subject Rights|Relay|Reserved|Service|Virtual User) ', '') // Trim extra adjectives
//
@@ -91,8 +92,6 @@ Meters
| extend DistinctUnits = replace_regex(DistinctUnits, @'\(s\)$', 's') // Always plural
//
| order by UnitOfMeasure asc
-// Write as a single column with quotes to maintain spaces for easy copy/paste to CSV --
-| project ["UnitOfMeasure,AccountTypes,PricingBlockSize,DistinctUnits"] = strcat('"', UnitOfMeasure, '",', iff(AccountTypes contains ',', '"', ''), AccountTypes, iff(AccountTypes contains ',', '"', ''), ',', PricingBlockSize ,',', DistinctUnits)
```
diff --git a/src/powershell/Private/Get-OpenDataPricingUnit.ps1 b/src/powershell/Private/Get-OpenDataPricingUnit.ps1
index 36e17fb37..734e5681d 100644
--- a/src/powershell/Private/Get-OpenDataPricingUnit.ps1
+++ b/src/powershell/Private/Get-OpenDataPricingUnit.ps1
@@ -9,6 +9,7 @@ function Get-OpenDataPricingUnit
,[PSCustomObject]@{ UnitOfMeasure = '1 '; AccountTypes = 'EA'; PricingBlockSize = 1; DistinctUnits = 'Units'; }
,[PSCustomObject]@{ UnitOfMeasure = '1 /Day'; AccountTypes = 'EA'; PricingBlockSize = 1; DistinctUnits = 'Units/Day'; }
,[PSCustomObject]@{ UnitOfMeasure = '1 /Hour'; AccountTypes = 'EA'; PricingBlockSize = 1; DistinctUnits = 'Units/Hour'; }
+ ,[PSCustomObject]@{ UnitOfMeasure = '1 /Minute'; AccountTypes = 'EA'; PricingBlockSize = 1; DistinctUnits = 'Units/Minute'; }
,[PSCustomObject]@{ UnitOfMeasure = '1 /Month'; AccountTypes = 'EA'; PricingBlockSize = 1; DistinctUnits = 'Units/Month'; }
,[PSCustomObject]@{ UnitOfMeasure = '1 /Year'; AccountTypes = 'EA'; PricingBlockSize = 1; DistinctUnits = 'Units/Year'; }
,[PSCustomObject]@{ UnitOfMeasure = '1 1 Hour'; AccountTypes = 'EA'; PricingBlockSize = 1; DistinctUnits = 'Hours'; }
@@ -150,6 +151,7 @@ function Get-OpenDataPricingUnit
,[PSCustomObject]@{ UnitOfMeasure = '10 PB Seconds'; AccountTypes = 'EA'; PricingBlockSize = 10; DistinctUnits = 'PB Seconds'; }
,[PSCustomObject]@{ UnitOfMeasure = '10 PB/Hour'; AccountTypes = 'EA'; PricingBlockSize = 10; DistinctUnits = 'PB/Hour'; }
,[PSCustomObject]@{ UnitOfMeasure = '10 PiB Seconds'; AccountTypes = 'EA'; PricingBlockSize = 10; DistinctUnits = 'PiB Seconds'; }
+ ,[PSCustomObject]@{ UnitOfMeasure = '10 PiB/Hour'; AccountTypes = 'EA'; PricingBlockSize = 10; DistinctUnits = 'PiB/Hour'; }
,[PSCustomObject]@{ UnitOfMeasure = '10 Pipelines'; AccountTypes = 'EA'; PricingBlockSize = 10; DistinctUnits = 'Pipelines'; }
,[PSCustomObject]@{ UnitOfMeasure = '10 Rotations'; AccountTypes = 'EA'; PricingBlockSize = 10; DistinctUnits = 'Rotations'; }
,[PSCustomObject]@{ UnitOfMeasure = '10 Service Endpoints'; AccountTypes = 'EA'; PricingBlockSize = 10; DistinctUnits = 'Endpoints'; }
@@ -258,6 +260,7 @@ function Get-OpenDataPricingUnit
,[PSCustomObject]@{ UnitOfMeasure = '100000 '; AccountTypes = 'EA'; PricingBlockSize = 100000; DistinctUnits = 'Units'; }
,[PSCustomObject]@{ UnitOfMeasure = '100000 /Day'; AccountTypes = 'EA'; PricingBlockSize = 100000; DistinctUnits = 'Units/Day'; }
,[PSCustomObject]@{ UnitOfMeasure = '100000 /Hour'; AccountTypes = 'EA'; PricingBlockSize = 100000; DistinctUnits = 'Units/Hour'; }
+ ,[PSCustomObject]@{ UnitOfMeasure = '100000 /Month'; AccountTypes = 'EA'; PricingBlockSize = 100000; DistinctUnits = 'Units/Month'; }
,[PSCustomObject]@{ UnitOfMeasure = '100000 Executions'; AccountTypes = 'EA'; PricingBlockSize = 100000; DistinctUnits = 'Executions'; }
,[PSCustomObject]@{ UnitOfMeasure = '100000 GB'; AccountTypes = 'EA'; PricingBlockSize = 100000; DistinctUnits = 'GB'; }
,[PSCustomObject]@{ UnitOfMeasure = '100000 GB Seconds'; AccountTypes = 'EA'; PricingBlockSize = 100000; DistinctUnits = 'GB Seconds'; }
@@ -302,7 +305,7 @@ function Get-OpenDataPricingUnit
,[PSCustomObject]@{ UnitOfMeasure = '10000000000 '; AccountTypes = 'EA'; PricingBlockSize = 10000000000; DistinctUnits = 'Units'; }
,[PSCustomObject]@{ UnitOfMeasure = '100000000000'; AccountTypes = 'EA'; PricingBlockSize = 100000000000; DistinctUnits = 'Units'; }
,[PSCustomObject]@{ UnitOfMeasure = '100000000000 '; AccountTypes = 'EA'; PricingBlockSize = 100000000000; DistinctUnits = 'Units'; }
- ,[PSCustomObject]@{ UnitOfMeasure = '10000s'; AccountTypes = 'MCA'; PricingBlockSize = 1; DistinctUnits = 'Units'; }
+ ,[PSCustomObject]@{ UnitOfMeasure = '10000s'; AccountTypes = 'MCA'; PricingBlockSize = 1; DistinctUnits = 'Transactions'; }
,[PSCustomObject]@{ UnitOfMeasure = '100K'; AccountTypes = 'MCA'; PricingBlockSize = 100000; DistinctUnits = 'Units'; }
,[PSCustomObject]@{ UnitOfMeasure = '1024 GB'; AccountTypes = 'EA'; PricingBlockSize = 1024; DistinctUnits = 'GB'; }
,[PSCustomObject]@{ UnitOfMeasure = '102400 TiB/Hour'; AccountTypes = 'EA'; PricingBlockSize = 102400; DistinctUnits = 'TiB/Hour'; }
@@ -375,6 +378,7 @@ function Get-OpenDataPricingUnit
,[PSCustomObject]@{ UnitOfMeasure = 'Minute(s)'; AccountTypes = 'MCA, EA'; PricingBlockSize = 1; DistinctUnits = 'Minutes'; }
,[PSCustomObject]@{ UnitOfMeasure = 'Per Call'; AccountTypes = 'MCA, EA'; PricingBlockSize = 1; DistinctUnits = 'Calls'; }
,[PSCustomObject]@{ UnitOfMeasure = 'Per Request'; AccountTypes = 'MCA'; PricingBlockSize = 1; DistinctUnits = 'Requests'; }
+ ,[PSCustomObject]@{ UnitOfMeasure = 'Text'; AccountTypes = 'MCA'; PricingBlockSize = 1; DistinctUnits = 'Messages'; }
,[PSCustomObject]@{ UnitOfMeasure = 'Unassigned'; AccountTypes = 'EA'; PricingBlockSize = 1; DistinctUnits = 'Units'; }
,[PSCustomObject]@{ UnitOfMeasure = 'Unit'; AccountTypes = 'MCA'; PricingBlockSize = 1; DistinctUnits = 'Units'; }
,[PSCustomObject]@{ UnitOfMeasure = 'Units'; AccountTypes = 'MCA'; PricingBlockSize = 1; DistinctUnits = 'Units'; }