В общем, суть такая.
Если есть возможность, создавать справочники надо в Power Query, а не в DAX.
Если в PQ, то исходим из минимум 2 сценариев:
1) в каждой из исходных таблиц есть один и тот же набор столбцов, который мы относим к описанию справочника. Например, код клиента + название + ИНН
2) в исходных данных пересекается только часть столбцов, относящихся к справочнику. Например, в одной таблице код клиента и ИНН, в другой название и ИНН, в третьей только код клиента, и мы хотим создать единый справочник.
В первом случае задача сводится к следующему:
1. исходные таблицы подразумеваем оставить сырыми и в модель не грузить.
2. для каждой исходной таблицы извлекаем столбцы справочника в отдельные запросы (которые тоже не грузим), называем столбцы однообразно.
3. Делаем объединение запросиков из пункта 2 в один общий запрос и удаляем дубликаты в таблице. Это и будет справочник.
4. Далее, если в нашем справочнике и в исходных данных есть какой-то уникальный столбец, который сойдет за ключевой, то делаем ссылки на исходные запросы п.1 и удаляем в новых запросах лишние поля справочника, оставляем только код. В общем всё. можно строить связь
5. Если такого столбца нет, то индексируем таблицу из п.3, далее в копию исходных таблиц мерджим по полям справочника столбец индекса - он и будет кодом. Удаляем лишние столбцы из копий исходника и вуаля, у нас всё красивое
Второй сценарий сложнее, там сначала надо создать некий единый список уникальных значений общих столбцов, а потом притянуть (мерджить, джойнить) справа несовпадающие столбцы
А вот в DAX мы гораздо более ограничены, поэтому там всё СИЛЬНО проще
=
DISTINCT (
UNION (
SELECTCOLUMNS ( Table1, "Col1", Table1[Col1], "Col2", Table1[Col2] ),
SELECTCOLUMNS ( Table2, "Col1", Table2[Col1], "Col2", Table2[Col2] )
)
)
Так мы получим таблицу, содержащую уникальные строки из объединения двух столбцов 2 таблиц. Вот есть там ключ для связывания, нету - тут надо смотреть, и, возможно, добавить их и в исходники в виде сцепок, и в такую формулу
Естественно, все исходные столбцы останутся в исходных таблицах и будут по-прежнему занимать память.
И такое решение на DAX - это реализация первого сценария, описанного выше. Второй сценарий здесь тоже реализуем, но куча нюансов