如何在PowerShell中为CosmosDB应用多维度过滤器获取利用率数据
在Get-AzMetric中应用多个维度过滤器的正确方法
你当前触发Bad Request错误的原因是:将New-AzMetricFilter生成的多个过滤器对象存入数组后传给-MetricFilter参数,但该参数实际需要的是单个组合后的过滤器字符串,数组格式不符合Azure Monitor的API要求。
以下是两种正确实现多维度过滤的方式:
方法1:用New-AzMetricFilter自带参数组合条件
通过-And或-Or参数,直接将多个维度过滤规则组合成合法的过滤器字符串:
# 组合两个维度的"等于"条件(逻辑与) $dimFilter = New-AzMetricFilter -Dimension CollectionName -Operator eq -Value $collectionName ` -And (New-AzMetricFilter -Dimension Region -Operator eq -Value 'Central US') $output = Get-AzMetric -ResourceId $resourceid ` -StartTime $startTime ` -EndTime $endTime ` -MetricNames $metricsName ` -TimeGrain $timeGrain ` -MetricFilter $dimFilter ` -AggregationType Average
方法2:手动拼接符合OData格式的过滤器字符串
如果需要更灵活的逻辑控制,可直接按照Azure Monitor的OData语法手动构造过滤字符串:
# 手动构造多维度过滤规则(逻辑与用小写"and",逻辑或用小写"or") $dimFilter = "CollectionName eq '$collectionName' and Region eq 'Central US'" $output = Get-AzMetric -ResourceId $resourceid ` -StartTime $startTime ` -EndTime $endTime ` -MetricNames $metricsName ` -TimeGrain $timeGrain ` -MetricFilter $dimFilter ` -AggregationType Average
额外注意事项
- 确保
$collectionName变量已正确赋值,且取值与目标资源的实际维度值完全匹配(包括大小写、空格等细节,不匹配也会触发Bad Request) - 过滤器的逻辑运算符必须是小写的
and/or,不能使用大写格式
内容的提问来源于stack exchange,提问作者learningtocode
相关产品推荐
相关产品推荐

