Все материалы
Бизнесгайдстарт

Yandex DataLens: как собрать первый дашборд

Пошагово собираем дашборд в Yandex DataLens: подключение, датасет, вычисляемые поля, чарты, селекторы и доступы. Числа сверены SQL.

КейсПрактика27 сентября 2026 г.15 мин

Руководитель просит показывать стоимость броней за закрытую неделю и видеть, какой тип брони изменился. В Yandex DataLens для этого понадобятся четыре разные сущности: подключение, датасет, чарты и дашборд. Ниже соберём их на одном учебном наборе, проверим числа SQL и отдельно настроим селектор и доступ. Это схема работы по официальной документации, проверенной 27 сентября 2026 года; интерфейс сервиса со временем может менять расположение команд.

Коротко: путь до первого дашборда

Сформулируйте вопрос до открытия сервиса: «Как изменилась стоимость оформленных броней за полную неделю 3–9 августа и какая группа дала больший вклад?» Затем подготовьте таблицу с явным зерном и контролем. В учебном примере это 14 строк: семь дат по две группы брони, число броней и их сумма. Скачайте CSV; происхождение и лицензию можно показать вместе с файлом.

В DataLens создайте подключение к файлу, из него — датасет, затем отдельные чарты для итоговой суммы, ряда по дням и группового сравнения. Разместите их на дашборде, добавьте селектор даты и проверьте, что он меняет все нужные виджеты. Только после этого выдавайте доступ коллегам. По терминам самого DataLens подключение хранит параметры источника, датасет описывает данные, чарт показывает их, дашборд собирает чарты и селекторы.

На всех 14 строках итог должен быть 42 561 бронь и 3 377 874 800 ₽. Важно подписать сумму как стоимость оформленных бронирований: оплата, возвраты и признание выручки здесь не учтены. Если нужно сравнение с прошлой неделей, потребуется добавить такую же выгрузку за 27 июля – 2 августа или подключиться к базе; фильтр по дате сам по себе не создаёт отсутствующих строк.

Четыре сущности DataLens в нашем примере
СущностьЧто хранитКонтроль
ПодключениеФайл CSV или доступ к БДИсточник доступен и обновляется
ДатасетПоля и их типы14 строк: день × группа
ЧартОдин вопрос и его видЗначение и подпись сверены
ДашбордКомпозиция и селекторыФильтр действует согласованно

Данные: какую строку вы собираетесь считать

В файле book_day — московская календарная дата, ticket_bucket — «1» или «2+» билета в брони, bookings — число уникальных броней в группе, amount — сумма их total_amount. У файла уже агрегированное зерно: одна строка на пару дата × группа. Поэтому сумму броней считайте SUM(bookings), а не число строк. COUNT(*) даст 14, и на вид вполне правдоподобная карточка станет неверной.

Исходная Parquet-база тренажёра содержит детальные bookings и tickets. Чтобы получить группу, скрипт сначала посчитал билеты по book_ref, затем присоединил результат один к одному к броням. После этого сгруппировал по дате и группе. Прямой JOIN к каждой строке билета размножил бы total_amount у многоместной брони; такой график нельзя исправить настройкой оси.

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

Подключение: файл или таблица в базе

Для упражнения откройте рабочую книгу DataLens и создайте подключение к файлу. Официальная инструкция перечисляет CSV, TXT и XLSX и показывает этап выбора файла и распознавания заголовка. Загрузите наш CSV, проверьте четыре имени колонок и предварительный просмотр. Если DataLens трактует дату как текст или сумму как строку, исправьте тип до первого чарта: сортировка и агрегация иначе будут обманчивыми.

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

Файл удобен для проверки макета, но его замена — отдельный процесс. Если новая выгрузка имеет другие названия, локаль разделителя или содержит повторную неделю, график может не рухнуть, а удвоить итог. Перед обновлением сравните число строк, минимальную и максимальную даты и сумму с контрольным SQL. Для этой учебной недели контроль неизменен: 14 строк и 3 377 874 800 ₽.

Датасет: зафиксируйте типы и смысл полей

Создайте датасет из подключения. Полю book_day задайте роль даты, ticket_bucket оставьте измерением, bookings и amount — числовыми показателями. В описании напишите единицу суммы и зерно. Название «Продажи» здесь неточно: у нас сумма оформленных броней, и это ограничение должно дойти до любого чарта, где будет использоваться датасет.

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

Не складывайте заранее посчитанные средние по дням и группам. Если в датасете есть сумма и число броней, среднюю стоимость за выбранный период считайте как сумму amount, делённую на сумму bookings. За неделю это 79 365,49 ₽. Простое среднее четырнадцати дневных средних даст другое число, потому что группы имеют разный размер.

Определение средней на агрегированном источнике
SUM([amount]) / SUM([bookings])

Результат на всей неделе: 79 365,49 ₽; вычислено SQL как SUM(total_amount) / COUNT(*). Синтаксис DataLens сверяйте в редакторе поля конкретного источника.

Первый чарт: карточка с проверяемой суммой

