Оптимизирует ли оптимизатор проводника данных Azure вызовы функций, если ваша базовая таблица инкапсулирована в пользовательскую функцию? - PullRequest
0 голосов
/ 19 июня 2019

Я оптимизирую некоторый код Kusto, в котором доступ к базовым таблицам заключен в определенные пользователем функции, иногда в несколько уровней вызовов функций. Например, предположим, что у вас есть табличная функция GetStuff (), которая, в свою очередь, вызывает табличную функцию GetStuff2 (), которая вызывает базовую таблицу Kusto Stuff. У меня вопрос: если я напишу запрос Kusto, который включает в себя объединение с табличной функцией GetStuff (), будет ли оптимизатор Azure Data Explorer работать для оптимизации всего стека вызовов? Другими словами, будет ли он вести себя как представления в реляционной базе данных, где он будет создавать и оптимизировать план запроса для всего запроса, сначала разбивая определение представления, или оптимизация будет действовать только на определении функции или уровне запроса?

.create-or-alter function with (folder = "Stuff", docstring = "Stuff", skipvalidation = "true") GetStuff() {

ABaseTable
| join GetStuff2()
| more logic
…
}

.create-or-alter function with (folder = "Stuff", docstring = "More Stuff", skipvalidation = "true") GetStuff2() {

AnotherBaseTable
| join GetStuff 
| more logic
…
}

Вот запрос:

GetStuff()
| join YetAnotherBaseTable
….

Этот тип запроса не оптимизирован.

1 Ответ

1 голос
/ 20 июня 2019

Когда вы вызываете сохраненную функцию в Kusto - это будет так же, как если бы вы использовали встроенные «тела» функций. Это означает, что вызов функции будет оптимизирован так же, как если бы весь запрос был встроен. Kusto.Explorer (приложение для рабочего стола Windows) - https://aka.ms/ke может показать дерево выполнения запроса. Запишите ваш запрос в редакторе запросов и используйте инструменты ленты -> Query Analyzer, чтобы запустить его и показать оптимизированное дерево выполнения запроса. Если у вас есть конкретный вопрос о том, почему не происходит оптимизация, отправьте отдельный вопрос.

...