Kusto Query Динамический порядок сортировки

Недавно я начал работать над Azure Data Explorer( Kusto).

Мое требование сделать порядок сортировки таблицы Kusto динамическим способом.


// Объявление переменной

              let SortColumn ="run_date";
        let OrderBy="desc";

// Актуальный код

tblOleMeasurments | взять 10 | отдельный столбец1, столбец2, столбец3, дата_пуска | упорядочить по SortColumn OrderBy

Здесь мой код работает нормально до Sortcolumn, но когда я попытался добавить [OrderBy] после [SortColumn], kusto выдает ошибку.

Мое требование здесь - передать значение Asc / desc из переменной [OrderBy].

Пожалуйста, помогите мне найти обходные пути и решения, которые помогут мне.

2 ответа

Решение

Столбец сортировки и порядок не могут быть выражением, он должен быть литералом («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)
Другие вопросы по тегам