Forum Discussion
Josh_Washburn
Jul 26, 2021Copper Contributor
Percentage of Arc Machines by Domain
I am trying to use Azure Resource Graph to get 3 columns of data:
- List of Domain names
- Count of Arc Machines by Domain
- Percentage of Arc Machines by Domain
resources
| where type == "microsoft.hybridcompute/machines"
| extend Domain=properties.domainName,ArcMachines=name
| summarize TotalResources=count()
| summarize MachinesByDomain=count(ArcMachines) by tostring(Domain)
| summarize Percentage = ( toreal(sum(MachinesByDomain)) / toreal(sum(TotalResources)) ) * 100
| project Domain,MachinesByDomain,Percentage
This is the result I am getting:
"Please provide below info when asking for support: timestamp = 2021-07-26T14:38:35.7800277Z, correlationId = d2b015fa-2584-4f11-99c4-eb0e4f1a5096. (Code:BadRequest)
Details: Query is invalid. Please refer to the documentation for the Azure Resource Graph service and fix the error before retrying. (Code:InvalidQuery) 'summarize' operator: Failed to resolve scalar expression named 'TotalResources' (Code:Operator_FailedToResolveEntity)"
Please let me know if you have any suggestions to achieve the results I am looking for. Thank you!
- CliveWatson
Microsoft
One way to do this is to use a join
// get the Total count, store it and create a column to join on resources | where type == "microsoft.hybridcompute/machines" | summarize Total_ = dcount(name), fake_join = "join_" // Join data on the fake column name = left | join //right ( resources | where type == "microsoft.hybridcompute/machines" | extend Domain=properties.domainName,ArcMachines=name | summarize MachinesByDomain=count(ArcMachines) by tostring(Domain), ArcMachines, fake_join ="join_" ) on fake_join // now calculate the Total from left with the data from the right | summarize MachinesByDomain=count(ArcMachines), Percentage = ( toreal(sum(MachinesByDomain)) / toreal(max(Total_)) * 100 ) by tostring(Domain) | order by MachinesByDomain desc