Skip to content

Датасеты

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

Как создать датасет

  1. Откройте раздел Датасеты и нажмите Создать датасет.
  2. В левой панели нажмите Добавить источник. Откроется окно со всеми источниками проекта: слева фильтр по категориям («База данных», «Файлы») со счётчиками, сверху поиск по имени, хосту и базе, справа — флажки и кнопка Выбрать всё. Отметьте один или несколько источников и нажмите Добавить — их таблицы появятся в панели.
  3. Перетащите нужные таблицы на холст.
  4. Свяжите таблицы между собой, если их несколько.
  5. Задайте Название в правой панели и нажмите Сохранить.

Редактор датасета со связями

Счётчики в правой панели показывают, из чего собран датасет: сколько блоков (таблиц), связей и SQL-блоков в нём сейчас.

Кнопка История в верхней панели — это отмена и повтор действий текущего сеанса редактирования (Ctrl+Z и Ctrl+Shift+Z), а не журнал версий датасета.

Таблицы на холсте

Каждая таблица на холсте — это блок с перечнем колонок и их типов. Одна из таблиц отмечена звёздочкой: это главная таблица датасета, от неё строится соединение остальных.

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

SQL-блок

Кроме таблиц в датасет можно добавить SQL-блок — произвольный запрос, результат которого участвует в датасете наравне с таблицей. Так берут данные, которых нет в источнике готовыми: предагрегат, объединение через UNION, хитрый расчёт.

  1. Нажмите Создать SQL-блок внизу левой панели.
  2. Задайте Название — под ним блок будет виден на холсте и в списке таблиц.
  3. Напишите запрос в поле SQL-запрос. Редактор подсвечивает синтаксис, нумерует строки и подсказывает ключевые слова и объекты базы, а слева стоит дерево таблиц источника, чтобы свериться с именами.
  4. Нажмите Превью и проверьте результат: колонки с типами и первые строки. Чтобы выполнить только часть запроса, выделите её перед нажатием.
  5. Нажмите Создать — блок появится на холсте, а колонки результата станут его полями.

Окно SQL-блока с результатом превью

Диалект — тот же, что у источника: запрос уходит в базу как есть.

Проверяйте запрос до создания

Кнопка Создать не проверяет запрос — она сохраняет его как есть. Нажмите Превью: если запрос ошибочный, вы увидите это сразу, а не при построении первого виджета.

Рядом с редактором есть AI-помощник — он пишет запрос по описанию задачи, см. AI-помощник.

На холсте SQL-блок отличается от таблицы значком <>, а в левой панели такие блоки собраны в отдельную группу SQL над списком таблиц источника. У блока три кнопки: звёздочка — сделать главным, карандаш — вернуться к редактированию запроса, крестик — убрать с холста.

SQL-блок на холсте и в списке

Связи для SQL-блоков не создаются сами

Таблицы платформа может связать по внешним ключам, а результат SQL-блока — нет: у запроса нет ключей. Если блок нужно соединить с другой таблицей, задайте связь вручную.

Связи между таблицами

Чтобы связать таблицы, перетащите мышью кружок рядом с полем одной таблицы на поле другой. На линии связи платформа покажет её тип — например, 1 : M.

Связи нужны, чтобы платформа знала, как соединять данные при построении виджета: например, подставить название товара из справочника к строке заказа.

Щёлкните по линии связи — в правой панели откроются её параметры:

  • Условие — какие поля сравниваются и каким оператором (=, , <, >, , ).
  • Способ связиRelation или JOIN.
  • Кардинальность1 : 1, 1 : M или M : 1 (только для Relation).

Relation или JOIN

Разница не в том, какой SQL получится, а в том, проверяет ли платформа корректность агрегации.

RelationJOIN
Кардинальностьзадаётся и учитываетсяне задаётся
Проверка на задвоение сумместьнет
Когда виджет не построитсяесли связь размножает строкиникогда, ответственность на вас
Тип соединениявнутреннее, левое, правое, полноевнутреннее, левое, правое, полное

Relation — выбор по умолчанию: платформа знает, сколько строк соответствует строке, и не даст построить виджет, в котором суммы задвоятся. JOIN — «сделай как сказано»: проверки отключены целиком.

JOIN не защищает от задвоения сумм

Проверено на демо-датасете: со связью Relation и кардинальностью 1 : M платформа отказывается строить виджет, а тот же 1 : M, переключённый на JOIN, строится молча. Совпали ли при этом цифры — зависит только от данных: если справочник действительно содержит дубли по ключу, выручка вырастет на пустом месте, и никакого предупреждения не будет.

Берите JOIN, только когда точно знаете, что делаете, — например, соединяете две таблицы фактов и сами следите за уровнем детализации.

