Kusto自定义排序顺序?

7
如何在Kusto中执行自定义排序? 示例查询:
//==================================================//
// Assign variables
//==================================================//
let varStart = ago(2d);
let varEnd = now();
let varStorageAccount = 'stgacctname';
//==================================================//
// Filter table
//==================================================//
StorageBlobLogs
| where TimeGenerated between (varStart .. varEnd)
  and AccountName == varStorageAccount
| sort by OperationName

需要:

  • 我想把不同的 OperationNames(例如GetBlobAppendFile等)以自定义顺序排序。
  • 类似于: | sort by OperationName ['GetBlob'],OperationName['AppendFile'],OperationName asc
  • 理想情况下,我希望能够指定用于排序的值,然后允许Kusto使用asc/desc来排序其余的值。

这个可能吗?


1
感谢您在另一个问题中的投票。关于这个情况,kusto不提供这种“排序”功能,所以我想您可以使用union all子查询结果,使它们可以进行自定义排序。我的意思是let a = Your Query|where OperationName='GetBlob' sort by OperationName; let b = Your Query|where OperationName='AppendFile' sort by OperationName; union a,b - Tiny Wang
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
8

可以使用辅助列来实现,例如:

datatable(OperationName:string, SomethingElse:string)
[
    "AppendFile", "3",
    "GetBlob", "1",
    "AppendFile", "4",
    "GetBlob", "2"
]
| extend OrderPriority =
    case(OperationName == "GetBlob", 1,
         OperationName == "AppendFile", 2,
         3)
| order by OrderPriority asc, SomethingElse asc 
| project-away OrderPriority

输出:

操作名称其它信息
获取Blob1
获取Blob2
追加文件3
追加文件4

1
听起来使用原始的Kusto不可能做到这一点。虽然这是一个好的解决方法,但有点复杂。谢谢。 - ericOnline

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,