如何在 KQL 中按第二列排序,无论列名称如何

问题描述 投票:0回答:1

我在 KQL 中使用了

pivot
,现在我有动态命名的列,我想按第二个排序。

桌子是这样的

产品 2023年11月 2023年10月
姓名1 80 50
姓名2 24 71
姓名3 33 60

我想按“11.2023”列(总体第二列)排序,但该列并不总是相同,但是,我想始终使用相同的查询。

我想类似的事情

T
| order by 1 desc

T
| sort by 1 desc

可以工作,但就是不排序。

kql monitor azure-log-analytics
1个回答
0
投票

根据此排序运算符

文档中没有提到如果我们使用像

sort by 1 desc
这样的查询,我们可以按序数位置排序。所以,上面的查询是不可能的。

它将给出与您的表格相同的表格结果。

以下是我尝试各种方法时的观察结果:

我尝试了以下方法,首先我使用

getschema
将第二列名称存储在变量中。

let a = datatable(Product:string, ['11.2023']:int, ['10.2023']:int)
[
    "Name 3",80,50,
    "a",24,71,
    "Name 2",33,60
];
let s =a | getschema;
let b= toscalar(s
| extend col= iif(ColumnOrdinal==0,ColumnName,'')
| summarize max(col)
);
a
| order by column_ifexists(b,'') desc;

但是后来当我尝试按该变量进行排序时,我收到一条错误消息:

column_ifexists(): argument #1 must be string literal

enter image description here

column_ifexists()
方法的第一个参数应该只是字符串文字,但这里的字符串变量
b
是根据另一个表达式计算的。

我尝试构建一个 KQL 字符串查询并尝试执行它,但目前 KQL 没有任何类似 SQL 的

exec()
的等效函数。

所以,目前可能无法达到您的要求。您可以在此处将您的想法作为功能请求提出。

© www.soinside.com 2019 - 2024. All rights reserved.