Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex DataLens
  • Начало работы
  • Практические руководства
  • Концепции
    • Обзор сервиса
    • Организации в DataLens
    • Подключение
    • Типы данных
    • Датасет
    • Чарт
    • Дашборд
    • Объединение данных
    • Рекомендации по оптимизации
    • Использование Markdown в DataLens
    • DataLens Public
    • Вычисляемые поля
    • Параметризация
    • Marketplace
    • Резервное копирование
    • Кеширование
    • Квоты и лимиты
  • Пошаговые инструкции
  • Управление доступом
  • Правила тарификации
  • Справочник визуализаций
  • Справочник функций
  • Туториалы по функциям
  • Образовательные проекты
  • Решение проблем
    • Вопросы и ответы
    • Ошибки DataLens
  1. Концепции
  2. Объединение данных

Объединение данных Yandex DataLens

Статья создана
Yandex Cloud
  • Способы объединения данных
    • На уровне датасета
    • На уровне чарта
    • На уровне связей селекторов
  • Оптимизация данных при объединении таблиц
    • Примеры

Yandex DataLens использует подключение, чтобы получить данные из источника (БД, CSV, Metrica и т.д.). На основе предоставленных подключением данных можно создавать датасеты, чарты и селекторы. Если в источнике доступно несколько таблиц, вы можете объединять их для получения необходимого набора данных. Связать данные из разных датасетов можно на уровне чарта или через связь селекторов.

Способы объединения данных

Вы можете воспользоваться различными вариантами объединения данных:

  • На уровне датасета

    • Добавление таблиц
    • SQL-запрос
  • На уровне чарта

    • QL-чарт
    • Мультидатасетные чарты
  • На уровне связей селекторов

На уровне датасета

Чтобы объединить данные на уровне датасета, вы можете добавить таблицы на рабочую область или написать SQL-запрос.

Важно

Нельзя объединить данные из разных источников на уровне одного датасета.

Добавление таблиц

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

SQL-запрос

В датасете можно добавить произвольный SQL-запрос к источнику данных. Текст запроса при обращении к источнику исполняется в виде подзапроса. Результат запроса можно использовать как итоговый набор данных датасета или объединить с другими таблицами источника через интерфейс.

На уровне чарта

DataLens позволяет объединить данные на уровне чарта. Для объединения данных на уровне чарта вы можете использовать QL-чарт или мультидатасетные чарты.

QL-чарт

QL-чарты — чарты, созданные на основе подключения, если источник подключения — БД. При выполнении SQL-запроса отдельный объект Датасет не создается, он генерируется сразу и отображается на панели превью. Подробнее см. инструкцию Создание QL-чарта.

Мультидатасетные чарты

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

На уровне связей селекторов

Можно добавить на дашборд селектор, который влияет на результаты запросов в связанных с ним виджетах:

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

Перед созданием связи убедитесь, что поле, по которому фильтрует селектор, присутствует в датасете, по которому построен чарт. В противном случае связь работать не будет. Подробнее см. инструкцию Создание алиаса в DataLens.

Оптимизация данных при объединении таблиц

В некоторых чартах, построенных на основе датасета с объединенными таблицами, могут использоваться поля только из одной таблицы. В этом случае DataLens оптимизирует запрос к источнику. Оператор JOIN не применяется, и запрос возвращает данные только из одной таблицы без фильтрации по другим. Это позволяет уменьшить объем запрашиваемых данных и сократить время выполнения запроса. Но при этом данные, которые возвращает оптимизированный запрос, могут отличаться от ожидаемых.

Оптимизация применяется при следующих условиях:

  • в чарте используются поля только одной из связанных таблиц;
  • поля из других таблиц не находятся ни в одной из секций чарта;
  • поля из других таблиц не используются в вычисляемых полях чарта.

Примечание

Оптимизация не работает, если датасет описан через SQL-запрос к источнику.

Рассмотрим оптимизацию на примере разных датасетов для источника с таблицами:

