Kusto 查询动态排序顺序
Kusto Query Dynamic sort Order
我最近开始使用 Azure Data Explorer(Kusto)。
我要求以动态方式对 Kusto table 进行排序。
//变量声明
let SortColumn ="run_date";
let OrderBy="desc";
// 实际代码
tblOleMeasurments
|拿10
|不同的列 1、列 2、列 3,run_date
|按 SortColumn OrderBy
排序
在这里,我的代码在 Sortcolumn 之前工作正常,但是当我尝试在 [SortColumn] 之后添加 [OrderBy] 时,kusto 给了我错误。
我的要求是从变量 [OrderBy] 传递 Asc/desc 值。
请在此提供对我有帮助的解决方法和解决方案。
排序列和顺序不能是表达式,必须是文字(“asc”或“desc”)。如果要将排序列和排序顺序作为变量传递,请创建一个联合,而不是在变量上的过滤器产生所需结果的地方。这是一个例子:
let OrderBy = "desc";
let sortColumn = "run_date";
let Query = tblOleMeasurments | take 10 |distinct column1,column2,column3,run_date;
union
(Query | where OrderBy == "desc" and sortColumn == "run_date" | order by run_date desc),
(Query | where OrderBy == "asc" and sortColumn == "run_date" | order by run_date asc)
联合分支的数量将是候选排序列的数量乘以二(两个排序顺序选项)的乘积。
另一种方法是按计算列排序,该列基于您的 sort_order
和 sort_column
。下面的示例适用于数字列
let T = range x from 1 to 5 step 1 | extend y = -10 * x;
let sort_order = "asc";
let sort_column = "y";
T
| order by column_ifexists(sort_column, "") * case(sort_order == "asc", -1, 1)
我最近开始使用 Azure Data Explorer(Kusto)。
我要求以动态方式对 Kusto table 进行排序。
//变量声明
let SortColumn ="run_date";
let OrderBy="desc";
// 实际代码
tblOleMeasurments |拿10 |不同的列 1、列 2、列 3,run_date |按 SortColumn OrderBy
排序在这里,我的代码在 Sortcolumn 之前工作正常,但是当我尝试在 [SortColumn] 之后添加 [OrderBy] 时,kusto 给了我错误。
我的要求是从变量 [OrderBy] 传递 Asc/desc 值。
请在此提供对我有帮助的解决方法和解决方案。
排序列和顺序不能是表达式,必须是文字(“asc”或“desc”)。如果要将排序列和排序顺序作为变量传递,请创建一个联合,而不是在变量上的过滤器产生所需结果的地方。这是一个例子:
let OrderBy = "desc";
let sortColumn = "run_date";
let Query = tblOleMeasurments | take 10 |distinct column1,column2,column3,run_date;
union
(Query | where OrderBy == "desc" and sortColumn == "run_date" | order by run_date desc),
(Query | where OrderBy == "asc" and sortColumn == "run_date" | order by run_date asc)
联合分支的数量将是候选排序列的数量乘以二(两个排序顺序选项)的乘积。
另一种方法是按计算列排序,该列基于您的 sort_order
和 sort_column
。下面的示例适用于数字列
let T = range x from 1 to 5 step 1 | extend y = -10 * x;
let sort_order = "asc";
let sort_column = "y";
T
| order by column_ifexists(sort_column, "") * case(sort_order == "asc", -1, 1)