如何用KQL查询AADNonInteractiveUserSignInLogs表指定列的大小?
检索AADNonInteractiveUserSignInLogs表中列级计费大小的KQL查询
你可以通过计算单个列的序列化大小来估算其对总计费大小的贡献,以下是具体的KQL查询方案:
单列大小统计(以ConditionalAccessPolicies为例)
这个查询会统计指定列在计费行中的总大小,以及其占整行总计费大小的百分比:
AADNonInteractiveUserSignInLogs | where _IsBillable == true // 仅统计产生费用的行 | summarize TotalRowSize = sum(_BilledSize), ColumnSize = sum(size_bytes(tostring(ConditionalAccessPolicies))) // 序列化列并计算字节大小 | extend TotalRowSize_Formatted = format_bytes(TotalRowSize, 2), ColumnSize_Formatted = format_bytes(ColumnSize, 2), ColumnSizePercentage = round((ColumnSize * 100.0) / TotalRowSize, 2)
多列批量统计
如果需要同时分析多个列的大小贡献,可以扩展查询如下:
AADNonInteractiveUserSignInLogs | where _IsBillable == true | summarize TotalRowSize = sum(_BilledSize), ConditionalAccessPolicies_Size = sum(size_bytes(tostring(ConditionalAccessPolicies))), AuthenticationDetails_Size = sum(size_bytes(tostring(AuthenticationDetails))), DeviceInfo_Size = sum(size_bytes(tostring(DeviceInfo))) | extend TotalRowSize_Formatted = format_bytes(TotalRowSize, 2), // 格式化ConditionalAccessPolicies列的结果 ConditionalAccessPolicies_Formatted = format_bytes(ConditionalAccessPolicies_Size, 2), ConditionalAccessPolicies_Percent = round((ConditionalAccessPolicies_Size * 100.0)/TotalRowSize, 2), // 格式化AuthenticationDetails列的结果 AuthenticationDetails_Formatted = format_bytes(AuthenticationDetails_Size, 2), AuthenticationDetails_Percent = round((AuthenticationDetails_Size * 100.0)/TotalRowSize, 2), // 格式化DeviceInfo列的结果 DeviceInfo_Formatted = format_bytes(DeviceInfo_Size, 2), DeviceInfo_Percent = round((DeviceInfo_Size * 100.0)/TotalRowSize, 2)
关键说明
size_bytes(tostring(列名))通过将列数据序列化为字符串来估算其存储大小,结果和实际计费中该列的贡献高度接近,仅存在微小的序列化方式差异。- 过滤
_IsBillable == true可以排除非计费数据,确保统计结果准确反映实际产生费用的部分。 - 你可以根据需求添加任意需要分析的列,只需新增类似
列名_Size = sum(size_bytes(tostring(列名)))的统计项,以及对应的格式化和百分比计算即可。
内容的提问来源于stack exchange,提问作者Listereeen
相关产品推荐
相关产品推荐

