Функция RANKX, производящая декартово произведение в Power BI - PullRequest
0 голосов
/ 11 июня 2018

Я столкнулся с проблемой декартовых продуктов при объединении функции 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)

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...