Какую кардинальность выбрать

Кардинальность описывает, сколько строк одной таблицы соответствует строке другой, — а не то, как выглядят поля в условии. Для связи таблицы фактов со справочником (заказы → товары) правильное значение — M : 1: у одного товара много заказов, а у каждого заказа ровно один товар.

Платформа проставляет обратное значение

При перетаскивании от таблицы фактов к справочнику подставляется 1 : M. С такой настройкой виджет не построится:

Измерение [products] имеет грейн мельче меры [orders]; агрегация неоднозначна

Читается это так: «поле, по которому вы разрезаете данные, лежит в таблице, которая размножает строки таблицы с мерой». Лечится сменой кардинальности на M : 1.

1 : 1 безопасна всегда — платформа считает, что строке соответствует ровно одна строка. Но ставить её «чтобы прошло» не стоит: если в справочнике окажутся дубли, суммы задвоятся, а предупреждения уже не будет.

Многие ко многим

Вариант M : M в интерфейсе не предлагается, и не случайно: одной связью такое отношение не выражается. Попытка задать его через API оканчивается отказом:

Связь many_to_many между [orders] и [products] на одном ребре не поддерживается; смоделируйте мост (две связи)

Мост — это промежуточная таблица, где каждая строка соединяет одну запись слева с одной справа. К ней ведут две обычные связи M : 1, и обе стороны остаются однозначными.

Сколько размножающих связей допускается

В одной группе мер допускается не более одной связи, размножающей строки, и только если её таблица нужна лишь для перехода — то есть служит мостом и сама не участвует ни в измерениях, ни в мерах. Две и более дадут отказ:

Обнаружено несколько связей-размножений (2) в одной группе мер (chasm trap); агрегация мер неоднозначна

Это классическая ловушка: две таблицы фактов, подвешенные к одному справочнику, при наивном соединении перемножают строки друг друга. Разносите такие меры по разным виджетам или сводите их заранее в SQL-блоке.

Данные и схема

Нижняя панель показывает содержимое выбранной таблицы:

  • Превью данных — строки из источника. Нажмите Загрузить данные, чтобы выполнить запрос, либо включите Автообновление, чтобы данные подтягивались автоматически.
  • Схема — состав полей.

В списке датасетов рядом с режимом материализации есть колонка Данные обновлены — время последней успешной сборки витрины. У датасета в режиме прямого запроса и у того, который ещё ни разу не собирали, там стоит прочерк.

Материализация

В правой панели выбирается, откуда виджеты берут данные:

РежимКак работаетКогда подходит
Прямой запросКаждый виджет обращается к источнику в момент открытия. Данные всегда актуальны, нагрузка ложится на источникНебольшие объёмы, требуется актуальность
ИзвлечениеДанные выгружаются в хранилище платформы, виджеты читают готовый снимок. Быстро, но данные обновляются по расписаниюБольшие объёмы, тяжёлые запросы к источнику

Для режима «Извлечение» настраиваются стратегия загрузки, расписание и форма хранения витрины — кнопка Синхронизация в верхней панели. Подробнее — в разделе Синхронизация и ETL.

Что меняется при переключении

Разница видна на простом опыте. В источник добавили заказ на 5 млн:

РежимЧто показывает виджет
Извлечение, витрина не пересобранастарую сумму — новый заказ не виден
Извлечение, после пересборкиновую сумму, в журнале 1285 прочитанных строк вместо 1284
Прямой запросновую сумму сразу, ничего запускать не нужно

Удалили заказ из источника — прямой запрос тут же вернулся к прежней сумме, а витрина осталась бы с ним до следующей пересборки.

Отсюда правило: в режиме извлечения свежесть данных равна времени последней сборки. Если пользователи жалуются, что цифры не сходятся с учётной системой, посмотрите журнал запусков в окне Синхронизация, прежде чем искать ошибку в датасете.

У нового датасета по умолчанию выбрано «Извлечение»

Только что созданный датасет заводится в режиме извлечения, то есть рассчитывает на витрину в хранилище платформы. Если вам нужны всегда свежие данные напрямую из источника, переключите режим на Прямой запрос сразу, до сборки виджетов.

Настройка полей

Кнопка Настройка полей в верхней панели открывает работу с полями датасета: их названия, типы, агрегации по умолчанию и вычисляемые поля. Подробнее — в разделе Поля и вычисляемые поля.

Видимость строк

Кнопка Видимость строк задаёт правила, по которым разные пользователи видят разные строки одного и того же датасета — например, менеджер видит только свой регион. Подробнее — в разделе Управление доступом.

Что дальше

На готовом датасете строятся виджеты — конкретные визуализации.