Search code examples
azure-application-insightskqlazure-log-analytics

How to make an Application Insights kusto query sort correctly on performanceBucket?


Is there a way to make an Application Insights kusto query sort on performanceBucket 'correctly', i.e. on bucket duration? When I summarize or sort using performanceBucket and don't specify a sort I get something like this (note for example that 1-3sec is not adjacent to 3-7sec):

enter image description here

If I add a sort by performanceBucket it's done alphanumerically:

enter image description here

I want it to be in this order (or the reverse of it)

  • <250ms
  • 250ms-500ms
  • 500ms-1sec
  • 1sec-3sec
  • 3sec-7sec
  • 7sec-15sec
  • 15sec-30sec
  • 30sec-1min
  • 1min-2min

Solution

  • You need to artificially add a column that indicates your preferred sorting order, then sort by it, and project it away:

    // Synthetic data - don't copy this
    let YourResult = datatable(perfBucket:string, count_:long) [
        "250ms-500ms", 14000,
        "7sec-15sec", 600,
        "1sec-3sec", 9700
    ];
    // This is the actual query
    YourResult
    | extend sortOrder =
        case(perfBucket == "<250ms", 1,
             perfBucket == "250ms-500ms", 2,
             perfBucket == "500ms-1sec", 3,
             perfBucket == "1sec-3sec", 4,
             perfBucket == "3sec-7sec", 5,
             perfBucket == "7sec-15sec", 6,
             perfBucket == "15sec-30sec", 7,
             perfBucket == "30sec-1min" ,8,
             perfBucket == "1min-2min", 9,
             10)
    | order by sortOrder asc
    | project-away sortOrder
    

    Result:

    perfBucket count_
    250ms-500ms 14000
    1sec-3sec 9700
    7sec-15sec 600