我在 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
可以工作,但就是不排序。
根据此排序运算符,
文档中没有提到如果我们使用像
这样的查询,我们可以按序数位置排序。所以,上面的查询是不可能的。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
。
column_ifexists()
方法的第一个参数应该只是字符串文字,但这里的字符串变量b
是根据另一个表达式计算的。
我尝试构建一个 KQL 字符串查询并尝试执行它,但目前 KQL 没有任何类似 SQL 的
exec()
的等效函数。
所以,目前可能无法达到您的要求。您可以在此处将您的想法作为功能请求提出。