Оформление
Синхронизация и ETL
Если датасет переведён в режим Извлечение, платформа выгружает данные из источников в своё хранилище и виджеты читают готовую витрину. Этим управляет окно Синхронизация в верхней панели редактора датасета.
Сначала переключите режим
В режиме «Прямой запрос» окно открывается, но настройки не действуют: платформа предупреждает «Синхронизация недоступна в режиме „view“». Загрузка работает только в режиме «Извлечение».
Слово «view» в этом сообщении — внутреннее название режима Прямой запрос. Синхронизация ему не нужна: данные читаются из источника при каждом открытии виджета.
Первая сборка витрины
- Переключите датасет в режим Извлечение — материализация.
- Нажмите Синхронизация в верхней панели редактора датасета. Кнопка только открывает окно — загрузка сама не начинается.
- Нажмите Запустить пересборку. Окно переключится на вкладку История, а платформа сообщит «Пересборка запущена».
- Дождитесь статуса Успех. Если запуск упал, кнопка Лог откроет журнал запуска с шагом, на котором произошла ошибка.
Когда выбирать извлечение, а когда прямой запрос, разобрано на странице материализации.
Режим и расписание

Стратегия загрузки:
| Стратегия | Как работает |
|---|---|
| Полная пересборка | Каждый запуск полностью перетирает витрину |
| Инкрементальная | Берутся только изменения по watermark-полю |
В текущей версии каждый запуск — полная пересборка
Выбранная стратегия сохраняется, но на запуск не влияет. И кнопка Запустить пересборку, и запуск по расписанию читают источник целиком и перетирают витрину, даже если выбрана Инкрементальная и заданы колонка-курсор и бизнес-ключ. Данные в витрине от этого верные, но нагрузка на источник та же, что у полной пересборки. Учитывайте это при выборе расписания для больших таблиц.
Выбрать Инкрементальную можно только у датасетов на базах данных: у файлов, S3 и OData она отвергается — сообщения.
Как устроена инкрементальная стратегия
Ниже — поля формы и то, как стратегия обходится с изменениями. В текущей версии на запуск она не влияет.
Каждому объекту задаются два поля:
- Колонка-курсор (watermark) и её тип — по ней отбирается то, что появилось нового: берутся строки после отметки последнего успешного запуска.
- Бизнес-ключ — что считать одной и той же записью: строка с уже известным ключом заменяет предыдущую версию, а не задваивается.
| Что произошло в источнике | Что будет в витрине |
|---|---|
| Добавилась строка | Попадёт при следующем прогоне, если её значение курсора больше прежнего |
| Строка изменилась, курсор обновился | Новая версия заменит прежнюю по бизнес-ключу |
| Строка изменилась, а курсор — нет | Изменение не приедет: прогон её не выберет |
| Строка удалена в источнике | Останется в витрине: инкремент не знает об удалении |
Поэтому при инкременте нужна периодическая полная пересборка — например, ночная, — или курсор, который меняется при любой правке строки.
У инкрементальной загрузки свой ключ сортировки
Задать Ключ сортировки вручную для инкрементального объекта нельзя — платформа не примет настройку: порядок хранения в этом режиме определяется бизнес-ключом.
Расписание задаётся cron-выражением; под полем — готовые варианты: Каждые 6 часов, Дважды в день, 00:00 и 12:00, Каждую ночь в 03:00, По будням в 06:00, По выходным в 04:00, По воскресеньям в 02:00, 1-го числа в 00:00, Раз в квартал, 1-го в 00:00 и Только вручную. Значения cron расшифровывает Шпаргалка по синтаксису — раскройте её под полем. Рядом с кнопкой Запустить пересборку написано, когда витрина пересоберётся в следующий раз. Без расписания пересборка запускается только этой кнопкой.
Размер пачки — сколько строк забирать из источника за один заход.
Хранение

