Сценарий применения#
При работе с данными может возникнуть необходимость объединить две таблицы в одну новую таблицу.
Допустим, есть такие таблицы:
Таблица A: содержит имена студентов и их оценки по английскому языку.
Таблица B: содержит имена студентов и их оценки по математике.
Если вы хотите видеть имена студентов, оценки по математике и английскому в одной таблице, выполните соединение по полю Имя в качестве основы слияния.
На схеме ниже представлены различные режимы объединения.
Описание функции#
Если вы знакомы с SQL, функция Join аналогична одноимённой операции в SQL.
Если вам больше знакомы VLOOKUP и SUMIF в Excel, посмотрите функцию добавления столбцов из других таблиц.
Особенности для режима прямого соединения#
Для выполнения Join на данных с прямым соединением обе таблицы должны быть из одного источника данных; в режиме извлечения можно соединять таблицы из разных источников.
Если попытаться объединить таблицы из разных источников, появится сообщение: "[DIRECT-ETL] unsupported data source: databases on different hosts/ports".
В режиме прямого соединения только некоторые базы данных поддерживают объединение с таблицами Excel.
Пример#
Объединение полей из таблиц Продажи и Магазины для анализа.
Создание рабочей книги и добавление данных#
Создайте рабочую книгу и добавьте данные.
Настройка соединения (Join)#
- Выполнить Join можно нажав на + -> Соединить, как показано на рисунке.
- Выберите таблицу Магазины для объединения и отметьте все поля, принимающие участие в операции Join.
- В качестве режима слияния выберите левое соединение (режимы слияния соответствуют джойнам в SQL) и укажите Номер магазина как основу для слияния.
Поле-основание должно быть одного типа в обеих таблицах. Если поля с одинаковым названием есть в обеих таблицах, система автоматически добавит их в качестве основания объединения. Можно вручную удалить или добавить основание.
Поля обеих таблиц объединяются в одну таблицу. Используемые для объединения поля совмещаются в одно поле (например, два поля Номер магазина превращаются в одно).
Несколько оснований для объединения#
Допустим нужно объединить таблицы с оценками по математике и физике.
В этом случае одного поля недостаточно, и как основание нужно использовать сразу Номер и Имя. Это обеспечивает уникальность данных при объединении.
Создание вычисляемого основания объединения#
Перед непосредственным объединением таблиц через Join можно обработать поля-основания с помощью Создать вычисление для объединения.
Пример 1#
Ситуация: поля-основания разных типов или имеют различные значения. Для изменения типа данных используйте функцию сводный расчет.
Пример 2#
Если нужно несколько оснований для объединения (например, Номер и Имя студента), можно объединить их в одно поле с помощью Создать сводный расчет.
Примечания#
Несовпадение по null-значениям#
Если в исходных данных поля-основания содержат null-значения, при Join они совпадать не будут. Если требуется учитывать и null, предварительно присвойте им, например, значение 0.
Генерация декартова произведения#
Если в полях-основаниях есть повторяющиеся значения, после джойна образуется декартово произведение, и данные разрастутся. Например, если Номер не уникален ни в одной из таблиц, Join приведёт к такому эффекту.
Система предупредит о наличии дублей в основаниях.
Для надёжности система автоматически остановит обновление рабочих наборов, если после Full Join:
объём данных > 10 миллионов, коэффициент расширения ≥ 5 (min(объём после Join/объём левой таблицы, объём после Join/объём правой таблицы)).
При возникновении декартова произведения вы увидите уведомления:
"Successful Dataset Generation: Обнаружено декартово произведение..." (увеличено время обработки, проверьте столбцы на дубли) "Dataset Generation Error: Обнаружено декартово произведение..." (данные сильно увеличились, выполнение остановлено, проверьте основания Join на количество дублей)
Если необходимо выполнить анализ даже при N : N связях, сократите данные фильтрацией для предотвращения прерывания работы.
Требования к полям данных#
Если в исходных данных есть пробелы, после Join данные могут быть некорректны. Убедитесь, что в названиях полей нет лишних пробелов.