MDX-запрос на процент текущей строки в таблице - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть куб SSAS с FactTicket, который имеет меру TicketsSold. Куб имеет большое количество измерений. Давайте назовем их Дата, Агент и Гео. Я могу создать таблицу (мы используем службу Power BI, если она имеет значение) и добавить в нее все и любые измерения, а также меру TicketsSold. То, что я хотел бы сделать, - это иметь другую меру, которая будет вычислять процент каждой строки в таблице от общей суммы таблицы в тот момент. поэтому предположим, что у меня есть следующие данные:

Date        Agent       Geo     TicketsSold
2020-04-01  Moulder     US      12
2020-04-01  Moulder     UK      4
2020-04-02  Moulder     US      10
2020-04-03  Moulder     UK      5
2020-04-01  Skully      US      16
2020-04-01  Skully      UK      12

Я хотел бы иметь возможность отфильтровать свой отчет по любой мере, отобразить любые другие меры с помощью TicketsSold и процентов. Например, отфильтрованный в 2020-04-01 и 2020-04-02:

Agent       Geo     TicketsSold     %ofTicketsSold
Moulder     US      22              40.74 %
Moulder     UK      4               7.40 %
Skully      US      16              29.63 %
Skully      UK      12              22.22 %
TOTAL               54              100 %

или отфильтрованный только по агенту Moulder:

Date        TicketsSold     %ofTicketsSold
2020-04-01  16              51.61 %
2020-04-02  10              32.26 %
2020-04-03  5               16.13 %
TOTAL       31              100 %

Мне ясно, что я нужен какой-то способ получения - для каждой строки в таблице - итоговой суммы самой таблицы, а затем деления собственных TicketsSold для этой строки на эту сумму. Но я не могу понять тривиальный способ создания такого расчета. Это выполнимо, без необходимости определять кортеж всех возможных измерений?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 27 апреля 2020

Вы можете достичь этого, используя функцию оси. Ниже приведен пример на основе Adventureworks, в котором мы создадим столбец PercentageOFTotalal на основе InternetSales

select 
{[Measures].[Internet Sales Amount]}
on columns,
non empty  {([Product].[Category].[Category],[Product].[Subcategory].[Subcategory])}
on rows 
from 
[Adventure Works]
where [Date].[Calendar Year].&[2013]

Результат enter image description here

Теперь давайте добавим наш новый столбец

with member measures.PercentageOFTotal
as round(([Measures].[Internet Sales Amount]/sum(Axis(1),[Measures].[Internet Sales Amount]))*100,2)
select 
{[Measures].[Internet Sales Amount],measures.PercentageOFTotal }
on columns,
non empty  {([Product].[Category].[Category],[Product].[Subcategory].[Subcategory])}
on rows 
from 
[Adventure Works]
where [Date].[Calendar Year].&[2013]

Результат

enter image description here

0 голосов
/ 08 мая 2020

Если вы уже используете PBI: почему бы вам не использовать DAX? Запрос DAX может решить вашу проблему: MEASURE Fact [Percent] = CALCULATE (SUM (Fact [Amount]), ALLSELECTED (Fact)). «ALLSELECTED» аналогично VISUALTOTALS () в MDX, но более динамично c.

...