Схема потока данных с трофеем над блоком, обозначающим этапы процесса.

От «медленных процессов обработки данных» к потокам данных: революция в производительности второго поколения в Microsoft Fabric.

Как последние улучшения Dataflow меняют наш подход к игре

Делиться

db89f50bdec32eb0e2258d6c2d2c25eb

Среди множества анонсов с недавней конференции FabCon Europe в Вене, один из них, возможно, остался незамеченным, касался улучшений производительности и оптимизации затрат для Dataflows Gen2.

Прежде чем мы перейдем к объяснению того, как эти улучшения повлияют на вашу текущую настройку Dataflows, давайте сделаем шаг назад и кратко рассмотрим Dataflows. Для тех, кто впервые сталкивается с Microsoft Fabric, Dataflow Gen2 — это элемент Fabric, не требующий или требующий минимального программирования, используемый для извлечения, преобразования и загрузки данных (ETL).

Dataflow Gen2 предоставляет множество преимуществ:

  • Воспользуйтесь более чем 100 встроенными коннекторами для извлечения данных из множества источников.
  • Используйте привычный графический интерфейс Power Query для применения десятков преобразований к данным без написания единой строки кода — мечта многих разработчиков-любителей.
  • Сохраните результаты преобразования данных в виде дельта-таблицы в OneLake, чтобы преобразованные данные могли использоваться различными механизмами Fabric (Spark, T-SQL, Power BI и др.).

Однако простота обычно имеет свою цену. В случае с Dataflows это оказалось значительно более высоким потреблением CU по сравнению с решениями, ориентированными на код, такими как блокноты Fabric и/или скрипты T-SQL. Это уже хорошо объяснено и рассмотрено в двух замечательных статьях в блоге моих коллег-MVP, Гилберта Кевовилье (Fourmoo): «Сравнение Dataflow Gen2 и Notebook по стоимости и удобству использования» и Степана Ресла: «Копирование действий, Dataflows Gen2 и блокноты против списков SharePoint», поэтому я не буду тратить время на обсуждение прошлого. Вместо этого давайте сосредоточимся на том, что настоящее (и будущее) принесет Dataflows!

Изменения в модели ценообразования

c23403f310cbddb134eb48e60a7e5b94

Давайте кратко рассмотрим то, что показано на иллюстрации выше. Ранее каждая секунда работы Dataflow Gen2 оплачивалась по тарифу 16 CU (CU расшифровывается как Capacity Unit (единица мощности), представляющая собой набор ресурсов — ЦП, память и ввод-вывод — используемых в синергии для выполнения определенной операции). В зависимости от размера мощности Fabric вы получаете определенное количество единиц мощности — F2 предоставляет 2 CU, F4 — 4 CU и так далее.

Вернемся к нашему сценарию с потоками данных. Давайте разберем это на примере из реальной жизни. Допустим, у вас есть поток данных, который выполняется в течение 20 минут (1200 секунд)…

  • Ранее выполнение этого потока данных обошлось бы вам в 19 200 вычислительных единиц : 1200 секунд * 16 вычислительных единиц.
  • Теперь выполнение этого процесса Dataflow обойдется вам в 8100 CU : 600 секунд (первые 10 минут) * 12 CU + 600 секунд (после первых 10 минут) * 1,5 CU

Чем дольше выполняется ваш Dataflow, тем больше потенциальная экономия в CU (единицах ресурсов) вы получите.

Это само по себе удивительно, но дело не только в этом. Конечно, приятно получать меньшую плату за тот же объем работы, но что, если бы мы могли сократить эти 1200 секунд, скажем, до 800? Это позволило бы сэкономить не только вычислительные ресурсы, но и время анализа, поскольку данные обрабатывались бы быстрее. И именно об этом и будут следующие два улучшения…

Современный оценщик

Новая функция предварительного просмотра, получившая название Modern Evaluator, позволяет использовать новый механизм выполнения запросов (работающий на .NET Core версии 8) для запуска потоков данных. Согласно официальной документации Microsoft, потоки данных, использующие Modern Evaluator, могут обеспечить следующие преимущества:

  • Более быстрое выполнение потока данных
  • Более эффективная обработка
  • Масштабируемость и надежность
20ae2fea9aa820b99841f4a05dc2fd17

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

Разделенные вычисления

Ранее логика потока данных выполнялась последовательно. Следовательно, в зависимости от сложности логики, выполнение определенных операций могло занимать некоторое время, из-за чего другие операции в потоке данных должны были ожидать в очереди. Благодаря функции разделенных вычислений (Partitioned Compute) поток данных теперь может выполнять части логики преобразования параллельно, тем самым сокращая общее время выполнения.

