Как мы сократили время выполнения в Alteryx с 6 часов до 9 минут с помощью dbt и Snowflake
Alteryx — это платформа визуальной трансформации данных с удобным интерфейсом и инструментами перетаскивания. Тем не менее, Alteryx может испытывать трудности с увеличением сложности в рамках конвейера данных организации и может стать неоптимальным инструментом, когда компании начинают работать с большими и сложными преобразованиями данных. В таких случаях переход на dbt может быть естественным шагом, поскольку dbt предназначен для управления сложными конвейерами преобразования данных более масштабируемым, эффективным и явным образом. Также этот переход включал миграцию с локального SQL Server на облачные вычисления Snowflake. В этой статье мы описываем различия между Alteryx и dbt и как мы сократили время выполнения клиента в Alteryx с 6 часов до 9 минут с помощью dbt и Snowflake в Indicium Tech.
Введение
Преобразование данных в соответствии с бизнес-правилами может быть сложной задачей, особенно с увеличением объема данных, собираемых компаниями. Чтобы уменьшить такую сложность, решения для преобразования данных, разработанные как инструменты перетаскивания, могут рассматриваться как более интуитивные, поскольку аналитики могут визуализировать шаги, предпринимаемые для преобразования данных. Примером популярного инструмента преобразования с перетаскиванием является Alteryx, который позволяет бизнес-аналитикам преобразовывать данные, перетаскивая операторы на холсте. Графический интерфейс Alteryx Designer представлен на Рисунке 1.
Тем не менее, по мере усложнения рабочих процессов данных Alteryx не хватает модульности, документации и возможностей контроля версий, которые требуются этим потокам. В этом смысле dbt может быть более подходящим решением для построения устойчивых и модульных конвейеров данных благодаря своему фокусу на моделировании данных.
Эта статья описывает наш опыт миграции рабочего процесса данных крупного клиента из Alteryx в dbt в течение трех месяцев. После рефакторинга моделей время выполнения модели было сокращено с 6 часов до 9 минут в dbt, с более четкой родословной моделей и лучшей документацией и контролем версий.
Для этого мы:
- Определили, какие модели будут приоритетными вместе с командой клиента,
- Определили, какой подход будет использоваться для рефакторинга рабочих процессов Alteryx в модели dbt,
- Провели аудит рефакторированных моделей, чтобы убедиться, что они соответствуют выходным данным из оригинального рабочего процесса Alteryx, и
- Заменили источники данных клиентов на рефакторирова нные модели dbt.
Мы надеемся, что наш опыт будет полезен аналитическим инженерам, которые ищут высокоуровневую структуру, чтобы помочь в переходе от рабочих процессов Alteryx к dbt, и что это поможет им увидеть общую картину в рефакторинге моделей.
Для кого не предназначен этот пост?
Хотя мы считаем, что dbt является лучшим инструментом преобразования, чем Alteryx для большинства случаев использования, мы признаем, что миграция из Alteryx в dbt не подходит для всех. Alteryx разработан для аналитиков данных, но его возможности хорошо подходят для бизнес-пользователей, включая маркетинг, продажи, бухгалтерию и HR. Alteryx может быть достаточно хорошим инструментом, когда:
- У вас небольшое количество преобразований
- Преобразования относительно просты
- Преобразования не нужно выполнять часто
- Вы хотите, чтобы этот процесс управлялся нетехничес кими пользователями
Сосредоточившись больше на видимости конвейера данных и более дружественном пользовательском интерфейсе, Alteryx превосходит при работе с меньшими, более понятными потоками данных, где аналитический инженер (AE) может действительно визуализировать, как данные преобразуются от источника до каждого выхода.
Когда дело доходит до обработки сложных структур данных, dbt имеет несколько функций, которые делают его превосходящим Alteryx. Как мы увидим далее с более подробной информацией, в контексте перехода стека данных, когда длинные и сложные потоки данных являются обычным явлением, dbt часто быстрее, чем Alteryx. Это происходит по нескольким причинам (Таблица 2):
Аспект | dbt | Alteryx |
---|---|---|
Опыт разработки | Интерфейс командной строки и IDE | Графический пользовательский интерфейс |
Цель | Разработан для преобразования и моделирования данных | Возможности манипуляции и анализа данных |
Оптимизация | Использует возможности оптимизации запросов | Не использует повторно тот же источник, который уже был выполнен моделью, и запускает его снова |
Логика выполнения | Обрабатывает только измененные данные для больших наборов данных (инкрементальный запуск) | Обрабатывает все данные каждый раз, когда он запускается |
Пошаговое руководство по переносу рабочих процессов Alteryx в модели dbt
Описание случая
Этот блог-пост описывает консалтинговый проект для крупного клиента в Indicium Tech®, который останется анонимным. Клиент — это глобальная технологическая компания, специализирующаяся на предоставлении решений для управления корпоративным контентом и автоматизации. Несколько программных продуктов для аналитики данных были внедрены организацией для хранения и анализа данных. Поскольку этап преобразования данных не сосредоточен в одном программном обеспечении, анализ и преобразование данных со временем стали все более сложными и дорогими. Особенно потому, что компания приобрела множество инструментов для преобразования данных (таких как Alteryx, Tableau Prep, Power BI и хранимые процедуры SQL Server), которые использовались в разных командах. Это затрудняло наличие единого источника правды и централизованной платформы преобразования данных.
Когда клиент нанял Indicium, у них было десятки рабочих процессов Alteryx, построенных и выполняемых ежедневно исключительно для маркетинговой команды, которая была в центре внимания проекта. Для маркетинговой команды рабочие процессы Alteryx должны были выполняться в правильном порядке, так как они были взаимозависимы, что означает, что один рабочий процесс Alteryx использовал результат предыдущего, и так далее. Основные рабочие процессы Alteryx, выполняемые ежедневно маркетинговой командой, занимали около 6 часов. Еще один важный аспект, который нужно было учитывать, заключался в том, что если модель не завершила выполнение, когда следующая модель начала выполняться, данные были бы неполными, требуя повторного запуска рабочего процесса. Выполнение всех моделей обычно планировалось на ночь и раннее утро, чтобы данные были актуальными на следующий день. Но если накануне вечером произошла ошибка, данные были бы неверными или устаревшими. Рисунок 3 иллюстрирует планировщик.
Происхождение данных было аспектом, который добавлял много дополнительной работы, потому что было трудно определить, какие модели зависели от других при таком количестве построенных рабочих процессов Alteryx. Когда количество рабочих процессов увеличивалось, требовалось много времени, чтобы создать представление этой родословной в другом программном обеспечении. Таким образом, если имя столбца изменялось в модели из-за изменения в источнике модели, аналитики по маркетингу должны были бы сопоставить, какие модели ниже по потоку были затронуты таким изменением, чтобы внести необходимые корректировки. Поскольку родословная модели была сопоставлена вручную, было сложно поддерживать ее в актуальном состоянии.
Одной из наших основных задач было рефакторинг рабочих процессов Alteryx, которые маркетинговая команда использовала каждый день. Как вы уже могли догадаться, этот рефакторинг был выполнен путем создания моделей в dbt. Конструкция и описание того, как был выполнен этот рефакторинг, представлены далее.
Как мы рефакторили (пошаговое руководство на основе нашего опыта)
Ниже мы предоставляем высокоуровневую структуру с шагами, которые мы следовали для рефакторинга рабочих процессов Alteryx в dbt:
Шаг 1: Начните с рефакторинга меньших рабочих процессов Alteryx, а затем переходите к более сложным
Понимание того, с чего начать процесс рефакторинга, очень важно, так как это напрямую влияет на восприятие клиентом ценности доставки. Для некоторых клиентов может быть лучше начать с небольших моделей, чтобы понять лучший подход к рефакторингу моделей. Начало с более коротких и менее сложных рабочих процессов Alteryx может быть способом создания доказательства концепции и получения небольших/быстрых побед. Также этот подход может быть использован для предоставления доказательств превосходной производительности dbt для ске птически настроенных клиентов.
С другой стороны, некоторые клиенты могут предпочесть начать с самых важных или наиболее используемых моделей, чтобы основные отчеты бизнес-аналитики работали на dbt как можно скорее. Хотя этот подход позволяет достичь большей ценности, вероятно, потребуется больше времени для рефакторинга этих рабочих процессов из-за их сложности преобразований и шагов, вовлеченных в рабочий процесс.
Мы приняли смешанный подход, начав с одного или двух более простых рабочих процессов, чтобы получить опыт и уверенность в процессе рефакторинга, а затем перейдя к рефакторингу самых важных рабочих процессов клиента. Этот подход обеспечивает отличный баланс между временем и доставкой ценности.
Шаг 2: Определите исходные модели и рефакторите Alteryx слева направо
Первый шаг — это проверить все источники данных и создать одно общее выражение таблицы (CTE) для каждого источника, упомянутого в конкретном рабочем процессе Alteryx, который рефакторится, чтобы его было легко повторно использовать в модели.
Важно нажать на каждый источник данных (зеленые значки книг на самой левой стороне Рисунка 5) и проверить, были ли выполнены какие-либо преобразования внутри этого запроса источника данных. Очень часто значок источника содержит более одного источника данных или фильтра, поэтому этот шаг важен. Следующий шаг — следовать за рабочим процессом и транскрибировать преобразования в SQL-запросы в моделях dbt, чтобы воспроизвести те же преобразования данных, что и в рабочем процессе Alteryx.
На этом этапе мы определили, какие операторы использовались в источнике данных (например, объединение данных, упорядочивание столбцов, группировка и т.д.). Обычно операторы Alteryx довольно понятны, и вся необходимая информация для понимания отображается на левой стороне меню. Мы также проверили документацию, чтобы понять, как каждый оператор Alteryx работает за кулисами.
Мы следовали руководству dbt Labs о том, как рефакторить устаревшие SQL-запросы в dbt и некоторые лучшие практики. После того как мы завершили рефакторинг всех рабочих процессов Alteryx, мы проверили, совпадает ли выход Alteryx с выходом рефакторированной модели, построенной на dbt.