az graph query加-o tsv输出异常,需生成Excel可用表格
问题原因分析
当添加-o tsv参数后返回纯数字/none这类结果,核心原因是你的Kusto查询返回的是无结构化标签的聚合标量值,而非带列名的结构化表格数据:
- 不带
-o tsv时,Azure Graph以JSON格式返回完整查询结构,包含聚合项的名称和值,结果显示正常; - 但
-o tsv会直接提取查询结果中的原始数值,忽略JSON里的字段名,导致输出变成无意义的数字串(比如聚合后的sum、count值),存在null值时还会显示none。
解决方法
1. 重构查询,输出带列名的结构化结果
用project或summarize ... by明确指定统计项名称,让结果保留列标签,这样-o tsv会输出带表头的制表符分隔数据,可直接导入Excel。
示例查询(按资源组+VM规格统计核心数):
Resources | where type == 'microsoft.compute/virtualmachines' | where isnotempty(vmSize.numberOfCores) // 过滤无效null数据 | summarize TotalCores = sum(vmSize.numberOfCores) by ResourceGroup, VmSize = tostring(vmSize) | project ResourceGroup, VmSize, TotalCores
执行命令:
az graph query -q "上述Kusto语句" -o tsv > vm_core_stats.tsv
生成的tsv文件包含三列(资源组、VM规格、总核心数),直接导入Excel即可正常识别。
2. 单维度聚合时添加统计标签
如果只需要全局总核心数、VM数量这类单维度统计,给聚合结果添加明确的标签字段:
Resources | where type == 'microsoft.compute/virtualmachines' | where isnotempty(vmSize.numberOfCores) | summarize TotalCores = sum(vmSize.numberOfCores), VMCount = count() | project StatisticType = "VM Core Usage Summary", TotalCores, VMCount
这样-o tsv输出会包含统计类型标签,不会是纯数字串。
3. 先验证JSON结构再转TSV
执行不带-o tsv的命令,查看返回的JSON结构,确认每个字段名称是否符合预期,再调整project或summarize语句,确保输出字段是你需要的统计项。
内容的提问来源于stack exchange,提问作者easec
相关产品推荐
相关产品推荐

