Пользовательский агрегатный столбец в степенной матрице - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь создать матрицу в отчете Power BI, в которой обобщены данные о производительности продавца, разбитые по разным направлениям.

Я знаю, как создать матрицу со строками - Продавец, Столбцы - Тип продукта,и значения - количество продаж, которое будет показывать количество продаж на одного продавца для каждого типа продукта, но я также хотел бы сделать следующее:

  1. Добавить дополнительный столбец, установленный для поворота (например, Год продаж), чтобы я мог видеть количество продаж, повернутых как по типу продукта, так и по году в одной и той же таблице бок о бок (то есть не вложенных).
  2. Добавление дополнительных сводных столбцов в мою матрицу, показывающих такие значения, как средняя сумма продажи по продавцу,% от общего числа продаж по продавцу.

Для ясности, я бы предположил, что в результате получится матрица, в которой заголовки столбцов будут гласить: продавец, продукт 1, продукт 2, ..., год 1, год 2, ..., Общее количество продаж, Средняя сумма продаж,% от общего количества продаж.См. Ссылку на изображение ниже (у меня еще нет очков репутации, чтобы включить фактическое изображение)

image of example matrix

Я понимаю, что могу сделать это, создавмеры, которые эффективно копируют то, как матрица разделяет значения и добавляет каждую меру в качестве значения (без столбцов), но я не хочу создавать новые меры и обновлять матрицу каждый год или каждый раз, когда мы добавляем новый продукт.Тип.

Я также просматривал пользовательские визуальные эффекты на рынке Power BI, но не видел ни одного, который бы достиг этого.

1 Ответ

0 голосов
/ 04 октября 2018

Это можно сделать, но не супер просто.Вам понадобится мера с SWITCH, а также таблица для ваших заголовков.

Вы можете создать таблицу заголовков по следующим строкам:

Header =
UNION(SUMMARIZE(Sales, Sales[Product], "Group", "By Product", "Index", 1),
    SUMMARIZE(Sales, Sales[Year], "Group", "By Year", "Index", 2),
    DATATABLE("Header", STRING, "Group", STRING, "Index", INTEGER,
           {{" Total", "Summarizations", 3},
            {"% of Total Sales", "Summarizations", 3},
            {"Avg Sale Size", "Summarizations", 3}}))

Что будет выглядеть следующим образом:

Header,            Group,          Index,
Product 1,         By Product,      1,
Product 2,         By Product,      1,
2016,              By Year,         2,
2017,              By Year,         2,
2018,              By Year,         2,
 Total,            Summarizations,  3,
% of Total Sales,  Summarizations,  3,
Avg Sale Size,     Summarizations,  3

Эта таблица будет автоматически расширяться при добавлении большего количества продуктов или годов.
(Примечание. Столбец Index предназначен для правильного упорядочения их с помощью функции Сортировка по столбцу.)

После того, как вы это сделаете, вам просто нужно поместить Group и Header в столбцы.визуального отображения матрицы и Salesperson в строках с переключающей мерой в значениях.

Measure = 
    VAR Val =
    SWITCH(SELECTEDVALUE(Header[Group]),
        "By Product",
        CALCULATE(SUM(Sales[Amount]),
            FILTER(Sales, Sales[Product] = MAX(Header[Header]))),
        "By Year",
        CALCULATE(SUM(Sales[Amount]),
            FILTER(Sales, Sales[Year] = VALUE(MAX(Header[Header])))),
        SWITCH(SELECTEDVALUE(Header[Header]),
            "% of Total Sales",
            DIVIDE(SUM(Sales[Amount]),
                CALCULATE(SUM(Sales[Amount]), ALL(Sales))),
            "Avg Sale Size", AVERAGE(Sales[Amount]),
            SUM(Sales[Amount]))
    )
    RETURN
    IF(SELECTEDVALUE(Header[Header]) = "% of Total Sales",
        FORMAT(Val, "0.0%"),
        FORMAT(Val, "0.0"))

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

(Примечание: если у вас есть срезы или фильтрация, вы, вероятно, захотите использовать ALLSELECTED там, где я использовал ALL выше.)


Воткак выглядит моя таблица (не точно такие же данные, но похожая структура)

Grouped Table

и вот файл PBIX, который я создал для этого:

https://drive.google.com/file/d/1qxc5p53MgmOm-NH3EcivkZLhLeEHpr4R/

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