Быстрый старт с Azure Synapse на dbt Cloud
В dbt Labs мы всегда стремились поддерживать аналитиков там, где они находятся. Поэтому мы рады сообщить, что теперь аналитики в экосистеме Microsoft могут использовать dbt Cloud не только с Microsoft Fabric, но и с Azure Synapse Analytics Dedicated SQL Pools (ASADSP).
С самого начала dbt люди проявляли интерес к платформам данных MSFT. Огромная благодарность Mikael Ene и Jacob Mastel за их усилия в 2019 году по созданию оригинальных адаптеров SQL Server (dbt-sqlserver и dbt-mssql, соответственно).
Путь адаптера dbt для Azure Synapse, dbt-synapse, тесно связан с моим путем в dbt. Я был тем, кто форкнул dbt-sqlserver в dbt-synapse в апреле 2020 года. Я узнал о dbt всего за месяц до этого и сразу понял, что моей команде нужен этот инструмент. С большой помощью от Джереми и экспертов из Microsoft моя команда и я запустили его и начали использовать. Когда я покинул свою команду в Avanade в начале 2022 года, чтобы присоединиться к dbt Labs, я пошутил, что на самом деле не покидаю команду; я просто временно встраиваюсь в dbt Labs, чтобы ускорить внедрение dbt Labs в Cloud. Два года спустя я могу сказать своей команде, что миссия выполнена! Спасибо всем, кто внес вклад в адаптеры TSQL, как напрямую в GitHub, так и в каналах Slack сообщества. Интеграция не существовала бы без вас!
Лучшие практики для Fabric
С введением поддержки dbt Cloud для Microsoft Fabric и Azure Synapse Analytics Dedicated SQL Pools мы открываем новые возможности для аналитиков в экосистеме Microsoft.
Цель этого блога — обеспечить отличный опыт как для
- конечных пользователей-аналитиков данных, которые полагаются на продукты данных, созданные с помощью dbt, так и
- аналитиков, которые должны в основном тратить время на создание и поддержку продуктов данных, а не на поддержку и развертывание инфраструктуры
- инженеров данных, которые сосредоточены на перемещении и загрузке данных в Synapse
Для достижения этой цели в этом посте будут рассмотрены четыре основные области:
- Microsoft Fabric: будущее хранения данных в стеке Microsoft/Azure
- стратегические рекомендации по созданию среды Synapse
- моделирование данных в dbt: стиль Synapse
- соображения для верхнего и нижнего уровня проекта dbt на базе Synapse
С этим давайте начнем!
Fabric — это будущее
Многие команды данных в настоящее время используют выделенные пулы Azure Synapse. Однако Fabric Synapse Data Warehouse — это будущее хранения данных в экосистеме Microsoft. Azure Synapse Analytics останется доступным еще несколько лет, но основное внимание Microsoft сосредоточено на Fabric, как мы можем видеть в их дорожной карте и запусках.
Поскольку миграции платформ данных сложны и требуют много времени, вполне разумно продолжать использовать dbt с Azure Synapse в течение следующих двух лет, пока идет миграция. К счастью, если ваша команда уже использует ASADSP, переход на новое облачное предложение будет гораздо проще, чем миграция с локальных баз данных в облако.
Кроме того, если вы уже управляете своим хранилищем Synapse с помощью проекта dbt, вы получите выгоду от еще более плавного процесса миграции. Ваши операторы DDL будут обрабатываться автоматически, что уменьшит необходимость в ручной переработке.
В конечном итоге, Fabric — это будущее хранения данных для клиентов Microsoft, а Synapse будет выведен из эксплуатации в еще не объявленный срок окончания жизни.
Fabric предлагает неоспоримый потенциал благодаря:
- полностью разделенному хранению и вычислениям, и
- оплате за секунду вычислений.
Эти два аспекта значительно упрощают раздел ниже о предоставлении ресурсов.
Для получения дополнительной информации см.:
- официальный гид: Миграция: выделенные SQL-пулы Azure Synapse Analytics в Fabric.
- этот блог о будущем Azure Synapse Analytics
Предоставление ресурсов
Вот некоторые соображения, если вы настраиваете среду с нуля. Если инфраструктура нескольких выделенных SQL-пулов Synapse и репозиторий Git уже существуют, вы можете перейти к следующему разделу, хотя не помешает освежить в памяти приведенное ниже.
минимизация пулов; максимизация DWU
определения
- выделенные SQL-пулы: фактически одно хранилище данных
- Единицы хранилища данных (DWU): размер кластера
количество пулов
С Synapse хранилище данных является как хранилищем, так и вычислительным ресурсом. Это означает, что для доступа к данным кластер должен быть включен и разогрет.
Если у вас есть только одна команда аналитиков, у вас должно быть два SQL-пула: один для разработки и один для производс тва. Если у вас есть несколько отдельных команд, которые будут моделировать данные в Synapse с использованием dbt, рассмотрите возможность использования парадигмы Mesh в dbt Cloud для обеспечения совместной работы между командами.
Каждый из них должен быть на самом высоком уровне, который вы можете себе позволить. Вы также должны рассмотреть возможность покупки «годовых резервов» для значительной скидки.
Некоторые люди рекомендуют рассмотреть возможность масштабирования пулов вверх и вниз в зависимости от спроса. Однако, исходя из личного опыта, я узнал, что эта оптимизация не является бесплатной и потребует значительных инвестиций не только для создания, но и для поддержки. Достаточно большой экземпляр, который включен всякий раз, когда это необходимо, освобождает как минимум половину времени инженера для работы над фактическим моделированием данных, а не над поддержкой платформы.
DWU
Начальный уровень — DW100c
, который стоит $1.20/час и имеет ограничения, такие как разреше ние только 4 одновременных запросов. Чтобы добавить 4 одновременных запроса, вы должны увеличить уровень DWH. За каждое увеличение на 100 c
вы получаете дополнительные 4 одновременных запроса.
Если это хранилище предназначено для того, чтобы быть единственным источником правды для аналитиков данных, вы должны спроектировать его для этой цели. Скорее всего, это означает оплату за более высокий уровень. Как и в случае с обсуждаемой выше возможностью экономии денег за счет включения и выключения кластера по мере необходимости, оплата за более низкий уровень вводит еще один ряд проблем. Если ограничение в 4 одновременных запроса становится узким местом, ваш выбор заключается в том, чтобы либо
- спроектировать инфраструктуру для перемещения данных из Synapse в базу данных Azure SQL или в другое место
- увеличить уровень оплачиваемой услуги (т.е. увеличить
DWU
)
Я считаю, что минимизация расходов на облако не должна происходить за счет производительности разработчиков — обе стороны уравнения должны быть учтены. Таким образом, я в основном поддерживаю второй из двух вышеупомянутых вариа нтов.
Ресурсы для развертывания
В экосистеме Microsoft развертывание хранилищ данных чаще всего осуществляется с помощью Azure Data Factory, а не конвейеров Azure DevOps или GitHub Actions. Мы рекомендуем отделить развертывания проектов dbt от любых конвейеров загрузки, определенных в ADF.
Однако, если вы должны использовать ADF в качестве конвейера развертывания, возможно использование API dbt Cloud. Запуск dbt Core в Azure Data Factory может быть сложной задачей, так как нет простого способа установить и вызвать dbt Core, потому что нет простого способа установить и запустить Python. Обходные пути не идеальны, например: Настройка вызовов dbt через Azure Serverless Functions и их вызов из ADF.