У меня есть таблица с различными столбцами строкового типа. Я хочу "резюме" формы (colname | maxcollength).
Я вижу, что функция getschema получает столбцы с типами, но я понятия не имею, как использовать это, чтобы получить maxcollength без явного обращения к каждому столбцу. Я ищу общий (без явных имен в запросе) способ добиться этого, который будет работать OOB для любой таблицы, с которой он работает.
В sql я бы подумал об этом как о динамическом варианте использования sql.
Как бы это сделать в kql?
Вы можете запустить этот запрос, чтобы сгенерировать запрос, который даст нужные вам результаты:
let TableName = "MyTable";
let TimeFilter = "where Timestamp > ago(1d)";
table(TableName)
| getschema
| where ColumnType == "string"
| summarize Temp = array_strcat(make_list(strcat("max(strlen(", ColumnName, "))")), ", ")
| project strcat(TableName, " | ", TimeFilter, " | summarize ", Temp)
Просто обновите первые две строки, где вы задаете имя таблицы и нужный временной фильтр.
В результате вы получите запрос, который выглядит так:
MyTable
| where LastUpdated > ago(1d)
| summarize max(strlen(MyStringColumn)), max(strlen(AnotherStringColumn)), ...
Это именно тот запрос, который вам нужно выполнить, чтобы получить желаемый результат.
(хлопает по лбу) Конечно, используйте kusto как генератор кода! даже без SQL EXEC я все еще могу сгенерировать запрос. Спасибо!
не могли бы вы поделиться образцом входных данных и ожидаемыми результатами?