Визуализация данных ClickHouse с помощью Apache Superset, часть 2: дашборды
В нашей предыдущей статье, посвященной Apache Superset, мы поговорили о 3 методах установки Superset и его подключении к ClickHouse. В этой статье, которая является логическим продолжением 1 статьи, мы поговорим об одной из самых интересных тем, а именно о визуализации данных с помощью дашбордов, которые можно создать с помощью Superset.
Как оказалось, создавать дашборды очень просто. Самая трудоемкая работа - это сбор надежных данных и построение легко читаемых графиков. В этой статье мы поговорим лишь о некоторых возможностях Superset в области визуализации данных, на самом деле их гораздо больше. И все же мы надеемся, что краткий обзор, представленный здесь, поможет Вам лучше разобраться в теме наглядного представления данных с помощью графики.
Приступим!
Конфигурация Superset и ClickHouse
Примеры из этой статьи можно легко воспроизвести, используя любую конфигурацию Superset и ClickHouse, которая Вам нравится. Просто убедитесь в том, что Ваши версии ПО актуальны, и Вы правильно установили драйвер clickhouse-sqlalchemy. Рекомендуемые версии:Superset 1.1.0 и новее, clickhouse-sqlalchemy 0.1.6 и новее. Я использовал ClickHouse 21.1 более ранние и более поздние версии также должны работать. В моем случае я также использую SaaS экземпляры обоих продуктов от Preset Cloud и Altinity.Cloud.
Обратите внимание на то, что функционирование Superset и ClickHouse в вышеупомянутых облачных сервисах идентично сборкам с открытым исходным кодом, представленных на сайтах соответствующих сообществ.
Обзор дашбордов Superset
Superset имеет многоуровневую архитектуру, которая разделяет визуализацию на многократно используемые компоненты. Ее ключевой особенностью хявляется «семантический слой», который обеспечивает уровень абстракции между дашбордами, содержащими графики, и БД.
Как только Вы входите в Superset, на главной странице появляются вкладки и подменю, позволяющие редактировать компоненты дашборда.
Теперь давайте рассмотрим процесс создания графиков из физических и виртуальных наборов данных, а затем объединим их и создадим дашборд.
Подключение к БД
Сначала нужно подключиться к ClickHouse.
На главном экране нажмите вкладку «DATA» и выберите подменю «DATABASES». Появится список доступных баз данных (если таковые имеются). Нажмите кнопку «+ DATABASE» и добавьте параметры подключения ClickHouse. URL должен указывать на публичную конечную точку, размещенную в Altinity.Cloud. Она должна быть доступна с любого узла, имеющего доступ в Интернет.
DATABASE NAME: clickhouse-public
SQLALCHEMY URL: clickhouse+native://demo:demo@github.demo.trial.altinity.cloud/default?secure=true
Введите значения, указанные выше и нажмите на кнопку «TEST CONNECTION».
Для сохранения соединения нажмите на кнопку «CONNECT».Теперь можно приступить к созданию наборов данных и построению графиков.
Построение графиков на основе одной таблицы
Зачастую визуализировать данные можно на основе отдельных таблицах фактов, особенно на тех, которые денормализованы и включают в себя множество столбцов. Физические наборы данных Superset идеально подходят для этих целей: они отображаются в одной таблице ClickHouse. В этом разделе мы покажем Вам, как можно создать набор данных и построить на их основе диаграмму.
Создадим набор данных. Снова нажмите на вкладку «DATA» и выберите подменю «DATASETS». Появится список наборов данных. Нажмите на кнопку « + DATASET». Появится диалоговое окно с выпадающими списками для информации о наборе данных. В качестве соединения выберите clickhouse-public, затем выберите схему по умолчанию и таблицу ontime.
.
Для сохранения набора данных нажмите «ADD». Новый набор данных появится в верхней части списка.
Как только у Вас появится набор данных, приступите к построению своего первого графика. Щелкните на наименование набора данных на странице Dataset. Superset переключится на экран для выбора графика.
Создадим график временного ряда, отражающий трафик авиакомпаний по перевозчикам и по месяцам за 2020 год. Заполним страницу следующим образом:
«VISUALIZATION TYPE» — Нажмите на значок таблицы и выберите «График временных рядов»
«Time» — Выберите временной диапазон
TIME COLUMN — Выберите дату полета, если она еще не выбрана.
TIME GRAIN — Выберите месяц.
TIME RANGE — Выберите предыдущий календарный год.
METRICS — Выберите COUNT(*),который уже должен быть выбран по умолчанию.
GROUP BY — Выберите перевозчика
После того как Вы ввели значения, нажмите на кнопку «RUN QUERY». Вы должны увидеть примерно следующее.
Не бойтесь, экспериментируйте и выбирайте график, который Вам больше всего понравится. Для этого используйте вкладку «CUSTOMIZE», которая находится в верхней части панели. Мне больше всего нравятся сложенные гистограммы. Как только Вы определились с графиком, сохраните его с помощью кнопки «SAVE». Красиво назовите его, например Flights by Carrier 2020.
Теперь Вы можете добавить новые графики в дашборд, введя их названия в поле «ADD TO DASHBOARD». Перед сохранением дашборда я назвал его Demo Dashboard. Таким образом, у нас появится дашборд, в который будут добавлены построенные нами графики.
Внимательные читатели заметят, что мы создали этот график, не написав и даже не увидев ни одной строчки SQL. Superset делает все правильно, но мы, как опытные разработчики баз данных, предпочли бы увидеть запрос SQL своими глазами. К счастью, получить текст запроса SQL очень просто. Просто нажмите кнопку с тремя линиями свойств рядом с .CSV в верхней правой части панели и Вы увидите пункт подменю «VIEW QUERY». Нажмите на него и Вы увидите сгенерированный запрос.
Запрос достаточно простой, но вполне содержательный. Он отображает удобство отображения наборов данных Superset. Они включают в себя базовую таблицу, используя логику генерации запросов SQL для доступа к данным. Как только набор данных становится доступным, Вы можете визуализировать его, не прибегая к SQL. Это значительно расширяет круг потенциальный пользователей, которые могут без труда создавать оригинальные визуализации данных.
Построение графиков на базе сложных запросов
В некоторых случаях без написания запросов SQL не обойтись. Например, Вы хотите объединить информацию из нескольких таблиц в один дашборд. В этом случае идеальным вариантом становятся виртуальные наборы данных - они работают на основе запроса, а не таблицы.
Обратимся к набору данных ontime и выберем данные о количестве рейсов, количестве задержанных и отмененных рейсах. Добавим информацию о местоположении аэропортов (отправление и назначение), а именно широту и долготу места.
SELECTFlightDate,Origin,Dest,oa.Latitude as Origin_Latitude, oa.Longitude AS Origin_Longitude,od.Latitude as Dest_Latitude, od.Longitude AS Dest_Longitude,Flights, Cancelled, DepDelayed, ArrDelayedFROM (SELECT FlightDate, Origin, Dest, count() Flights,sum(Cancelled) Cancelled,sum(DepDel15) DepDelayed,sum(ArrDel15) ArrDelayedFROM ontimeGROUP BY FlightDate, Origin, Dest ORDER BY FlightDate, Origin, Dest) AS oINNER JOIN airports AS oa ON toString(o.Origin) = oa.IATAINNER JOIN airports AS od ON toString(o.Dest) = od.IATA
Наш пример запроса иллюстрирует операцию, которую Superset, как и любой другой генератор кода, не сможет провести автоматически. Это стандартная оптимизация для повышения производительности за счет уменьшения объема данных, которые приходится извлекать во время полного сканирования таблицы.
Первый шаг к трансформации нашего запроса в набор данных – это его проверка в редакторе запросов Superset. Нажмите вкладку «SQL Lab» и выберите подменю «SQL Editor». Superset покажет панель окна запроса.
Для тестирования запроса выполните следующие шаги:
- В верхней левой части панели выберите в качестве базы данных clickhouse-public.
- В качестве схемы выберите значение по умолчанию.
- Вставьте запрос в окно запроса редактора.
- Для тестирования запроса нажмите «RUN»
Результат будет следующим:
Если результат Вас устраивает, нажмите кнопку «EXPLORE», в результате чего появится диалоговое окно для сохранения запроса в виде виртуального набора данных. Введите наименование, которое Вас устроит, и нажмите «SAVE & EXPLORE».
Superset автоматически переведет Вас на панель графиков. По умолчанию панель использует табличное отображение, что не совсем интересно. Вместо этого предлагаю создать график, показывающий вылеты из Сан-Франциско. Заполните информацию на панели следующим образом.
- VISUALIZATION TYPE — Нажмите на значок таблицы и выберите «deck.gl Arc».
- Time — Выберите подходящий временной диапазон:
- TIME COLUMN — Выберите дату рейса, если она еще не выбрана.
- TIME RANGE — Выберите предыдущий календарный год
- QUERY — Выберите данные о местоположении.
- START LONGITUDE & LATITUDE — Выберите Origin_Longitude и Origin_Latitude.
- END LONGITUDE & LATITUDE — Выберите Dest_Longitude и Dest_Latitude.
- FILTERS — Используйте всплывающее окно, чтобы выбрать Origin = 'SFO'.
NB: Для использования deck.gl Arc и других отображений карт Вам потребуется ключ MapBox API. Preset.Cloud настраивает его автоматически, но иногда придется получить его самостоятельно. Более подробная информация предоставлена в официальном руководстве по Superset , бесплатно.
Чтобы увидеть результат, нажмите на кнопку «RUN QUERY.» Вы должны увидеть что-то вроде дугообразного графика, отображающего маршруты полетов из SFO по всем направлениям, выполненным в прошлом году.
Как только Вы выберите график, Вы можете сохранить его в последствие использовать. Нажмите на кнопку «SAVE» назовите график, например SFO Destinations. Вы можете добавить этот график в свой дашборд.
Опять же, очень интересно посмотреть на запрос SQL, который наш новый график использует для выбора данных из виртуального набора данных. Как известно, единственный способ избавиться от искушения - поддаться ему! Нажмем на трехлинейную кнопку свойств в правой верхней части дашборда и выберем «View query». Superset покажет сгенерированный код SQL. SQL-код виртуального набора данных Вы сможете найти в подзапросе.
Если Вы уже работали с ClickHouse, то, скорее всего, Вы знакомы с подзапросами. ClickHouse достаточно «умен» для того, чтобы перенести условия фильтрации в подзапрос.
Публикация графиков
Для изучения графиков необходимо их собрать в единый дашборд. Чтобы увидеть список имеющихся дашбордов, выберите вкладку «Dashboards»,. Вы можете создавать новые дашборды с помощью кнопки + DASHBOARD.
Поскольку мы добавили новые графики в Demo Dashboard, он уже содержит созданные нами графики. В списке дашбордов выберите ссылку Demo Dashboard и пройдите по ней.
Вы можете редактировать полученный дашборд, нажав на значок карандаша в правом верхнем углу. Редактор дашборда позволяет изменять положение и размер графиков, создав новые строки и заголовки, а также добавлять дополнительные графики. Как только Вы создали дашборд своей мечты, нажмите на кнопку «DRAFT» в верхней части страницы. Так Вы опубликуете дашборд, и другие пользователи смогут его увидеть.



















