Как добавить столбец из другой таблицы в Power BI
Кратко: в Power BI можно добавить столбец из другой таблицы тремя основными способами — через RELATED (при наличии связи), через DAX-выражение с фильтром (если связи нет) и через Power Query (индекс + обращение по позиции). Ниже — пошаговые инструкции, альтернативы, когда методы не подходят и готовый чеклист для быстрой работы.

Power BI предлагает множество функций для организации и визуализации данных, но некоторые операции, например добавление столбца из другой таблицы, могут казаться неочевидными. Ниже мы разберём три рабочих подхода и дадим практические советы по выбору.
Ситуация: описание проблемы
Пользователь в официальном форуме Microsoft описал задачу так:
У меня 2 таблицы: Table [A] и TimeZone. Как добавить новый столбец в [A], который будет использовать значение столбца из таблицы TimeZone без применения Merge Query? В таблице TimeZone только одно значение — смещение в часах. Я хотел бы использовать это значение как параметр, но не понял, как.
Цель — взять значение часов из таблицы TimeZone и применить его к строкам в Table [A] без ненужного объединения.
Способ 1 — есть связь между таблицами (RELATED)
Если таблицы связаны (через ключ), самый простой способ — добавить вычисляемый столбец DAX на таблице [A]:
New Column = RELATED(TimeZone[Value])Пояснение: RELATED возвращает значение из связанной таблицы по существующей модели связей. Простая, быстрая и эффективная опция.
Важно: RELATED работает только при корректной однонаправленной или двунаправленной связи между таблицами.
Способ 2 — нет связи между таблицами (DAX с фильтром)
Если вы не используете модели связей, можно получить значение по ключу с помощью выражения с переменными и CALCULATE:
New Column =
var JoinCol = 'TableA'[ID]
var NewCol = CALCULATE(MAX('TimeZone'[Value]), 'TimeZone'[ID] = JoinCol)
return NewColПояснение: мы берём ключ из TableA, затем вычисляем соответствующее значение из TimeZone с фильтрацией по ID. Для одиночного значения можно использовать MAX или VALUES, но учитывайте, что VALUES вернёт ошибку при нескольких значениях.
Когда это не сработает: если для одного ID в TimeZone несколько значений — результат будет неоднозначен. Решение — агрегировать (MAX, MIN) или уточнить логику сопоставления.
Альтернатива DAX: функция LOOKUPVALUE удобна для точечного поиска:
New Column = LOOKUPVALUE(TimeZone[Value], TimeZone[ID], 'TableA'[ID])LOOKUPVALUE проще читать, но также предполагает однозначное соответствие.
Способ 3 — Power Query: индекс + обращение по позиции
Иногда удобнее сделать преобразование на уровне Power Query (M). Пошагово:
- Выберите Изменить запросы. Это откроет редактор Power Query.

- Перейдите на вкладку Добавить столбец.
- Добавьте Индексный столбец и назовите его Index.

- Добавьте Пользовательский столбец с выражением:
= Table2[ColumnName]{[Index]}Пояснение: выражение обращается к таблице Table2 по позиции индекса. Этот приём удобен, когда таблицы синхронизированы по порядку или когда TimeZone содержит ровно одно значение на каждую позицию.
Замечание: индексирование опасно, если порядок строк не зафиксирован. Всегда сортируйте и проверьте соответствие индексов.
Альтернативные подходы и использование параметров
- Merge Query (Объединение): иногда объединение таблиц — более очевидный и явный путь. Оно создаёт явную связь строк и подходит для сложных соответствий.
- Параметры Power Query: если TimeZone действительно содержит одно глобальное значение (один сдвиг для всех строк), создайте параметр и используйте его в выражениях — это чище и более управляемо.
- Использование Measure vs Calculated Column: если значение нужно лишь в визуализации, рассмотрите меру (Measure) вместо вычисляемого столбца, чтобы экономить модель и уменьшить размер.
Ментальная модель: ориентиры для выбора метода
- Есть явная связь по ключу → RELATED.
- Нет связи, но есть уникальный ключ → LOOKUPVALUE или CALCULATE с фильтром.
- Одна строка-значение для всех записей → параметр Power Query.
- Требуется гибкая предобработка → Power Query (Merge / Index).
Чеклист перед применением
- Проверить наличие и тип связи между таблицами.
- Убедиться, что для каждой пары ID ровно одно значение (или определить агрегат).
- Решить: делать в модели (DAX) или в источнике (Power Query).
- Тестировать на небольшом наборе данных.
Критерии приёмки
- Значение из TimeZone корректно отображается в новом столбце для нескольких тестовых ID.
- Нет дублирования или неожиданных NULL для известных ключей.
- Производительность модели остаётся приемлемой после добавления столбца.
Когда методы не подходят (примеры ошибок)
- Несоответствие порядка строк при использовании индексного метода.
- Множественные значения в TimeZone для одного ID без определения агрегации.
- Большой объём данных: вычисляемые столбцы могут увеличить объём модели — в таких случаях предпочтительнее меры или предобработка источника.
Мини‑плейбук: быстрый порядок действий
- Проверьте, доступно ли уникальное соответствие по ключу.
- Если да — используйте RELATED или LOOKUPVALUE.
- Если нет ключа, но порядок согласован — Power Query с индексом.
- Для глобального единственного значения — создайте параметр Power Query.
- Протестируйте и задокументируйте решение.
1‑строчный глоссарий
RELATED — функция DAX для получения значения из связанной таблицы; LOOKUPVALUE — точечный поиск по паре «столбец=значение».
Заключение
Добавление столбца из другой таблицы в Power BI может быть выполнено разными способами — выбор зависит от наличия связей, структуры данных и требований к производительности. RELATED и LOOKUPVALUE удобны при явных ключах; CALCULATE даёт гибкость; Power Query хорош для предобработки и параметров.
Важно: всегда проверяйте корректность сопоставления на тестовых данных и думайте о масштабируемости решения.
Наши рекомендации помогли? Оставьте комментарий с вашей задачей — подскажем оптимальный подход.
Похожие материалы
Отключить режим сна в Windows 10 — быстро
Как скачать Instagram Stories — подробное руководство
Как жаловаться коллегам по e‑mail вежливо
Как узнать свободное место на Chromebook
Скрытые функции Google Play — полезные приёмы