Сотрудники
id name department_id
1 Иванов 2
2 Петров 4
3 Сидоров 1
4 Степанов 1
5 Соколов
6 Орлова 3
7 Шишкина 3
8 Семенов
9 Антонова 3
10 Сергеев 4
Отделы
id name
1 Логистика
2 ИТ
3 Бухгалтерия
4 СБ
Премии
employee_id bonus
1 35 000
2 40 000
5 28 000
7 30 000
9 50 000
Квалификация
employee_id category
2 Категория 1
4 Категория 1
5 Категория 2
6 Категория 3
7 Категория 3
8 Категория 2
10 Категория 1

Примеры

INNER JOIN двух таблиц

Датасет построен из таблиц Сотрудники и Отделы, объединенных оператором INNER JOIN.

image

В результате объединения в датасете содержатся только общие строки из двух таблиц. Построим чарт, содержащий поля из обеих таблиц.

image

Теперь построим чарт только с полями таблицы Сотрудники. В этом случае DataLens не применяет оператор JOIN и работает только с этой таблицей. В чарте мы видим все значения из таблицы Сотрудники, а не только те, которые пересекаются с таблицей Отделы.

image

LEFT/RIGHT JOIN двух таблиц

Датасет построен на основе таблиц Премии и Сотрудники, объединенных оператором LEFT JOIN. Таблица Премии используется целиком, а из таблицы Сотрудники выбираются только те значения, которые есть в Премии.

image

Построим чарт, содержащий поля из обеих таблиц.

image

Теперь оставим в чарте только поля из таблицы Сотрудники. В этом случае мы увидим в чарте все значения из этой таблицы (без фильтрации по таблице Премии).

image

Так же работает оптимизация и для оператора RIGHT JOIN.

INNER JOIN трех таблиц

Датасет построен на основе трех таблиц:

  • первая таблица (Отделы) объединена оператором INNER JOIN cо второй таблицей (Сотрудники);
  • вторая таблица (Сотрудники) объединена оператором INNER JOIN c третьей таблицей (Премии).

image

Построим чарт, содержащий поля из всех таблиц.

image

Теперь оставим в чарте только поля из таблицы Сотрудники. В этом случае мы увидим в чарте все значения из этой таблицы (без фильтрации по таблицам Премии и Отделы).

image

Добавим в чарт поля только из первой (Отделы) и третьей (Премии) таблицы. Явной связи между этими таблицами нет, но каждая из них связана с таблицей Сотрудники. Поэтому DataLens не оптимизирует запрос к источнику. В этом случае мы увидим в чарте значения из всех трех таблиц с учетом фильтрации.

image

INNER JOIN одной таблицы с двумя другими

Датасет построен на основе трех таблиц:

  • первая таблица (Сотрудники) объединена оператором INNER JOIN cо второй таблицей (Отделы);
  • первая таблица (Сотрудники) объединена оператором INNER JOIN c третьей таблицей (Премии).

image

Построим чарт, содержащий поля из всех таблиц.

image

Теперь оставим в чарте только поля из таблицы Сотрудники. В этом случае мы увидим в чарте все значения из этой таблицы (без фильтрации по таблицам Отделы и Премии).

image

Добавим в чарт поля только из первой (Сотрудники) и третьей (Премии) таблицы. В этом случае мы увидим в чарте общие значения из этих таблиц (без фильтрации по таблице Отделы).

image

INNER JOIN четырех таблиц

Датасет построен на основе четырех таблиц:

  • первая таблица (Квалификация) объединена оператором INNER JOIN cо второй таблицей (Премии);
  • первая таблица (Квалификация) объединена оператором INNER JOIN c третьей таблицей (Сотрудники);
  • третья таблица (Сотрудники) объединена оператором INNER JOIN c четвертой таблицей (Отделы).

image

Построим чарт, содержащий поля из всех таблиц.

image

Теперь оставим в чарте только поля из таблицы Квалификация. В этом случае мы увидим в чарте все значения из этой таблицы (без фильтрации по остальным таблицам).

image

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

image

Была ли статья полезна?

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Способы объединения данных
  • На уровне датасета
  • На уровне чарта
  • На уровне связей селекторов
  • Оптимизация данных при объединении таблиц
  • Примеры