В настоящий момент существуют определенные ограничения на то, когда запустится функция распределенных вычислений. А именно, использовать эту новую функцию могут только коннекторы ADLS Gen2, Fabric Lakehouse, Folder и Azure Blob Storage. Подробнее о том, как это работает, мы поговорим позже в этой статье.

3, 2, 1… Мотор!

Итак, пришло время проверить данные, предоставленные Microsoft, и выяснить, есть ли (и в какой степени) прирост производительности между различными типами потоков данных.

Вот наша ситуация: я сгенерировал 50 CSV-файлов, содержащих фиктивные данные о заказах. Каждый файл содержит приблизительно 575 000 записей, таким образом, всего около 29 миллионов записей (примерно 2,5 ГБ данных). Все файлы уже хранятся в папке SharePoint, что позволяет провести корректное сравнение, поскольку Dataflow Gen1 не поддерживает OneLake Lakehouse в качестве источника данных.

5482fb5f1a495d6ee448a453ee29c89a

Я планирую провести две серии тестов: во-первых, включу в сравнение Dataflow Gen1. В этом сценарии я не буду записывать данные в OneLake с помощью Dataflow Gen2 (да, я знаю, это противоречит назначению Dataflow Gen2), так как я хочу сравнивать «яблоки с яблоками» и исключить время, необходимое для записи данных в OneLake. Я протестирую следующие четыре сценария, в которых буду выполнять некоторые базовые операции по объединению и загрузке данных, применяя некоторые базовые преобразования (переименование столбцов и т. д.):

  1. Используйте Dataflow Gen1 (старый поток данных Power BI).
  2. Используйте Dataflow Gen2 без каких-либо дополнительных улучшений оптимизации.
  3. Используйте Dataflow Gen2, включив только современный инструмент оценки.
  4. Используйте Dataflow Gen2 с включенными функциями современной оценки и распределенных вычислений.

Во второй серии я сравню три варианта Dataflow Gen2 (пункты 2-4 из приведенного выше списка) с включенной записью данных в хранилище Lakehouse.

Давайте начнём!

Dataflow Gen1

Весь процесс преобразования в старой версии Dataflow Gen1 довольно прост — я просто объединил все 50 файлов в один запрос, разделил столбцы по разделителю и переименовал их. Так что ничего действительно сложного здесь не происходит:

bdf4a02d03b7fd753993e93317a73779

Ко всем трем потокам данных Gen2 был применен один и тот же набор операций/преобразований.

Пожалуйста, имейте в виду, что с Dataflow Gen1 невозможно вывести данные в виде таблицы Delta в OneLake. Все преобразования сохраняются внутри самого Dataflow, поэтому, когда вам понадобятся эти данные, например, в семантической модели, вам необходимо учитывать время и ресурсы, необходимые для загрузки/обновления данных в режиме импорта семантической модели. Но об этом позже.

Dataflow Gen2 без улучшений

Теперь давайте сделаем то же самое, но на этот раз используя новый Dataflow Gen2. В этом первом сценарии я не применял ни одну из этих новых функций оптимизации производительности.

c4f214445ab2f3614a70881e3d5a6cf5

Dataflow Gen2 с современным оценщиком

Итак, настал момент истины — давайте теперь включим современный механизм оценки запросов для Dataflow Gen2. Я перейду в «Параметры», а затем на вкладке «Масштабирование» установлю флажок «Разрешить использование современного механизма оценки запросов»:

30e821a5a946291145ef8b5e5407148e

Всё остальное остаётся точно таким же, как и в предыдущем случае.

Dataflow Gen2 с современным оценщиком и разделенными вычислениями

В последнем примере я включу обе новые функции оптимизации в параметрах Dataflow Gen2:

62bfe910fec2ad379101d7580ccd12e9

Теперь перейдём к тестированию и анализу результатов. Я буду последовательно выполнять все четыре потока данных из конвейера Fabric, чтобы убедиться, что каждый из них работает изолированно от других.

2ed45853d8e44cf21b009f9178f1e3ae

И вот результаты:

14501dad3f32fa6e2160960b9a92f706

Очевидно, что в данном конкретном сценарии разделение данных не имело большого значения, и я более подробно рассмотрю, как работает разделение данных, в одной из следующих статей, рассматривая различные сценарии. Dataflow Gen2 с включенным Modern Evaluator значительно превзошел все остальные , обеспечив экономию в 30% по сравнению со старым Dataflow Gen1 и примерно 20% экономии времени по сравнению с обычным Dataflow Gen2 без каких-либо оптимизаций! Не забывайте, что эта экономия также отражается на экономии CU, поэтому окончательная оценочная стоимость CU для каждого из используемых решений выглядит следующим образом:

  • Dataflow Gen1: 550 секунд * 12 CU = 6600 CU
  • Dataflow Gen2 без оптимизации: 520 секунд * 12 CU = 6,240 CU
  • Dataflow Gen2 с Modern Evaluator: 368 секунд * 12 CU = 4,416 CU
  • Dataflow Gen2 с современным оценщиком и секционированием: 474 секунды * 12 CU = 5,688 CU

