Сегодня мы опубликовали на GitHub под открытой лицензией Apache 2.0 исходный код Yandex DataLens — сервиса для анализа и визуализации данных. Теперь использовать опенсорс‑версию DataLens может любой желающий и в любой инфраструктуре.

Меня зовут Павел Дубинин, вместе с Гаджи Гаджиевым мы в Yandex Cloud занимаемся развитием DataLens. Сегодня расскажем, какие задачи он помогает решать разным пользователям, какие возможности открываются с выходом в опенсорс и что можно развернуть у себя прямо сейчас.

Что такое DataLens 

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

Пример дашборда, который можно построить в DataLens
Пример дашборда, который можно построить в DataLens

С самого начала он развивался одновременно как внутренний инструмент в Яндексе и как 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)


  1. kuraga333
    26.09.2023 08:21
    +1

    Спасибо! А мне кажется, или когда-то в основе лежал Dash by Plotly?


    1. rbunin
      26.09.2023 08:21

      Нет, Plotly не было )


  1. GromovBI
    26.09.2023 08:21

    хороший ход, Яндекс. Конечно есть вопросы:

    1) что с легальной юридической стороной вопроса, на основе какой лицензии можно это использовать?

    2) да, вопросы авторизации и разделения прав доступа - самые интересные, надо будет их раскрывать

    3) как все-таки сделать on-premise решение внутри компании в закрытом контуре. Нужно ли будет подключение к интернет?

    будем конечно пробовать и руками.


    1. sergeyns
      26.09.2023 08:21

      как все-таки сделать on-premise решение внутри компании в закрытом контуре. Нужно ли будет подключение к интернет?

      А как потом переводить на платный тариф тех, кто подсядет??? * сарказм *


    1. pvdubinin Автор
      26.09.2023 08:21
      +9

      1) Открытая лицензия Apache 2.0, про это написано в первом предложении статьи и на Github: https://github.com/datalens-tech/datalens/blob/main/LICENSE

      2) Они часто зависят от конкретных требований ИБ внутри компании. В целом - при большом желании можно прикрутить собственную систему аутентификации/авторизации уже сегодня. В будущем, конечно, мы предложим и готовые решения и API/SDK для удобной интеграции с корпоративными системами.

      3) Ничто не мешает развернуть DataLens Open Source в закрытом контуре без подключения к интернету уже сейчас.


    1. YandexCloudEditor
      26.09.2023 08:21

      2) да, вопросы авторизации и разделения прав доступа - самые интересные, надо будет их раскрывать

      Обязательно раскроем детали по развитию опенсорса в roadmap'е и возможно в ещё одной статье чуть позже.


  1. nalgeon
    26.09.2023 08:21


  1. Aquahawk
    26.09.2023 08:21
    +3

    Записал, буду пробовать вместо графаны. Кстати, как у вас с плотностью информации, иногда хочется дашборд в котором много информации плотненько лежит, из недавннего, видел интерфейс станции Восток из этого поста https://pikabu.ru/story/stantsiya_vostok__samoe_kholodnoe_mesto_na_planete_10674372

    Если посмотреть на график, то подписи очень мелкие, когда ты смотришь на дашборд регулярно, ты уже примерно знаешь где и что искать, и хочется график видеть крупнее, а подписи мельче. Я посчитал площадь которую занимает сам график относительно площади виджета, и у яндекса получилось около 50%, как и у графаны, когда у нас несколько графиков. Понятно что это относительная величина, и если будет 1 график то его отступы вокруг не так драматичны, а вот если их несколько, отступы начинаю ждать место. Так вот в интефейсе со станции Восток график занимает более 80% своего виджета, вот рассчёты

    Изобразил как мог, но мысль думаю понятна, я хочу на одном мониторе видеть 9-12 графиков, сейчас, если так сделать в графане получаются очень маленикие графики, а совсем скрыть легенду и разметки тоже неправильно, но есть примеры когда отметки вносят "внутрь графика" что увеличивает площадь графика, что собственно имхо и есть самое важное.


    1. pvdubinin Автор
      26.09.2023 08:21

      В вашем примере для повышения плотности можно:

      • убрать подписи осей (sales и Order month)

      • убрать легенду

      • убрать подписи значений по оси Y (и добавить подписи на сам график, например)

      • убрать лишние заголовки

      • не использовать иерархию и drill-down, в этом случае не будет и хлебных крошек навигации по ней

      Все это делается кликами в настройках чарта, см. пример на основе того же дашборда:


      1. Aquahawk
        26.09.2023 08:21

        Спасибо, уже неплохо, но без заголовка конечно уже непонятно. На скрине с Востока и название и подписи значений есть, но уложены гораздо более плотно. А свой css подкинуть относительно простым способом можно?


  1. Gotfrid_AV
    26.09.2023 08:21
    +1

    Используем Яндекс DataLens в своей деятельности, в основном как инструмент визуализации (дашборды), данные накапливаем в Яндекс Трекере. Хорошо, что Вы открыты.


  1. KochankovID
    26.09.2023 08:21
    +4

    Если сравнить с уже существующим open source решением Apache Superset - получается подмножество фичей. Из отличий нашёл разве что возможность расставлять фильтры (селекторы) на дашбордах в разных местах. Проводилось ли у вас сравнение с этим инструментом и есть ли причины, по которым лучше использовать DataLens?


    1. Val_SA
      26.09.2023 08:21

      Ну, по поводу причнин можно подумать.
      Во первых, это отечественное ПО по идее, а значит для банков, иного финтеха, преприятий, касающихся оборонки и критических отраслей(те же операторы связи, которые вроде как КИИ) это прям вообще самое то.
      Интеграции с сервисами Яндекса для тех, кто уже пользует их экосистему тоже прям кошерно.


    1. pvdubinin Автор
      26.09.2023 08:21

      В этой серии роликов Рома Бунин делал концептуальное сравнение DataLens с PowerBI / Tableau / Superset.

      Из того что можно отметить сходу у DataLens можно выделить:

      • Нативную работа с Clickhouse (для нас основной источник)

      • Lod'ы, оконные другие аналитические функции

      • Иерархии и дрилл-даун из измерений


      1. KochankovID
        26.09.2023 08:21
        +2

        Но ведь:

        • У SuperSet так же есть коннектор к Clickhouse, который под капотом использует clickhouse-connect. Чем ваша реализация "нативнее"?

        • Lodы поддерживаются в Tableau, оконные функции поддерживаются вообще везде. Но Lodы сами по себе являются просто синтаксическим сахаром над SQL

        • Дрилл дауны есть в SuperSet, включаются через DRILL_TO_DETAIL


        1. pvdubinin Автор
          26.09.2023 08:21

          Действительно, DRILL_TO_DETAIL появился в Superset недавно, но пока еще в статусе Testing, а по умолчанию в опенсорсе даже выключен. А parent-child иерархий с частичным раскрытием по клику на "+". так и нет(

          В DataLens при описании модели данных можно использовать свой синтаксис для конструктора формул: оконные функции, time-series, LOD'ы, функции по работе с массивами - все это в зависимости от самого чарта, набора измерений и группировок - может транслироваться в разные SQL подзапросы с учетом специфики/синтаксиса конкретного источника. А в Superset, для агрегации сложнее обычной SUM/COUNT - уже нужно писать Custom SQL.

          Вообще, детальное сравнение инструментов - тема отдельной статьи)


      1. cyc1e
        26.09.2023 08:21

        ссылка некорректная


        1. pvdubinin Автор
          26.09.2023 08:21

          Исправляюсь:

          Серия роликов про концептуальное сравнение DataLens с PowerBI / Tableau / Superset


      1. astoulov
        26.09.2023 08:21

        Еще огромный плюс - работа с картами, которые доступны в РФ и бесплатны при наличии геоинформации в самой базе


  1. Val_SA
    26.09.2023 08:21

    Кстати, я не сильно шарю за опенсорс, но мне интересно, зарабтывает ли что то на этом Яндекс, и если да, то каким образом?


    1. axifive
      26.09.2023 08:21

      На предоставлении поддержки/развертывании другим компаниям, +получают ускоренное развитие самого продукта


    1. pvdubinin Автор
      26.09.2023 08:21

      Потенциально возможны коммерческие проекты внедрения и платная поддержка


  1. BerdBerd
    26.09.2023 08:21

    набор основных коннекторов (PostgreSQL, ClickHouse и YTsaurus)

    А из csv данные можно загружать?

    Всего 3 коннектора - это очень мало.

    +ещё вопрос - не будет ли яндекс сливать данные или следить за сервером, на котором всё будет развёрнуто?


    1. axifive
      26.09.2023 08:21

      не будет ли яндекс сливать данные или следить за сервером, на котором всё будет развёрнуто?

      нет конечно, в опенсурс продуктах о сборе телеметрии сразу объявляют и флаг для отключения предоставляют


    1. pvdubinin Автор
      26.09.2023 08:21

      Список коннекторов в опенсорсе будет расширяться. Коннектор к CSV требует дополнительного механизма кэширования, поэтому добавим его чуть позже.


      1. velu
        26.09.2023 08:21

        Скажите пожалуйста. А коннектор с Microsoft SQL Server рассматривается? Или остаётся PowerBI?


        1. pvdubinin Автор
          26.09.2023 08:21

          Коннектор к MS SQL уже есть в облачном DataLens. В open source список подключений также планируем расширять. Для некоторых подключений есть лицензионные нюансы используемых библиотек, поэтому не можем выложить все сразу.


  1. vesper
    26.09.2023 08:21

    Поддерживаю вопрос про коннекторы, всего 3 штуки это мало. Как насчёт крупного энтерпайза с Oracle Database (SQL)? Они не в вашем фокусе, или предполагаете что у большинства PostgreSQL?)


    1. pvdubinin Автор
      26.09.2023 08:21

      Коннектор к Oracle есть в облачном DataLens. С точки зрения публикации его в open source есть лицензионные нюансы. Сейчас юристами прорабатываем варианты, как их обойти.


  1. ekb
    26.09.2023 08:21

    Есть ли реализация OLAP-таблицы, чтобы пользователь мог самостоятельно накидывать измерения в столбцы\строки\фильтры и раскладывать по ним факты? Спасибо!


    1. pvdubinin Автор
      26.09.2023 08:21

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


  1. Krooxe
    26.09.2023 08:21

    Подскажите, пожалуйста по таким вопросам:

    1) есть ли что-то аналогичное DAX в Power BI?

    2) есть ли возможность создавать и импортировать свои (или заимствованные) чарты?


    1. pvdubinin Автор
      26.09.2023 08:21

      1) Есть вычисляемые поля. В документации есть описание функций и туториалы по их использованию.

      2) Если речь про новые типы чартов, то готового API/SDK для этого пока нет. Но весь исходный код открыт, поэтому при большом желании можно разобраться в том, как все устроено и сделать pull-request с новым функционалом.


  1. b19
    26.09.2023 08:21

    вижу, что функционал опенсорсного сильно урезан в отличие от облачного, это специально так сделано, чтобы людей привлечь в платную версию?


    1. pvdubinin Автор
      26.09.2023 08:21

      О причинах ограничений писали в посте.  Вывод cloud-native сервиса в опенсорс — большой проект. Не все компоненты Yandex Cloud возможно вынести в опенсорс. Где-то нам удалось избавиться от зависимостей, а что-то еще предстоит. Вы про какую платную версию?


      1. b19
        26.09.2023 08:21

        Извините, не так выразился, я имел в виду облачную версию, в которой требуется инфраструктура яндекс облаки, что не всегда бесплатно ))
        Да, это несомненно важное событие для продукта переход в открытый код... просто тоже думаем перейти возможно с Tableau на Datalens, и возник вопрос перенесете ли обширный функционал облачной версии на оперсорный..


  1. mihanc
    26.09.2023 08:21

    Сохраняются ли лимиты, описанные здесь, после разворачивания на своей машине: https://cloud.yandex.ru/docs/datalens/concepts/limits ?


    1. 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/