Создайте чарт из датасета и выберите индикатор для SUM(amount). Подпишите его «Стоимость оформленных броней, ₽», укажите неделю 3–9 августа 2026 года и московское время. Важно, чтобы число 3 377 874 800 ₽ не выглядело как универсальная «выручка»: иначе его сравнят с оплатами из другой системы и объявят расхождение багом.

Рядом сделайте второй индикатор для SUM(bookings) — 42 561. Эти две карточки дают читателю масштаб. Третий возможный показатель — средняя стоимость брони 79 365,49 ₽, но его стоит добавлять лишь тогда, когда по нему действительно принимают решение. У трёх карточек должны быть одна дата, один датасет и одна область действия селектора.

После сохранения чарта переключите группу ticket_bucket. Для «1» сумма должна быть 1 586 128 300 ₽ и число броней 28 011; для «2+» — 1 791 746 500 ₽ и 14 550. Если карточка меняется, а подпись «все брони» остаётся, исправьте подпись. Пользователь воспринимает её как часть определения, а не как косметику.

Второй чарт: линия по семи полным дням

Для динамики выберите линейный чарт: book_day на горизонтали, сумма amount на вертикали. Дата должна сортироваться как дата, не как текст. Данные за неделю идут от 452 158 300 ₽ 3 августа до 509 633 600 ₽ 9 августа. Линия показывает последовательность значений, но не доказывает причину роста. Чтобы объяснить его, нужны прошлые сопоставимые недели и сведения о рейсах, цене и спросе.

Точки лучше подписывать через подсказку при наведении, а постоянные подписи использовать только там, где они остаются читаемыми на телефоне. Ось суммы начинайте и форматируйте осмысленно: на тесном экране сокращение до миллионов может помочь, если единица «млн ₽» видна рядом. Цвет не должен быть единственным способом прочитать данные.

В статье ниже показаны те же семь значений, рассчитанные непосредственно в DuckDB. Если собранный в DataLens график имеет другие вершины, сначала проверьте локаль даты, наличие лишних строк и агрегацию. Перекраска серии проблему не решит.

Стоимость оформленных броней по дням полной недели, млн ₽

Рост внутри недели описывает данные, но не объясняет причину.

млн ₽

Третий чарт: сравнить группы, не смешав показатели

Для ответа о вкладе сделайте два столбца по ticket_bucket, величина — SUM(amount). У группы «2+» больше сумма: 1 791 746 500 ₽ против 1 586 128 300 ₽ у одиночной брони. Но броней «2+» меньше: 14 550 против 28 011. Это не парадокс: одна многоместная бронь обычно стоит больше. Поставьте две метрики рядом или добавьте отдельную таблицу, чтобы количество и сумма не смешались в одном столбце.

Доля «2+» в общей сумме — 53,04%; это деление 1 791 746 500 на 3 377 874 800. Если нужно показывать долю после фильтра по дате, числитель и знаменатель должны считаться на одинаковом периоде. Иначе «доля» станет отношением разных выборок. Проверьте это на одном дне: 3 августа обе группы вместе дают 452 158 300 ₽.

На общем дашборде группа может стать селектором. Тогда столбчатый чарт с единственной оставшейся группой мало полезен; подумайте, нужен ли селектор вообще. Иногда лучше оставить оба столбца видимыми и фильтровать только дату. Каждый новый контрол добавляет состояние, которое придётся тестировать.

Две группы в одной полной неделе
Билетов в брониБронейСумма, ₽Доля суммы
128 0111 586 128 30046,96%
2+14 5501 791 746 50053,04%
Итого42 5613 377 874 800100%

Дашборд: порядок элементов повторяет ход решения

Создайте дашборд и добавьте сохранённые чарты. В верхней строке разместите период и две KPI-карточки, под ними — линию по дням, затем сравнение групп и компактную таблицу проверки. Такой порядок отвечает сначала «сколько», потом «когда», затем «за счёт чего». Названия виджетов должны повторять определения полей, а не заменять их общими словами вроде «эффективность».

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

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

Селектор даты: проверьте связи с каждым чартом

Добавьте селектор по book_day. Документация DataLens объясняет, что он влияет на связанные виджеты, а область действия можно задавать для вкладок. В нашем примере селектор должен менять обе карточки, линию и групповой чарт. После добавления выберите 3 августа: сумма станет 452 158 300 ₽, число броней — 5 665. Затем снимите фильтр и дождитесь исходного недельного итога.

Если один виджет не изменился, проверьте его датасет и связь с селектором. Если выбрали 3 августа, а линия остаётся семидневной, не объясняйте это «особенностью графика» — на странице оказались разные периоды. Иногда такое различие задумано, например базовая неделя рядом с текущим днём; тогда его нужно назвать прямо и выделить в подписи.

При нескольких источниках связь селектора не всегда очевидна: одинаковые надписи «Дата» ещё не означают одинаковую колонку и часовую зону. Для первого дашборда лучше один датасет и один календарный селектор. Когда добавите новый чарт, повторите два тестовых состояния; проверка только на значении «все» скрывает разрыв.

