Alteryx. Создание приложения, workflow, ETL
Процесс разработки аналитического приложения Alteryx
Разработка аналитического решения делиться на следующие этапы:
1) Загрузка данных (создание хранилища)
2) Обработка данных
3) Создание модели данных
4) Визуализация
Data Blending в Alteryx
Рисунок 1. Data Blending в Alteryx
• Доступ к любым источникам данных
• Создание интуитивных рабочих потоков (визуальное программирование)
• Огромные возможности для обработки данных
• Возможность создания хранилища
Alteryx позволяет подключаться и обрабатывать данные из множества источников. При этом используется отличный от других продуктов подход разработки, а именно визуальное программирование. Т.е. Alteryx предлагает полный набор возможностей для подготовки данных с помощью манипулирования графическими объектами – без необходимости программирования. Обработка данных сводится к созданию интуитивных рабочих потоков (workflows).
Загрузка данных из разных источников Alteryx (создание хранилища в Alteryx)
Рисунок 2. Рабочий поток для создания хранилища данных – Демонстрация
Показать пример загрузки из каждого источника (по 1 – 2 таблицы). Далее показать заранее подготовленный поток с комментариями.
Таблицы для демонстрации:
1) Microsoft Access: Orders, Customers.
2) Microsoft Excel: Employees, Offices.
3) XML: Suppliers.
Демонстрация:
1) Показать все исходные данные (папка Source Data).
2) Открыть Alteryx и создать новый поток Extract, предназначенный для создания хранилища.
3) На диске создать папку YXDB, в которую будут выгружаться данные. Формат данных Alteryx (Alteryx Database), *.yxdb – самый эффективный формат хранения файлов для чтения и записи в Alteryx (по аналогии *.qvd файлами Qlik).
4) Добавить на лист 3 блока Tool Container для каждого типа источника: Microsoft Access, Microsoft Excel и XML.
Элемент Tool Container является частью раздела документирования, позволяя объединить несколько элементов в один блок, содержимое которого можно сворачивать и разворачивать.
5) В контейнер Microsoft Excel добавить элемент Input Data и настроить его для загрузки таблицы с заказами (Orders).
Элемент Input Data предназначен для загрузки данных из файла или подключения к базе данных.
6) В тот же контейнер добавить второй элемент Input Data и настроить его для загрузки таблицы с покупателями (Customers).
7) К каждому созданному элементу загрузки данных добавить элемент Output Data и настроить его для выгрузки в соответствующий файл yxdb.
Элемент Output Data предназначен для загрузки данных из файла или подключения к базе данных.
8) Повторить аналогичные действия для остальных источников.
9) Запустить поток на выполнение и продемонстрировать появившиеся на диске файлы.
Рисунок 3. Рабочий поток для создания хранилища данных – Итоговый результат
Трансформация данных из хранилища в Alteryx (ETL-слой Alteryx)
Рисунок 4. Рабочий поток для обработки данных (ETL) – Демонстрация
Используя таблицы из хранилища, показать пример создания таблицы фактов (Sales). Далее продемонстрировать заранее заготовленный поток для создания справочников (Customers, Employees, Products и Suppliers) с комментариями.
Демонстрация:
1) Создать новый поток Transform, предназначенный для трансформации данных из хранилища.
2) На диске создать папку QVX, в которую будут выгружаться обработанные данные.
Формат данных Qlik (QlikView data eXchange), *.qvx – открытый формат обмена данными Qlik для импорта данных из нестандартных источников (в данном случае из Alteryx).
3) Добавить на лист элементы для загрузки заказов (Orders), грузоотправителей (Shippers) и информации по заказам (Order Details).
4) К каждому добавленному элементу добавить блок Select для предварительной обработки.
С помощью элемента Select можно выбрать только нужные для загрузки поля, задать порядок загрузки полей, определить тип данных для каждого поля, а также добавить описание.
5) Настроить элементы Select под каждую таблицу:
1. Orders (Заказы):
• Для поля OrderDate изменить тип данных на Date.
Нет необходимости хранить время.
• Для поля ShipperID изменить тип данных на Int32.
Целочисленное ключевое поле.
• Для поля Freight изменить тип данных на Float.
Нам необходимо хранить всего 2 знака после запятой.
2. Shippers (Грузоотправители):
• Для поля ShipperID изменить тип данных на Int32.
Целочисленное ключевое поле.
3. Order Details (Информация по заказам):
Никаких действий производить не требуется.
6) Проанализировать таблицы Orders и Shippers для оценки связи между ними.
Так как справочник грузоотправителей (Shippers) состоит всего из одного не ключевого поля CompanyName (Наименование компании), то правильнее будет в таблице Orders не хранить ссылку на справочник, а заменить ее наименованием компании грузоотправителя.
7) Для осуществления замены добавить на лист элемент Find Replace, соединить его с заказами (вход F) и грузоотправителями (вход R).
Элемент Find Replace предназначен для поиска данных в поле из одного источника и его замены с помощью данных в поле из другого источника (аналог Qlik – Mapping Table).
8) Зайти в настройки элемента поиска и замены. В параметре для выбора целевого поля (Find Within Field (Target)), то есть того поля, значения которого мы будем заменять, будет выведена ошибка – Bad Field Type. Эта ошибка свидетельствует о том, что в источнике нет подходящего для замены поля. В параметре для выбора поля источника (Search Term Field (Source)) будет доступно лишь одно значение – CompanyName, а нам же для желаемого результата необходимо указать в обоих случаях поле ShipperID. Дело в том, что элемент поиска и замены работает со строковыми типами данных, поэтому перед тем как приступить к настройке этого элемента, необходимо изменить тип данных для поля ShipperID с числового на строковый.
9) Для заказов и грузоотправителей зайти в настройки объектов Select и произвести следующие настройки:
1. Shippers (Грузоотправители):
• Для поля ShipperID изменить тип данных на String(11).
2. Orders (Заказы):
• Для поля ShipperID изменить тип данных на V_WString(40).
Так как в это поле будут помещены значения из поля CompanyName таблицы Shippers, то оно должно быть аналогичного типа. Если бы мы оставили меньшую длину строки, то мы бы получили сообщения об ошибках преобразования полей (строку в 40 символов нельзя поместить в строку в 11 символов, поэтому при замене такие значения будут обрезаны).
• Поле ShipperID переименовать на Shipper.
В это поле будут помещены значения из поля CompanyName таблицы Shippers.
10) Настроить элемента поиска и замены (см. рисунок 5):
1. Установить способ замены – Entire Field (Все поле).
2. В качестве целевого поля (Find Within Field (Target)) выбрать поле Shipper.
3. В качестве поля источника (Search Term Field (Source)) выбрать поле ShipperID.
4. В качестве поля, на значения которого будет произведена замена (Replace Found Text w/ Field), выбрать поле CompanyName.
Рисунок 5. Настройки элемента поиска и замены
11) Добавить элемент Browse для последующего предварительного просмотра результатов замены.
Элемент Browse позволяет просмотреть данные на выходе любого элемента в рабочем потоке.
12) Запустить поток на выполнение (комбинация клавиш Ctrl + R или кнопка Run Workflow, расположенная на панели инструментов) и проверить результат замены.
13) Добавить на лист элемент Join для соединения заказов (Orders) с их детализацией (Orders Details).
Элемент Join позволяет соединить 2 потока данных по общим полям. В итоговом выводе каждая строка будет содержать данные из обоих источников. У элемента есть 3 выхода: L, J и R. Каждый выход содержит определенную часть информации, которая зависит от результата соединения данных из входных потоков L и R.
14) Настроить элемент соединения:
1. В качестве общих полей из левого и правого источников задать поле OrderID.
OrderID – ключевое поле, в левой таблице (Orders) оно является первичным ключом, а в правой внешним (Orders Details).
2. Поле OrderDate переименовать на Date.
Так как таблица с заказами в нашем случае будет таблицей фактов, то переименуем его для простоты последующей обработки, например, создания на основании значений в этом поле календаря.
3. Поле OrderID из правой таблицы не загружать (автоматически переименовано в Right_OrderID).
В итоговой таблице нам нет нужды хранить копию ключа.
15) Добавить элемент Browse и проверить результат соединения источников. После проверки удалить элемент.
16) Добавить элемент Formula для расчета суммы продажи (SalesAmount) на основании цены (UnitPrice) и количества товара (Quantity).
Элемент Formula позволяет создать новые или обновить существующие поля, используя одно или несколько выражений.
17) Настроить элемент для создания нового поля:
1. В качестве выходного поля указать поле SalesAmount.
2. Для создаваемого поля выбрать тип Double.
3. В качестве выражения для его вычисления задать формулу: [UnitPrice] * [Quantity].
18) Добавить элемент Browse и проверить результат создания нового поля SalesAmount. После проверки удалить элемент.
19) К созданному потоку добавить элемент Output Data и настроить его для выгрузки в файл Sales.qvx.
Рисунок 6. Рабочий поток для обработки данных (ETL) – Итоговый результат
Создание модели данных из Alteryx в Qlik Sense
Рисунок 7. Модель данных в Qlik Sense