用KQL表达精度为2的小数?
Express decimal with precision of 2 in KQL?
我有一个值,以字节表示,从 Azure Log Analytics 查询返回:
我想将其转换为兆字节并使其更易于阅读。在这种情况下,“4.19 MB”。
当我尝试将字节值转换为兆字节时,我似乎无法让 KQL 添加所需的 2 位精度。
尝试过:
RequestBodySize = strcat(round(RequestBodySize / 1000 / 1000, 2), ' MB')
但这会导致“4.0 MB”。
如何让这个值正确反映精度 2?
编辑 1:
format_bytes(RequestBodySize, 2)
returns“4 MB”。没有精度。
- 与`format_bytes(RequestBodySize, 2, 'MB')
相同
使用print format_bytes(12345678)
得到12 MB
。
使用print format_bytes(12345678, 2)
得到11.77 MB
。
阅读 doc 了解更多信息。
尝试这样的事情:
|总结 GB = 1.0 * sum(TheThingsYouSub) / 1024 / 1024 / 1024 by SomeFilter
我使用了一个简单的查询来模拟案例,它对我来说按预期工作。
在第一个示例中,我将单位添加到字段名称中以保持与值在查询中投影的方式一致的值格式:
AzureDiagnostics
| where TimeGenerated > startofday(ago(20d))
| summarize volumeSizeMB = round(sum(_BilledSize)/pow(1024,2),2)
Results:
17.27
并且在将单位添加到值时:
AzureDiagnostics
| where TimeGenerated > startofday(ago(20d))
| summarize volumeSize = strcat(round(sum(_BilledSize)/pow(1024,2),2), ' MB')
Results:
17.27 MB
如果您的问题仍然存在并且您没有看到预期的精度,我建议您打开支持案例以进行调查。
您好,我上面的回答很好,
只是想添加一个小输入。
你没有得到小数点后分数的原因是因为你要除两个整数。
要获得实数,您需要先使用 todouble() toflout() https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/todoublefunction 将其中一个数字转换为浮点数或双精度数
RequestBodySize = strcat(round(todouble(RequestBodySize) / 1024 / 1024, 2), 'MB')
或者,按照 Yossi 的建议,乘以 1.0
RequestBodySize = strcat(round(1.0 * RequestBodySize / 1024 / 1024, 2), 'MB')
我有一个值,以字节表示,从 Azure Log Analytics 查询返回:
我想将其转换为兆字节并使其更易于阅读。在这种情况下,“4.19 MB”。
当我尝试将字节值转换为兆字节时,我似乎无法让 KQL 添加所需的 2 位精度。
尝试过:
RequestBodySize = strcat(round(RequestBodySize / 1000 / 1000, 2), ' MB')
但这会导致“4.0 MB”。
如何让这个值正确反映精度 2?
编辑 1:
format_bytes(RequestBodySize, 2)
returns“4 MB”。没有精度。- 与`format_bytes(RequestBodySize, 2, 'MB') 相同
使用print format_bytes(12345678)
得到12 MB
。
使用print format_bytes(12345678, 2)
得到11.77 MB
。
阅读 doc 了解更多信息。
尝试这样的事情: |总结 GB = 1.0 * sum(TheThingsYouSub) / 1024 / 1024 / 1024 by SomeFilter
我使用了一个简单的查询来模拟案例,它对我来说按预期工作。 在第一个示例中,我将单位添加到字段名称中以保持与值在查询中投影的方式一致的值格式:
AzureDiagnostics
| where TimeGenerated > startofday(ago(20d))
| summarize volumeSizeMB = round(sum(_BilledSize)/pow(1024,2),2)
Results:
17.27
并且在将单位添加到值时:
AzureDiagnostics
| where TimeGenerated > startofday(ago(20d))
| summarize volumeSize = strcat(round(sum(_BilledSize)/pow(1024,2),2), ' MB')
Results:
17.27 MB
如果您的问题仍然存在并且您没有看到预期的精度,我建议您打开支持案例以进行调查。
您好,我上面的回答很好, 只是想添加一个小输入。 你没有得到小数点后分数的原因是因为你要除两个整数。 要获得实数,您需要先使用 todouble() toflout() https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/todoublefunction 将其中一个数字转换为浮点数或双精度数 RequestBodySize = strcat(round(todouble(RequestBodySize) / 1024 / 1024, 2), 'MB') 或者,按照 Yossi 的建议,乘以 1.0 RequestBodySize = strcat(round(1.0 * RequestBodySize / 1024 / 1024, 2), 'MB')