Однако я хотел перепроверить и подтвердить точность своих расчетов. Поэтому я открыл приложение Capacity Metrics и посмотрел на показатели, которые оно собирает:

62958859b8f6c57c2584499e5b6d7444

Хотя общий результат точно отражает цифры, отображаемые в журнале выполнения конвейера, точное количество использованных CU в приложении отличается:

  • Dataflow Gen1: 7,788 CUs
  • Dataflow Gen2 без оптимизации: 5,684 CU.
  • Dataflow Gen2 с Modern Evaluator: 3,565 CUs
  • Dataflow Gen2 с современным инструментом оценки и секционированием: 4,732 CU.

Таким образом, согласно приложению Capacity Metrics, Dataflow Gen2 с включенным Modern Evaluator потребил менее 50% ресурсов по сравнению с Dataflow Gen1 в этом конкретном сценарии! В ближайшие дни/недели я планирую создать больше тестовых сценариев и предоставить более полную серию тестов и сравнений, которая также будет включать время записи данных в OneLake (с использованием Dataflow Gen2) по сравнению со временем, необходимым для обновления семантической модели режима импорта, которая использует старый Dataflow Gen1.

Заключение

По сравнению с другими (ориентированными на код) вариантами, Dataflows (справедливо?) считались «самым медленным и наименее производительным вариантом» для загрузки данных в Power BI/Microsoft Fabric. Однако в мире Fabric все быстро меняется, и мне нравится, как команда Fabric Data Integration постоянно улучшает продукт. Честно говоря, мне любопытно посмотреть, как будет меняться производительность и стоимость Dataflows Gen2 с течением времени, чтобы мы могли рассмотреть возможность использования Dataflows не только для задач загрузки и преобразования данных с минимальным или полным отсутствием кода, но и в качестве жизнеспособной альтернативы решениям, ориентированным на код, с точки зрения соотношения стоимости и производительности.

Спасибо за прочтение!

Оговорка: Я не имею никаких связей с Microsoft (за исключением статуса Microsoft Data Platform MVP), и Microsoft не обращалась ко мне с просьбой написать эту статью и не предоставляла мне спонсорскую поддержку.

Источник: towardsdatascience.com

✅ Найденные теги: Microsoft Fabric, новости, Обработка Данных, От, Потоки Данных, Производительность, Революция

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

dummy-img
Силуэт лица с диаграммой связи на голове, символизирующий думы и идеи.
ideipro logotyp
Руки режут свежий хлеб на деревянной доске.
Женщина с красными волосами смотрит через металлическую сферу на фоне кирпичной стены.
Мужчина заряжает электромобиль на зимней стоянке, снег, дальний план - деревья и горы.
Человек спит в кровати под красным пледом, солнечный свет падает на подушку.
Человек в смокинге держит планеты Земля и Марс, символизируя космические достижения.
Твердотельный аккумулятор Donut на выставке, показывает замещающий литий-ион стоимость.
Image Not Found
dummy-img

Спрос на хранилища для ИИ привёл к 24% росту прибыли производителей памяти NAND

Умные люди из аналитического агентства TrendForce провели анализ текущей ситуации производителей микросхем памяти NAND и пришли к выводу, что за последний квартал 2025 года их выручка прилично увеличилась, а показатели некоторых компаний прилично выделяются на фоне остальных.…

Мар 5, 2026
ideipro logotyp

Bitget Wallet интегрирует DT One для пополнения мобильной связи в более чем 170 странах

Bitget Wallet, приложение для повседневных финансов, объявил о партнерстве с DT One, которое позволит осуществлять пополнение мобильной связи напрямую внутри кошелька с использованием стейблкоинов, связывая ончейн-балансы с повседневными телеком-сервисами. Благодаря инфраструктуре DT One пользователи Bitget Wallet получают…

Мар 5, 2026
Человек в смокинге держит планеты Земля и Марс, символизируя космические достижения.

Почему SpaceX может выйти на биржу и с чем это может быть связано

Мы ведь явно не воспринимаем всерьез центры обработки данных в космосе? Элизабет Лопатто, старший репортер. Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной странице вашего сайта. Все…

Мар 5, 2026
Твердотельный аккумулятор Donut на выставке, показывает замещающий литий-ион стоимость.

Согласно результатам испытаний, твердотельная батарея Donut Lab способна выдерживать (экстремальные) температуры.

Разработанная финским стартапом батарея не только выдержала экстремальные условия высокой температуры, но и фактически увеличила свою емкость. Эндрю Дж. Хокинс, редактор раздела «Транспорт». Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в…

Мар 5, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых