Сегодня мы опубликовали на GitHub под открытой лицензией Apache 2.0 исходный код Yandex DataLens — сервиса для анализа и визуализации данных. Теперь использовать опенсорс‑версию DataLens может любой желающий и в любой инфраструктуре.
Меня зовут Павел Дубинин, вместе с Гаджи Гаджиевым мы в Yandex Cloud занимаемся развитием DataLens. Сегодня расскажем, какие задачи он помогает решать разным пользователям, какие возможности открываются с выходом в опенсорс и что можно развернуть у себя прямо сейчас.
Что такое DataLens
DataLens — это BI‑инструмент, c помощью которого можно подключиться к источнику, описать модель данных, создать визуализации, собрать дашборд и поделиться результатом с командой.
С самого начала он развивался одновременно как внутренний инструмент в Яндексе и как cloud‑native‑решение для клиентов Yandex Cloud.
DataLens внутри Яндекса — это корпоративный стандарт для визуализации бизнес‑аналитики. Сейчас в нашей компании с данными регулярно работают больше 35 000 сотрудников всех сервисов: поискового портала, Yandex Go, Маркета, Карт, медиасервисов и всех остальных — и с аналитикой им помогает DataLens. Если вы используете сервисы Яндекса, то наверняка тоже касались DataLens, например, изучая статистику оценок на Кинопоиске.
У каждого сервиса свои продукты, свои данные и гипотезы, так что нужен был гибкий инструмент. Чтобы добиться демократизации данных в такой большой технологической компании, мы сфокусировались на простоте и скорости работы, а не на ручных кастомизациях. Преимуществом для внутреннего пользователя стала интеграция c YTsaurus и ClickHousе — BigData‑системой и аналитической СУБД, которые являются у нас основными источниками для аналитики и с которыми другие BI так работать не умеют.
DataLens как сервис в Yandex Cloud насчитывает больше 100 000 экземпляров — это самостоятельные окружения конкретных команд или компаний. Ими пользуются компании разных отраслей и масштабов: небольшие технологические стартапы, крупные банки, федеральные розничные сети.
Мы создавали DataLens как своего рода «умный» генератор запросов к разным источникам данных, с возможностью интерактивной визуализации. При этом DataLens не хранит информацию в себе, а работает с базами данных напрямую. В качестве источника можно использовать внешнюю базу, в другом облаке или on‑premise.
Такая архитектура и большой набор для визуализации могут помочь с разными сценариями: от создания отдельных графиков по метрикам до больших дашбордов, где данные можно сопоставить между собой, разместить на карте и оценить тренды. Конечно, многое зависит от качества данных, поэтому в облаке мы предлагаем интеграцию с инструментами для их подготовки и переноса.
Зачем использовать DataLens
DataLens помогает быстро проверять гипотезы, отслеживать ключевые показатели и формировать отчётность. Несколько примеров наших пользователей:
«Магнит» на базе DataLens делает аналитику цифровых продуктов: программы лояльности, доставки. Как это работает, показывали на конференции Yandex Scale»22.
«ТрансКонтейнер» перенёс в DataLens отчётность для более 600 сотрудников. На дашбордах можно отслеживать перемещение вагонов и контейнеров, фиксировать простои перевозок — здесь их история от первого лица.
«Ренессанс Страхование» за три месяца полностью перевезли в DataLens аналитику по страховым объектам и страховым случаям. В BI‑системе работают почти все подразделения компании.
SkyEng перевезли 7 ТБ данных AWS на Yandex Cloud и построили в DataLens аналитику для 1000 пользователей.
Опыт наших внутренних заказчиков может пригодиться и другим компаниям, так что поделимся и этими сценариями. Интересная история у Яндекс Маркет и Yandex Go. Исторически обе команды использовали для core‑отчётности Tableau. Когда появился DataLens, в него сначала перешла отчётность для массовых ролей (поддержка, внештатные сотрудники, работники складов) — это было дёшево и удобно. Чуть позже у обеих команд назрела необходимость миграции, и за три месяца они перенесли в DataLens более 700 отчётов для 4000 пользователей. Как это было в деталях, мы тоже рассказывали на Yandex Scale 2022.
Такие публичные кейсы помогают новым пользователям DataLens сориентироваться, как использовать сервис для своих задач. Так что мы не просто рассказываем о возможностях, но и формируем вокруг продукта сообщество, в котором можно обсудить свои задачи и обратиться за помощью к коллегам.
Для чего развивать сообщество
Со старта проекта мы развивали BI‑экспертизу среди пользователей: чем больше людей понимают, как с DataLens решать свои задачи, тем больше интересных сценариев — это двигает вперёд как сам проект, так и индустрию в целом. Для этого мы запустили несколько образовательных инициатив: провели BI‑марафон Data Yoga, несколько хакатонов, создали курсы по анализу данных на Нетологии и на Яндекс Практикуме и многое другое. Благодаря этому с 2020 года сообщество DataLens растёт: сейчас там больше 6500 человек.
Центр экспертизы уже сместился в сторону продвинутых пользователей: специфические решения и нетривиальные лайфхаки эффективнее искать не в продуктовой команде, а в сообществе. Порой мы сами удивляемся разнообразию задач и идеям. Активные участники делятся не только кейсами, но и практическими решениями: например, как собрать статистику из Telegram‑чатов или выбрать для разных задач правильную аналитическую функцию: агрегацию с детализацией или оконные функции. А один автор даже написал про DataLens книгу. Наcтоящую, печатную!
Почему опенсорсим
Выход в опенсорс — это следующий шаг в развитии DataLens. Так мы можем вовлечь в сообщество не только пользователей и аналитиков, но и разработчиков. Больше людей смогут вносить свой вклад в продукт напрямую, а его развитие не будет ограничиваться нашими ресурсами. Заказчики смогут разворачивать продукт на своём железе, не опасаясь облачного вендорлока, а также строить data‑экосистемы на базе нескольких опенсорс‑продуктов, например: YDB + YTsaurus + CHYT + Clickhouse + DataLens. Так мы способствуем открытости и развитию рынка российского BI.
Что важно, в качестве основного разработчика остаётся всё та же команда: UX, дизайн, аналитики, эксперты рынка. Мы создаём опенсорс‑продукт коммерческого уровня и будем и дальше в него вкладываться.
Преимущества от выхода в опенсорс получат все:
Заказчики смогут дорабатывать DataLens по своим требованиям и быть гибкими в выборе инфраструктуры.
Для партнеров это дополнительные возможности развития собственной экспертизы и реализации кастомных проектов внедрения.
IT‑вендорам это поможет использовать DataLens в собственных продуктах.
Сообщество BI‑разработчиков может стать контрибьютором в продукт.
Как технически устроен выход в опенсорс
DataLens развивался по пути, стандартному для многих проектов в Яндексе: мы старались по возможности использовать принятые в индустрии технологии, но при этом всё равно зависели от внутренних библиотек и инфраструктуры.
На бэкенде мы используем стандартные для индустрии Python 3, aiohttp и sqlalchemy, однако разработка и сборка была глубоко завязана на монорепозиторий Яндекса.
Когда мы планировали публиковать исходный код, то сразу решили, что «source of truth» будет находиться в опенсорсе, а не во внутреннем репозитории. В этом случае разработчики сервиса работают в рамках доступных всем пул‑реквестов так же, как это делают внешние контрибьюторы. Так мы не просто открываем исходный код — мы делаем разработку продукта более открытой.
Эта схема вынудила пересмотреть то, как работает команда. Нам предстояло перевести работу с зависимостями на стандартные для индустрии пакетные менеджеры и практически заново научиться работать с Python‑сервисами и пакетами так, как это делают снаружи. Выезд из внутренней инфраструктуры отнял немало сил и времени, однако мы верим, что это приносит проекту пользу за счёт отсутствия неявных механизмов синхронизации закрытых репозиториев с открытыми.
Перед открытием проекта предстояло убрать из кода всю внутреннюю специфику: вызовы библиотек, логику для работы с другими внутренними сервисами, некоторые части интерфейса и конфиги для наших окружений, таких как инсталляции DataLens в Yandex Team и Yandex Cloud.
Фактически, каждый из наших сервисов состоит из двух частей: опенсорс‑ядра, доступного теперь всем и closedsource‑расширений, которые оборачивают ядро, добавляя недостающие функции и специфику.
Самый очевидный пример — интеграция с системами аутентификации. На старте мы релизим опенсорс-версию без мультиюзерности и ACL, но в коде уже есть необходимые точки расширения: closedsource-часть использует их для интеграции с Yandex ID и Yandex Cloud IAM. Расширения позволяют модифицировать как серверную логику обработки запросов, так и интерфейс.
Со временем планируем сформировать API для плагинов и документировать его, открыв тем самым путь к созданию экосистемы опенсорс-расширений для DataLens.
Для разработки интерфейсов внутри Yandex Cloud мы всегда использовали стандартные технологии для сборки и работы с зависимостями, но при этом зависели от ряда внутренних библиотек. К счастью, параллельно с нами развивалась дизайн-система и наборы компонент от Gravity UI (о ней расскажем подробнее в ближайшее время) — и большая часть наших зависимостей также выехала в опенсорс.
Как и что можно развернуть у себя
Чтобы запустить DataLens локально, достаточно поднять несколько контейнеров через docker compose:
git clone https://github.com/datalens-tech/datalens
cd datalens && HC=1 docker compose up
После этого вы сможете:
открыть интерфейс,
изучить демо-примеры,
подключить источники,
построить свои дашборды.
В первый релиз открытой версии входит всё необходимое, чтобы опробовать возможности DataLens на своей инфраструктуре. Сейчас в репозитории опубликовано ядро сервиса, набор основных коннекторов (PostgreSQL, ClickHouse и YTsaurus) и основные части интерфейса.
Мы понимаем, что это только первый шаг и впереди ещё много работы, но это важный для нас момент: открытие исходного кода принципиально меняет подход к поддержанию и развитию сервиса. Скоро на GitHub появится Roadmap по развитию опенсорсного DataLens, в котором мы учтём и фидбэк сообщества.
Теперь мы не просто разрабатываем сервис, а создаем открытый BI‑продукт — и делаем это вместе с вами.
Комментарии (38)
GromovBI
26.09.2023 08:21хороший ход, Яндекс. Конечно есть вопросы:
1) что с легальной юридической стороной вопроса, на основе какой лицензии можно это использовать?
2) да, вопросы авторизации и разделения прав доступа - самые интересные, надо будет их раскрывать
3) как все-таки сделать on-premise решение внутри компании в закрытом контуре. Нужно ли будет подключение к интернет?
будем конечно пробовать и руками.
sergeyns
26.09.2023 08:21как все-таки сделать on-premise решение внутри компании в закрытом контуре. Нужно ли будет подключение к интернет?
А как потом переводить на платный тариф тех, кто подсядет??? * сарказм *
pvdubinin Автор
26.09.2023 08:21+91) Открытая лицензия Apache 2.0, про это написано в первом предложении статьи и на Github: https://github.com/datalens-tech/datalens/blob/main/LICENSE
2) Они часто зависят от конкретных требований ИБ внутри компании. В целом - при большом желании можно прикрутить собственную систему аутентификации/авторизации уже сегодня. В будущем, конечно, мы предложим и готовые решения и API/SDK для удобной интеграции с корпоративными системами.
3) Ничто не мешает развернуть DataLens Open Source в закрытом контуре без подключения к интернету уже сейчас.
YandexCloudEditor
26.09.2023 08:212) да, вопросы авторизации и разделения прав доступа - самые интересные, надо будет их раскрывать
Обязательно раскроем детали по развитию опенсорса в roadmap'е и возможно в ещё одной статье чуть позже.
Aquahawk
26.09.2023 08:21+3Записал, буду пробовать вместо графаны. Кстати, как у вас с плотностью информации, иногда хочется дашборд в котором много информации плотненько лежит, из недавннего, видел интерфейс станции Восток из этого поста https://pikabu.ru/story/stantsiya_vostok__samoe_kholodnoe_mesto_na_planete_10674372
Если посмотреть на график, то подписи очень мелкие, когда ты смотришь на дашборд регулярно, ты уже примерно знаешь где и что искать, и хочется график видеть крупнее, а подписи мельче. Я посчитал площадь которую занимает сам график относительно площади виджета, и у яндекса получилось около 50%, как и у графаны, когда у нас несколько графиков. Понятно что это относительная величина, и если будет 1 график то его отступы вокруг не так драматичны, а вот если их несколько, отступы начинаю ждать место. Так вот в интефейсе со станции Восток график занимает более 80% своего виджета, вот рассчёты
Изобразил как мог, но мысль думаю понятна, я хочу на одном мониторе видеть 9-12 графиков, сейчас, если так сделать в графане получаются очень маленикие графики, а совсем скрыть легенду и разметки тоже неправильно, но есть примеры когда отметки вносят "внутрь графика" что увеличивает площадь графика, что собственно имхо и есть самое важное.
pvdubinin Автор
26.09.2023 08:21В вашем примере для повышения плотности можно:
убрать подписи осей (sales и Order month)
убрать легенду
убрать подписи значений по оси Y (и добавить подписи на сам график, например)
убрать лишние заголовки
не использовать иерархию и drill-down, в этом случае не будет и хлебных крошек навигации по ней
Все это делается кликами в настройках чарта, см. пример на основе того же дашборда:
Aquahawk
26.09.2023 08:21Спасибо, уже неплохо, но без заголовка конечно уже непонятно. На скрине с Востока и название и подписи значений есть, но уложены гораздо более плотно. А свой css подкинуть относительно простым способом можно?
Gotfrid_AV
26.09.2023 08:21+1Используем Яндекс DataLens в своей деятельности, в основном как инструмент визуализации (дашборды), данные накапливаем в Яндекс Трекере. Хорошо, что Вы открыты.
KochankovID
26.09.2023 08:21+4Если сравнить с уже существующим open source решением Apache Superset - получается подмножество фичей. Из отличий нашёл разве что возможность расставлять фильтры (селекторы) на дашбордах в разных местах. Проводилось ли у вас сравнение с этим инструментом и есть ли причины, по которым лучше использовать DataLens?
Val_SA
26.09.2023 08:21Ну, по поводу причнин можно подумать.
Во первых, это отечественное ПО по идее, а значит для банков, иного финтеха, преприятий, касающихся оборонки и критических отраслей(те же операторы связи, которые вроде как КИИ) это прям вообще самое то.
Интеграции с сервисами Яндекса для тех, кто уже пользует их экосистему тоже прям кошерно.
pvdubinin Автор
26.09.2023 08:21В этой серии роликов Рома Бунин делал концептуальное сравнение DataLens с PowerBI / Tableau / Superset.
Из того что можно отметить сходу у DataLens можно выделить:
Нативную работа с Clickhouse (для нас основной источник)
Lod'ы, оконные другие аналитические функции
Иерархии и дрилл-даун из измерений
KochankovID
26.09.2023 08:21+2Но ведь:
У SuperSet так же есть коннектор к Clickhouse, который под капотом использует clickhouse-connect. Чем ваша реализация "нативнее"?
Lodы поддерживаются в Tableau, оконные функции поддерживаются вообще везде. Но Lodы сами по себе являются просто синтаксическим сахаром над SQL
Дрилл дауны есть в SuperSet, включаются через DRILL_TO_DETAIL
pvdubinin Автор
26.09.2023 08:21Действительно, DRILL_TO_DETAIL появился в Superset недавно, но пока еще в статусе Testing, а по умолчанию в опенсорсе даже выключен. А parent-child иерархий с частичным раскрытием по клику на "+". так и нет(
В DataLens при описании модели данных можно использовать свой синтаксис для конструктора формул: оконные функции, time-series, LOD'ы, функции по работе с массивами - все это в зависимости от самого чарта, набора измерений и группировок - может транслироваться в разные SQL подзапросы с учетом специфики/синтаксиса конкретного источника. А в Superset, для агрегации сложнее обычной SUM/COUNT - уже нужно писать Custom SQL.
Вообще, детальное сравнение инструментов - тема отдельной статьи)
cyc1e
26.09.2023 08:21ссылка некорректная
pvdubinin Автор
26.09.2023 08:21Исправляюсь:
Серия роликов про концептуальное сравнение DataLens с PowerBI / Tableau / Superset
astoulov
26.09.2023 08:21Еще огромный плюс - работа с картами, которые доступны в РФ и бесплатны при наличии геоинформации в самой базе
Val_SA
26.09.2023 08:21Кстати, я не сильно шарю за опенсорс, но мне интересно, зарабтывает ли что то на этом Яндекс, и если да, то каким образом?
axifive
26.09.2023 08:21На предоставлении поддержки/развертывании другим компаниям, +получают ускоренное развитие самого продукта
pvdubinin Автор
26.09.2023 08:21Потенциально возможны коммерческие проекты внедрения и платная поддержка
BerdBerd
26.09.2023 08:21набор основных коннекторов (PostgreSQL, ClickHouse и YTsaurus)
А из csv данные можно загружать?
Всего 3 коннектора - это очень мало.
+ещё вопрос - не будет ли яндекс сливать данные или следить за сервером, на котором всё будет развёрнуто?
axifive
26.09.2023 08:21не будет ли яндекс сливать данные или следить за сервером, на котором всё будет развёрнуто?
нет конечно, в опенсурс продуктах о сборе телеметрии сразу объявляют и флаг для отключения предоставляют
pvdubinin Автор
26.09.2023 08:21Список коннекторов в опенсорсе будет расширяться. Коннектор к CSV требует дополнительного механизма кэширования, поэтому добавим его чуть позже.
velu
26.09.2023 08:21Скажите пожалуйста. А коннектор с Microsoft SQL Server рассматривается? Или остаётся PowerBI?
pvdubinin Автор
26.09.2023 08:21Коннектор к MS SQL уже есть в облачном DataLens. В open source список подключений также планируем расширять. Для некоторых подключений есть лицензионные нюансы используемых библиотек, поэтому не можем выложить все сразу.
vesper
26.09.2023 08:21Поддерживаю вопрос про коннекторы, всего 3 штуки это мало. Как насчёт крупного энтерпайза с Oracle Database (SQL)? Они не в вашем фокусе, или предполагаете что у большинства PostgreSQL?)
pvdubinin Автор
26.09.2023 08:21Коннектор к Oracle есть в облачном DataLens. С точки зрения публикации его в open source есть лицензионные нюансы. Сейчас юристами прорабатываем варианты, как их обойти.
ekb
26.09.2023 08:21Есть ли реализация OLAP-таблицы, чтобы пользователь мог самостоятельно накидывать измерения в столбцы\строки\фильтры и раскладывать по ним факты? Спасибо!
pvdubinin Автор
26.09.2023 08:21Да, создаете обычный чарт Сводная таблица. В нее можете накидывать измерения и показатели, добавлять итоги / подытоги, включать условный формат и индикаторы, а также многое другое.
Krooxe
26.09.2023 08:21Подскажите, пожалуйста по таким вопросам:
1) есть ли что-то аналогичное DAX в Power BI?
2) есть ли возможность создавать и импортировать свои (или заимствованные) чарты?
pvdubinin Автор
26.09.2023 08:211) Есть вычисляемые поля. В документации есть описание функций и туториалы по их использованию.
2) Если речь про новые типы чартов, то готового API/SDK для этого пока нет. Но весь исходный код открыт, поэтому при большом желании можно разобраться в том, как все устроено и сделать pull-request с новым функционалом.
b19
26.09.2023 08:21вижу, что функционал опенсорсного сильно урезан в отличие от облачного, это специально так сделано, чтобы людей привлечь в платную версию?
pvdubinin Автор
26.09.2023 08:21О причинах ограничений писали в посте. Вывод cloud-native сервиса в опенсорс — большой проект. Не все компоненты Yandex Cloud возможно вынести в опенсорс. Где-то нам удалось избавиться от зависимостей, а что-то еще предстоит. Вы про какую платную версию?
b19
26.09.2023 08:21Извините, не так выразился, я имел в виду облачную версию, в которой требуется инфраструктура яндекс облаки, что не всегда бесплатно ))
Да, это несомненно важное событие для продукта переход в открытый код... просто тоже думаем перейти возможно с Tableau на Datalens, и возник вопрос перенесете ли обширный функционал облачной версии на оперсорный..
mihanc
26.09.2023 08:21Сохраняются ли лимиты, описанные здесь, после разворачивания на своей машине: https://cloud.yandex.ru/docs/datalens/concepts/limits ?
pvdubinin Автор
26.09.2023 08:21Да, эти же лимиты описаны в документации open source проекта: https://datalens.tech/docs/ru/concepts/limits.html
Важно, что эти лимиты именно про отображение на чарте (например, отобразить 75001 столбец на одном чарте уже не получится, но оно обычно и не имеет смысла). Сырых данных под чартом может быть сколько угодно - в этом ограничений нет (например, вывести сумму продаж по 100 продуктам за всю историю 2млн фактов продаж - не проблема).
В этой статье рассматривали кейс и производительность дашборда на таблице с 150млн строк https://habr.com/ru/companies/yandex_cloud_and_infra/articles/746022/
kuraga333
Спасибо! А мне кажется, или когда-то в основе лежал Dash by Plotly?
rbunin
Нет, Plotly не было )