Расчет новых столбцов в PowerBI - PullRequest
0 голосов
/ 13 мая 2019

У меня есть эта таблица, которую я определил в PowerBI:

enter image description here

Я хотел бы определить новую таблицу с процентоммедалей, выигранных США от общего количества медалей, врученных в этом году за каждый вид спорта.

Пример:

Годовой процент спорта

1986 Водный спорт 0,0%

Как я мог это сделать?

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Я знаю, что ответ уже принят, но я чувствую, что должен предоставить свое предлагаемое решение для использования всех возможностей Power BI.

Создавая вычисляемую таблицу, вы ограничены в том, что вы можете делать с данными, так как они жестко закодированы для фильтрации в США и основаны только на Годах и Спорте. Пока это текущие требования, а что если они изменятся? Затем вы должны перекодировать свою таблицу или создать другую.

Я предлагаю использовать меры для выполнения этой задачи, и вот как ...

Во-первых, вот мой набор образцов данных.

Sample Data

С этими данными я создал простую меру, которая подсчитывает строки, чтобы получить количество медалей.

Medal Count = COUNTROWS(Olympics)

Составив базовую матрицу с помощью этой меры, мы можем увидеть данные, подобные этим.

basic matrix

Затем можно создать второй показатель, чтобы получить проценты для конкретной страны.

Country Medal Percentage = DIVIDE([Medal Count], CALCULATE([Medal Count], ALL(Olympics[Country])), BLANK())

Добавляя эту меру к матрице, мы можем начать видеть наши проценты.

expanded matrix

Из этой матрицы видно, что США выиграли 25% всех медалей в 2000 году. А их 2 медали в Спорте B составили 33,33% всех медалей в этом году.

При этом вы можете использовать слайсеры и макет матрицы, чтобы получить желаемый процент. Вот небольшой пример со срезом по стране и году, который показывает те же цифры.

slicer matrix

Отсюда вы можете сократить данные по любому виду спорта или году и увидеть процентную долю по любой выбранной стране (или странам).

1 голос
/ 14 мая 2019

Вы можете использовать SUMMARIZE() для расчета новой таблицы:

NewTable = 
SUMMARIZE(
    yourDataTable;
    [Year];
    [Sports];
    "Pct"; 
    DIVIDE(
        CALCULATE(
            COUNTROWS(yourDataTable);
            yourDataTable[Nat] = "USA"
        );
        CALCULATE(
            COUNTROWS(yourDataTable);
            ALLEXCEPT(
                yourDataTable;
                yourDataTable[Year];
                yourDataTable[Sports]
            )
        );
    0
)
...