Измерение относительности Power BI с несколькими группами - PullRequest
0 голосов
/ 28 мая 2019

У меня есть данные, которые я просто создаю:

Col1      Col2   Col3   Col4    
2014/1/1  A      Y      10  
2014/4/1  A      Y      15  
2015/1/1  A      Z      15   
2015/4/1  A      Z      30  
2014/1/1  B      Y      20  
2014/4/1  B      Y      30   
2015/1/1  B      Z      40   
2015/4/1  B      Z      80   

Я хочу создать measure в Power BI, чтобы я мог создать интерактивную визуализацию. Приведенные выше данные созданы, например, поэтому мы должны предположить, что col2, col3 имеют несколько факторов.

Мне нужно measure relativity, значение в Col4 делит первое значение на Col1 и Col2.

Результат, который я предполагал, но мне это не нужно в таблице данных, поскольку при создании визуализации и добавлении фильтра для других столбцов Col5, Col6 и т. Д., Которые я не показывал в этом примере:

Col1      Col2   Col3   Col4   relativity_Col3ALL   relativity_Col3EqualsYorZ
2014/1/1  A      Y      10     1                    1
2014/4/1  A      Y      15     1.5                  1.5
2015/1/1  A      Z      15     1.5                  1
2015/4/1  A      Z      30     3                    2
2014/1/1  B      Y      20     1                    1
2014/4/1  B      Y      30     1.5                  1.5
2015/1/1  B      Z      40     2                    1
2015/4/1  B      Z      80     4                    2

Так что я строю график и добавляю фильтры рядом с графиком. Когда я выбираю Y в фильтре Col3, график автоматически меняется.

Я предоставляю код, который я думаю, в R:

dt <- data.table::as.data.table(dt)
dt[, relativity := Col4 / Col4[1], by = .(Col1, Col2)]

Но приведенный выше код неверен, поскольку он не учитывает Col3. Я просто хочу упомянуть Col4 / Col4[1] или Col4 / first(Col4).

Я пытался измерить в Power BI:

relativity = CALCULATE(DIVIDE(dt[Col4], dt[AnotherMeasure]), MIN(dt[Col1]))

Я знаю, что это неверно.
Кто-нибудь может помочь?

UPDATE
Я попробовал код @Alexis Olson и изменил как:

relativity = 
VAR YR = MIN(dt[Col1].[Year])
VAR QT = MIN(dt[Col1].[Quarter])
VAR PF = CALCULATE(TOTALQTD(SUM(dt[Col4]), dt[Col1].[Date]), dt[Col1].[Year] = YR, dt[Col1].[Quarter] = QT) 
RETURN
    DIVIDE(SUM(dt[Col4]), PF)

Однако, когда я визуализирую в отчете, все это показывает 1.

Я тоже пробовал это:

relativity = 
VAR YR = CALCULATE(MIN(dt[Col1].[Year]), ALLEXCEPT(dt, dt[Col2]))
VAR QT = CALCULATE(MIN(dt[Col1].[Quarter]), ALLEXCEPT(dt, dt[Col2]))
VAR PFQTD = TOTALQTD(SUM(dt[Col4]), dt[Col1].[Date])
VAR MPFQTD = CALCULATE(MAX(PFQTD), FILTER(dt, dt[Col1].[Year] = YR), FILTER(dt, dt[Col1].[Quarter] = QT)) 
RETURN
    MPFQTD

Не удалось либо

1 Ответ

0 голосов
/ 28 мая 2019

Используя логику из этого Q & A , вы можете создать вычисляемый столбец следующим образом:

relativity =
VAR FirstCol1 = CALCULATE ( MIN ( dt[Col1] ), ALLEXCEPT ( dt, dt[Col2], dt[Col3] ) )
VAR FirstCol4 = CALCULATE ( VALUES ( dt[Col4] ), dt[Col1] = FirstCol1 )
RETURN
    DIVIDE ( dt[Col4], FirstCol4 )

Эта функция ищет первую дату, когда Col2 и Col3 являются одинаковыми значениями, затем находит значение Col4 в эту первую дату и, наконец, делит текущее значение Col4 на это первое Col4 значение. .

ALLEXCEPT удаляет контекст строки, за исключением указанных вами столбцов. Если вы хотите relativity_Col3_All, просто удалите этот столбец из спецификации ALLEXCEPT.

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