Публикация и доступ: ссылка сама по себе не защита

Сначала определите, кто должен видеть дашборд внутри рабочей книги. Доступ к объектам и источнику — разные слои: пользователь может открыть ссылку на экран, но не получить ожидаемые данные из-за прав на связанную сущность. Проверяйте просмотр под ролью читателя, а не только из учётной записи автора. Особенно это важно, когда в источник позже добавят чувствительные поля.

Публичная публикация DataLens открывает данные по ссылке любому, у кого она есть; документация предупреждает не публиковать персональные данные или коммерческие секреты. Наш учебный агрегат не содержит пассажиров, но рабочую панель с реальными данными лучше распространять по назначенным ролям. Публичная ссылка не заменяет разграничение доступа.

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

Обновление: что проверить после замены файла

Перезагрузив или заменив CSV, сначала сравните схему: book_day остаётся датой, bookings и amount — числами, а группа имеет два ожидаемых значения. Затем проверьте диапазон дат и количество строк. Для неизменного упражнения контроль — 3–9 августа, 14 строк, 42 561 бронь, 3 377 874 800 ₽. Для новой недели числа будут другими, но контроль с независимой выгрузкой из источника всё равно обязателен.

Если итог удвоился ровно вдвое, ищите добавленный старый файл или повторные строки на зерне день × группа. Если число дней стало шесть, это не «почти неделя»: сравнение с полной прошлой неделей будет смещено. Если стоимость выросла, а количество броней нет, проверьте валюту, отмены, дубли и состав групп прежде, чем делать продуктовый вывод.

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

Шесть ошибок в первом DataLens-отчёте

Первая ошибка — считать COUNT(*) в агрегированном файле и получить 14 вместо 42 561. Вторая — назвать сумму броней выручкой. Третья — сделать вычисляемое поле только в одном чарте, а затем ожидать той же формулы в остальных. Четвёртая — смешать московскую дату выгрузки с датой источника в UTC; бронь на границе суток попадёт не туда.

Пятая ошибка — добавить селектор, который меняет только линию, но оставляет KPI за всю неделю. Шестая — раздать публичную ссылку, полагая, что секретность обеспечена тем, что адрес сложно угадать. Все шесть ошибок дают читателю правдоподобную страницу, поэтому проверка должна включать не только «чарт открылся», но и два контрольных состояния и доступ под ролью читателя.

Если источник — БД, появляется ещё одна ловушка: присоединить детальную таблицу tickets до агрегации и умножить сумму у многоместных броней. Уровень DataLens не исправит неверное зерно SQL. Сохраняйте выполненный контрольный запрос рядом с описанием датасета; его проще повторить при очередной правке, чем расследовать расхождение по скриншоту.

Когда DataLens подходит и когда стоит остановиться

Этот путь подходит, когда у команды есть источник с понятными правами, повторяющийся вопрос и владелец данных. Файловое подключение помогает проверить структуру страницы до интеграции с БД. Если вопрос одноразовый, сохранённый SQL-результат и короткая записка могут быть дешевле дашборда. Если метрика ещё спорная, сначала договоритесь о правилах её расчёта.

Не превращайте дашборд в хранилище сырых данных. Для миллионов строк подготовьте витрину с нужным зерном и проверенными метриками, а доступ выдавайте на уровне исходной системы и DataLens. При изменении структуры витрины пересмотрите датасет и все чарты, которые от него зависят. Одна колонка, переименованная «для красоты», может сломать недельный отчёт именно утром встречи.

Если основной вопрос команды — сложные вычисления между таблицами и календарными периодами, сравните подход с моделью Power BI. Если аналитики чаще начинают с SQL, посмотрите Superset и Metabase. Это не рейтинг инструментов: выбор зависит от источника, владения метриками и того, кто поддерживает публикацию.

Частые вопросы и следующий шаг

«Можно ли сделать дашборд только из CSV?» Да, наш учебный пример именно такой, но обновление файла и проверка схемы остаются ручным процессом. «Нужен ли отдельный датасет?» Да: он задаёт общий слой полей и их смысл между чартами. «Почему селектор не меняет карточку?» Проверьте связь виджета с полем и совпадение датасета. «Можно ли публиковать ссылку клиенту?» Только после проверки прав, состава данных и режима публикации.

«Как считать среднюю стоимость брони?» Из суммы и числа броней, а не как среднее дневных средних. «Почему два типа брони дают разную картину по количеству и деньгам?» У многоместной брони выше сумма на одну запись; таблица выше показывает оба основания сравнения. «Можно ли назвать это выручкой?» Нет: у нас нет данных о фактическом платеже и возвратах. Эти вопросы стоит записать в описании самого дашборда, чтобы новый читатель не угадывал ответы.

Соберите страницу на учебном CSV и проверьте 3 августа как отдельное состояние. Затем повторите тот же агрегат в тренажёре SQL с нуля: если число не сходится, разберите зерно таблиц до настройки графиков. Для переноса на свою компанию начните с ТЗ на дашборд и списка владельцев данных.

Продолжить чтение
Вся библиотека