У меня есть 2 таблицы образцов, таблица "EX4" и "Даты". Теперь я хочу создать третью таблицу в DAX, которая объединяет даты с таблицей EX4.
Теперь я хочу присоединиться к таблице EX4 с датами [Sale_Date], где
Dates[Sale_Date] >= Ex4_Ext[min_date] and Dates[Sale_Date] <= Ex4_Ext[max_Date]
Вывод должен быть следующим:
Я использую приведенный ниже код DAX и не даю правильный вывод, потому что он не выполняет левое соединение. Это делает декартово произведение.
Ex4_Ext =
var tbl = SELECTCOLUMNS(EX4,"min_date",EX4[Min_Date],"max_Date",EX4[Sale_Date])
var tbl2 = SELECTCOLUMNS(Dates,"sale_date1",date(year(Dates[Sale_Date]),MONTH(Dates[Sale_Date]),Day(Dates[Sale_Date])))
Return
generate(tbl,tbl2)
Я не могу установить связь между этими двумя таблицами. Ни Generate all, ни Naturalleftjoin не работают.
Любая помощь будет оценена.
Можем ли мы не решить это в DAX? Будут ли функции Generate all , Generate и Naturalleftjoin работать только с отношениями? Я нашел решение в видео: youtube.com/watch?v=U_7mFutB5OM. Но решение не работает правильно для меня, как советуется в этом видео
Да, хотя преобразования схемы чаще выполняются в Power Query, поэтому подобные решения найти проще. Но DAX — очень мощный язык, и вычисляемые таблицы в DAX не имеют никакого снижения производительности. Единственным недостатком решения этой проблемы в DAX является необходимость загрузки базовых таблиц.
После долгих проб и ошибок я нашел решение. Ниже запрос DAX может присоединиться без отношения:
Ex4_Ext =
var tbl = SELECTCOLUMNS(EX4,"min_date",EX4[Min_Date],"max_Date",EX4[Sale_Date])
var tbl2 = generate(tbl,DATESBETWEEN(Dates[Sale_Date],[min_date],[max_Date]))
Return
SELECTCOLUMNS(tbl2,"Min_Date",[min_date],"Max_Date",[max_Date],"Sale_Date",DATE(year([Sale_Date]),month([Sale_Date]),1))
Получил помощь от видео на YouTube: https://thewikihow.com/video_U_7mFutB5OM
Функция создания при использовании с функцией DATESBETWEEN действует как внутреннее соединение
Вот решение Power Query: stackoverflow.com/questions/74521206/…