Загрузка идёт в два шага: сначала платформа выгружает данные из источника в собственное объектное хранилище колоночными файлами, затем заливает их в аналитическую базу, где и лежит готовая витрина. Поэтому для извлечения нужны оба хранилища, а не только база.
Форма витрины определяет, как данные лягут в хранилище:
| Вариант | Что происходит |
|---|---|
| Таблица на объект | Каждый объект лежит отдельно, связи считаются при запросе |
| Одна плоская таблица | Объекты соединяются при загрузке, запросы читают одну таблицу |
Дальше настройки задаются для каждого объекта отдельно — объект выбирается в списке:
- Ключ сортировки (
ORDER BY) — первичный индекс таблицы. Вперёд ставьте колонки, по которым чаще фильтруют. Без ключа таблица читается целиком на каждый запрос. - Партиционирование (
PARTITION BY) — режет таблицу на куски: запрос за период читает только свои партиции, а старые данные удаляются целиком. Слишком дробное разбиение замедляет запросы: разумный ориентир — партиция на месяц. - Индексы пропуска — позволяют не читать куски данных, где искомого значения заведомо нет. Полезны для колонок вне ключа сортировки.
У каждого индекса задаются четыре вещи: имя, колонка, тип и гранулярность — сколько гранул данных он покрывает. Типов три:
| Тип | Когда брать |
|---|---|
| minmax | Значения в колонке идут по возрастанию или скачками — даты, суммы, идентификаторы |
| set(100) | Мало разных значений на гранулу: статус, категория, город |
| bloom_filter | Много разных значений, а запросы идут точным равенством — идентификаторы клиентов, артикулы |
История запусков
После нажатия Запустить пересборку окно само переходит на вкладку История.

Сверху три показателя:
| Показатель | Как считается |
|---|---|
| Успешных за 7 дней | успешные запуски из всех, начатых за последние семь дней, — например, «5 / 6» |
| Среднее время | средняя длительность всех завершённых запусков в списке, не только за неделю |
| Прирост строк / день | среднее из положительных приростов между соседними запусками. Время между запусками не учитывается: при запуске раз в час число покажет прирост за час, а не за день |
Ниже — таблица запусков, новые сверху:
| Колонка | Что показывает |
|---|---|
| Запуск | время начала |
| Длительность | сколько шла сборка, в целых секундах: запуск короче полсекунды показан как «0с» |
| Загружено / прочитано · Δ | сколько строк легло в витрину и сколько прочитано из источника; число справа — на сколько строк витрина изменилась с прошлого запуска: рост зелёным, уменьшение серым; без изменений числа нет. У запуска, который ещё идёт, здесь минус — см. ниже |
| Статус | см. таблицу ниже |
В строке запуска есть кнопка Лог — она открывает журнал запуска по шагам, у идущего запуска — ещё и Отменить. Пока запуск в очереди или идёт, у него «0 / 0» и прирост со знаком минус, например «−1 284»: строки ещё не записаны. Витрина при этом не пустеет — после завершения запуска числа обновятся.
| Статус | Что означает |
|---|---|
| В очереди | Задание принято, но ещё не начато |
| В процессе | Идёт прямо сейчас; журнал такого запуска обновляется сам |
| Успех | Витрина пересобрана |
| Ошибка | Задание прервано; причина — в журнале запуска |
| Отменён | Остановлен кнопкой Отменить или удалением датасета. Витрина публикуется целиком после выгрузки всех объектов, поэтому отмена до этого момента оставляет прежнюю витрину |
Числа строк в таблице округлены до тысяч
От тысячи строк и выше таблица и журнал показывают число в тысячах: 1 284 и 1 250 строк выглядят одинаково — «1K / 1K». Поэтому расхождение прочитанного и загруженного меньше пятисот строк на экране не видно, а прирост рядом с округлённым числом может выглядеть странно: переход с 1 600 на 2 200 строк показан как «2K / 2K +600».
Точные значения отдаёт запрос GET /api/datasets/{id}/extracts — поля rows_read и rows_written, там же режим (mode) и способ запуска (trigger) — см. REST API. У исправной сборки оба числа совпадают: витрина из 1 284 строк даёт 1 284 в обоих полях.
Вместе с датасетом удаляется витрина
Вместе с датасетом платформа удаляет его таблицы в аналитической базе, снимает расписание и останавливает идущую пересборку. То же происходит с отдельным объектом: убрали таблицу из схемы датасета — её витрина удаляется, витрины остальных объектов остаются на месте.
Данные в источнике не изменяются, но выгруженное придётся собирать заново.
Вкладки в разработке
Три вкладки окна помечены самим интерфейсом как раздел в разработке:
| Вкладка | Для чего | Состояние |
|---|---|---|
| Фильтры | Условия отбора на стороне источника, чтобы уменьшить объём загрузки | Условия не сохраняются |
| Преобразования | Сопоставление колонок источника и витрины: приведение типа, нормализация, формула | Настройки не сохраняются |
| Уведомления | Оповещения об успешных и неуспешных запусках | Каналы не настраиваются. Уведомление в ленту уже получает тот, кто запустил пересборку вручную, — уведомления |
Что дальше
- Журнал запуска — ход задания по шагам, повторы и тексты ошибок.
- Материализация — чем режим извлечения отличается от прямого запроса и что меняется для виджетов.
- Кеши и лимиты — почему свежие данные иногда доходят до виджета не сразу.