Как связать 2 и более датасетов через общие поля в Superset?

Хорошая новость

Итак, если раньше в проприетарных BI системах, возможности модели данных были ограничены оперативной памятью сервера и возможностями BI продукта, то теперь в Apache Superset можно связать 2 и более таблиц фактов и отрисовать все визуализации на одном дашборде.

Если все сделать к примеру на ClickHouse, граммотно обновлять данные в витринах, чтобы не было моментов, когда дашборд отображает ошибки (например когда данные в таблице затерли), то мы получаем по-настоящему расширяемый BI Tool.

Data Backend масштабируем горизонтально, дашборды перемещаем между средами.

Причем, за счет кросс-фильтрации мы еще и таблицы по этим полям фильтруем одновременно.

Минусы этого подхода:

Сложнее все настраивается и нужно создавать отдельные dataset на общие поля.

Постановка задачи

У нас есть 2 таблицы, в которых одинаковые поля:

  • category_1
  • category_2
  • datetime

и при этом, значения в таблицах в этих полях могут быть разными. В нашем примере, во второй таблице количество уникальных категорий больше (в первой и во второй категории).

Решение задачи связывания датасетов по общим полям в Apache Superset

Схема как связать 2 датасета с общими полями

Важное условие: поля в датасетах должны называться одинаково. В моем случае они совпадают также и на уровне таблиц.

Связывание двух и более датасетов в Apache Superset по общим полям

Для решения задачи, необходимо создать 2 физических датасета и 2 виртуальных датасета.

Физические датасеты содержат в себе все данные из таблиц table_1 и table_2.

Виртуальные датасеты состоят из 1 поля и необходимы для того, чтобы включить в себя уникальные значения полей из двух таблиц для поля category_1 и поля category_2 соответственно.

Для поля datetime такие манипуляции делать не нужно, Apache Superset для datetime поля все делает самостоятельно.

Настройки фильтров на дашборде в Apache Superset

common_category_1

Выбираем поле category_1 из виртуального датасета:

На вкладке Scoping указываем, какие чарты должны фильтроваться:

common_category_2

Аналогично для поля category_2

scoping:

datetime

Для datetime поля меньше настроек. Помним, что datetime в датасетах может быть только одним в Apache Superset.

scoping:


👉 Подписывайтесь на канал @apache_superset_bi, чтобы быть в курсе последних новостей про Apache Superset

Ivan Shamaev (Admin)
Работаю с Apache Superset с 2021 года. Веду этот блог, чтобы систематизировать свои знания и поделиться ими с другими специалистами. Подписывайтесь на мой телеграм канал @apache_superset_bi
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x