SQL-преобразование данных
В Fastboard данные для визуализаций преобразуются в несколько этапов с помощью последовательно выполненных SQL-скриптов.
Этап 1: Редактор скрипта загрузки
На этом этапе данные загружаются из источника данных во внутреннее хранилище Fastboard. В скрипте загрузки используется синтаксис и возможности Clickhouse (подробнее: https://clickhouse.com/docs/ru/sql-reference ). Данные, полученные с помощью скрипта загрузки хранятся в проекте в виде несвязанных таблиц.
Чтобы таблицу можно было добавить в проект, подключение к источнику этой таблицы должно находиться в списке "Подключения в проекте". Добавить его туда можно создав новое подключение, либо выбрав уже существующее из списка "Остальные подключения.
По умолчанию импорт каждой таблицы состоит из заголовка (например, Table "Brand") и трех секций:
Create @@@ - создает в clickhouse таблицу с указанными столбцами и типами данных
Delete @@@ - удаляет существующую таблицу из clickhouse при повторном запуске скрипта загрузки для корректной перезаписи данных
Read @@@ - считывает данные из источника, приводит типы данных к указанным и записывает в созданную ранее таблицу.
Этап 2: Конструктор моделей данных
Модель данных заменяет собой секцию FROM у запросов, по которым в конструкторе дашбордов строятся визуализации. Она строится в визуальном конструкторе и представляет собой набор таблиц проекта, соединенных операторами JOIN в одну. Моделей может быть произвольное количество, в зависимости от потребностей пользователя.
Этап 3: Конструктор дашбордов
В конструкторе дашбордов пользователь оперирует данными, обработанными в скрипте загрузки и объединенными в модель данных. На этом этапе доступны кастомные SQL-запросы в следующих блоках:
SQL-редактор виджета
Формирует набор данных для отдельно взятой визуализации. В редакторе доступны для редактирования три поля: Разрезы, Показатели, Группировки и фильтры.
Разрезы и показатели определяют секцию SELECT запроса и разделены для того, чтобы правильно построить диаграмму. Разрезы представляют собой измерения, а показатели -- меры(агрегируемые данные).
Группировки и фильтры определяют секции WHERE, ORDER BY и GROUP BY запроса.
Для агрегации показателей существуют встроенные функции (SUM, COUNT, AVG, MIN, MAX), а также "По выражению":
Показатель по выражению
Данная функция позволяет написать произвольное SQL-выражение для выбранного показателя. Это выражение будет добавлено в основной SQL-редактор виджета, в поле "Показатели", с указанием алиаса данного показателя.
Цвет по условию
Данная функция позволяет написать SQL-выражение для расчета и выбора цвета показателя из палитры. Например,
case
when Car.BRAND = 'Toyota' then '1'
when Car.BRAND = 'Mitsubishi' then '2'
else '3'
end
где цифры в одинарных кавычках это выбранные образцы цвета
SQL-редактор медиаблока
Медиаблок - виджет, позволяющий использовать текст с переменными, значение которых определяется SQL-выражением, а также картинки, также подставляющиеся с помощью SQL-запроса.
SQL-редактор медиаблока не имеет полей "Разрезы" и "Показатели", вместо них одно поле "Переменные", аналогично определяющее секцию SELECT, и поле "Группировки и фильтры", аналогично стандартному редактору определяющее секции WHERE, ORDER BY и GROUP BY
Переменные в медиаблоке
Имена переменных назначаются на основной вкладке параметров медиаблока. Можно увеличить их количество кнопкой "Добавить переменную" или удалить выбранную переменную с помощью кнопки "Корзина". Переименовать переменную можно нажав на ее название.
Рядом с названием переменной находится кнопка, открывающая дополнительное окно параметров:
Это окно содержит стандартный блок, позволяющий включить, отключить а также выбрать тип форматирования для значения переменной.
Также в нем можно открыть редактор запросов для ввода выражения, которое определит значение переменной. Если для переменной не указано выражение, значением будет "undefined".
Картинки в медиаблоке
Этап 4: Результирующий SQL-запрос
После создания и настройки виджетов на листе дашборда формируется итоговый запрос, просмотреть который можно с помощью кнопки "{ }" на правой панели инструментов. В нем будут содержаться все секци, что может быть полезно при отладке. Если выбран виджет, то будет отображаться запрос только для него, если ничего не выбрано -- отобразится запрос для всех элементов листа.
Отредактировать результирующий запрос нельзя, для этого необходимо вернуться на предыдущие этапы.