Я столкнулся с проблемой декартовых продуктов при объединении функции RANKX со столбцами из определенной таблицы в моей модели.
Я подключаюсь к локальному хранилищу данных с версией 2.53.4954.621 изPower BI Desktop.В моей модели четыре таблицы: Продажи, Регион, Цель продаж и Календарь.
Все таблицы объединены в Продажи, поэтому я предоставлю соответствующую структуру таблицы для этой сущности.
Sales:
rowid
date
rep_id
region_id
sales
discount
company number
RepRegionKey (merging of rep_id and region_id)
Вот отношения, определенные между моими таблицами
1. From Sales (date) to Calendar (Date), *:1, Single direction
2. From Sales (region_id) to Region (id), *:1, Both directions
3. From Sales (RepRegionKey) to Sales Goal (RepRegionKey), *:1, Both directions
У меня также есть несколько показателей, определенных в таблице Sales.Я не уверен, какой из них может быть важным, поэтому я перечислю их всех.
С начала продаж = CALCULATE(SUM('Sales'[sales]) - SUM('Sales'[discount]))
YE Цель продаж =
CALCULATE(SUM('Sales Goal'[sales_goal]))
$ Цели с начала года против продаж с начала года =
CALCULATE([YTD Sales] - [YE Sales Goal])
% Цели с начала года против продаж с начала года = DIVIDE([$ YTD Goal vs YTD Sales],[YE Sales Goal])
Diff Rank = RANKX(ALL('Sales Goal'[rep_id]),CALCULATE([% YTD Goal vs YTD Sales]),,,DENSE)
Декартово произведение возникает, когда я добавляю меру Diff Rank к визуализации таблицы, содержащей 'Region' [region_desc] (или любое из полей 'Region', кроме company_number, которое имеет только одно значение в таблице).
Обратите внимание на рисунок ниже, как поле region_desc может сожительствовать с таблицей (крайняя левая таблица на рисунке)мирно с мерой% YTD Goal vs YTD Sales, на которой построена функция RANX.Кроме того, в средней таблице вы видите, что функция RANKX работает правильно при отсутствии поля region_desc.Однако в последней таблице справа декартово произведение появляется при объединении полей RANKX и region_desc.
декартово произведение RANKX
Я бы предпочел увидеть точноеРейтинг для каждого представителя, например, так:
Желаемый результат
Мои отношения неверны, или мне, возможно, нужно скорректировать определение RANKX?
Вот определения, которые я пробовал, с различной степенью ошибки:
--- РАБОТАЕТ БЕЗ REGION_DESC
Diff Rank = RANKX(ALL('Sales Goal'[rep_id]),CALCULATE([% YTD Goal vs YTD Sales],ALLSELECTED('Region'[region_desc])),,,DENSE)
Diff Rank = RANKX(ALL('Sales Goal'[rep_id]),CALCULATE([% YTD Goal vs YTD Sales],ALL(Region[region_desc])),,,DENSE)
Diff Rank = RANKX(ALL('Sales Goal'[rep_id]),CALCULATE([% YTD Goal vs YTD Sales],FILTER(ALL(Region[region_desc]),[region_desc]<>"BUBBA")),,,DENSE)
Diff Rank = RANKX(ALL('Sales Goal'[rep_id]),CALCULATE([% YTD Goal vs YTD Sales],ALLEXCEPT('Region','Region'[region_desc])),,,DENSE)
--- НЕ РАБОТАЕТ БЕЗ REGION_DESC
Diff Rank = RANKX('Sales Goal',CALCULATE([% YTD Goal vs YTD Sales],ALLEXCEPT('Region','Region'[region_desc])),,,DENSE)
Diff Rank = RANKX('Sales Goal',CALCULATE([% YTD Goal vs YTD Sales],ALLSELECTED('Region'[region_desc])),,,DENSE)
Diff Rank = RANKX('Sales Goal',CALCULATE([% YTD Goal vs YTD Sales],ALL('Region'[region_desc])),,,DENSE)
Diff Rank = RANKX('Sales Goal',CALCULATE([% YTD Goal vs YTD Sales],FILTER(ALL(Region[region_desc]),[region_desc]<>"BUBBA")),,,DENSE)
Diff Rank = RANKX(DISTINCT('Sales Goal'[rep_id]),CALCULATE([% YTD Goal vs YTD Sales]),,,DENSE)
Diff Rank = RANKX(VALUES('Sales Goal'[rep_id]),CALCULATE([% YTD Goal vs YTD Sales]),,,DENSE)
Заранее спасибо!