Предупреждение о производительности Power Query для Power BI

Tags: Power Query, Power BI

Имея большой опыт работы с преобразованиями  Power Query, мы хотели бы поделиться с вами одним простым, но важным предостережением.  Если вы часто используете Power Query, этот совет может значительно улучшить производительность вашего преобразования. Количество шагов, которые вы добавляете в запрос, зависит от производительности вашего преобразования данных (если у вас слишком много шагов). Мы продемонстрируем это вам на примере

Слишком много переменных

Это пример файла Power Query, в котором я делаю очень простое преобразование. Оно добавляет один к существующему числу. Однако в этом примере мы делаем это за тысячи шагов! один шаг за раз, мы добавляем тысячи к числу. Основная причина сделать это таким образом - показать вам, какова производительность, которую вы получаете, когда у вас слишком много переменных (или, допустим, шагов) в Power Query.

Вот наш пример запроса:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

let

   a0= 0,

a1=a0+1,

a2=a1+1,

a3=a2+1,

... //

... // each variable used in the next variable with a plus one

... //

a1808=a1807+1,

a1809=a1808+1,

a1810=a1809+1,

a1811=a1810+1,

a1812=a1811+1

in

   a1812

Вышеуказанный запрос занимает 15 минут для запуска на моей машине Surface Book 2 с процессором Core i7 и памятью 16 ГБ! 15 минут, в течение которых вы не можете докоснуться до Power BI. Он не будет реагировать на ваши действия, вам придется подождать,  чтобы увидеть результат после выполнения запроса.

Ой! Это действительно долгое время для запроса, который просто добавляет одно значение на каждом шагу, не так ли? Посмотрим, как потребление ресурсов в системе работает с Power BI Desktop и Power Query. Здесь он только на полпути:

Э-э! Даже с простым вычислением, например, добавлением одного к номеру, я имел более 10 ГБ памяти и 70% использования ЦП в течение длительного периода! Как вы думаете, что это вызвало? Конечно, число переменных. В этом запросе нет ничего другого.

Слишком много переменных или слишком много шагов вызывают проблемы с производительностью. Power Query выделяет память для каждой переменной, а потребление памяти значительно увеличивается. Процессор также занимает много времени для обработки этого количества переменных с помощью Power Query Engine.

Конечно, этот пример был преувеличенным примером слишком большого числа переменных. У вас никогда не было бы 1800 переменных. Однако этот пример также был для переменной с единственным простым числовым значением. В большинстве случаев ваши переменные представляют собой таблицы со многими строками и столбцами данных. Таким образом, это может произойти в реальном сценарии для вас даже с помощью сотен шагов или переменных. другими словами, вам нужно посмотреть количество переменных.

Слишком много переменных вызовет проблемы с производительностью!

Каково решение?

Ну, если число переменных является причиной проблемы,  в первую очередь можно уменьшить количество переменных. Если я изменю запрос выше на тот, что представлен ниже, я получу результат менее чем за секунду!

Вышеуказанный запрос выполняется менее чем за секунду, по сравнению с предыдущим запросом, который занял 15 минут! Единственное различие - это число переменных. Итак, вот  вот выдержка для этого поста:

Посмотрите количество переменных (шагов) в Power Query: если переменных слишком много, то лучше всего объединить некоторые из них.

Важное примечание. Не подумайте, что вам нужно объединить все ваши переменные. Обычно вы не видите проблемы с производительностью при менее ста переменных, эта проблема начинает появляться, когда число выходит за рамки этого. Один из важных моментов, который вам нужно учитывать, заключается в том, что если вы комбинируете переменные вместе, то отладка, устранение неполадок или обслуживание кода будет сложнее. Поэтому используйте это решение только в случае необходимости.

No Comments

Add a Comment