Power BI: анализ сценария, когда селектор ищет значение выбора из среза и получает значения из этой строки

Я изучил несколько руководств по анализу сценариев и анализу «что, если» в Power BI. эти примеры мне достаточно понятны, и я в некоторой степени понимаю, как они работают. Например, это ( https://community.powerbi.com/t5/Community-Blog/Scenario-Analysis-What-Ifs-Tips-amp-Techniques-For-Power-BI/ba-p/559653 < / а>).

В этом примере они создают таблицу, содержащую значения для разных сценариев.

5% 10% 15% 20%

и т. д., и пользователь отчета может их выбрать. Но что, если вместо прямых значений у меня есть категориальные значения, такие как «Низкий, средний, высокий, очень высокий», например:

category - trend rise
low         5%
medium      10%
high        15%
very high   20%

На другом моем столе у ​​меня есть:

Value - Item - trend_default
10       A      0.3
15       A      0.2
20       B      0.4
25       B      0.15
35       C      0.10
30       C      0.05

Теперь с помощью слайсера я хочу сначала выбрать ни одного, одного или всех элементов, после чего я хочу выбрать, какой рост тренда я хочу применить к выбранным элементам (низкий, средний, высокий или очень высокий). Если я выберу только элемент A, тогда элементы B и C будут использовать в расчетах свое значение trend_default.


person Anton    schedule 21.03.2019    source источник


Ответы (1)


ОРИГИНАЛЬНЫЙ ОТВЕТ

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

Затем создайте меру на основе выбранного значения этой таблицы. Что-то типа:

Value + Trend Rise = 
    VAR Multiplier = 
        1 + IF ( 
            HASONEVALUE ( 'Scenario - Trend'[Category] ),
            VALUES ( 'Scenario - Trend'[Trend Rise] ),
            0
        )
    RETURN
        SUM ( 'Demo Fact Table'[Value] ) * Multiplier

См. https://pwrbi.com/so_55281950/ для рабочего примера файла PBIX.

ОБНОВЛЕНИЕ НА ОСНОВЕ РЕДАКТИРОВАНИЯ ВОПРОСА:

Сначала создайте отключенную таблицу измерений, чтобы выбрать (срезать) ваши элементы:

Item Chooser = 
    SUMMARIZECOLUMNS ( 
        'Demo Fact Table'[Item]
    )

Теперь вы можете использовать меру:

Value + Trend = 
    SUMX ( 
        'Demo Fact Table',
        'Demo Fact Table'[Value] * 
            ( 1 +
                IF ( 
                    ISFILTERED ( 'Item Chooser'[Item] ) &&
                    CONTAINS ( 
                        'Item Chooser',
                        'Item Chooser'[Item],
                        'Demo Fact Table'[Item]
                    ) && 
                    HASONEVALUE ( 'Scenario - Trend'[Category] ),
                    VALUES ( 'Scenario - Trend'[Trend Rise] ),
                    'Demo Fact Table'[trend_default]
                )
            )
        )

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

Обновленный пример файла: https://pwrbi.com/so_55281950-2/

person Olly    schedule 21.03.2019
comment
Спасибо за ответ. Я мог бы слишком упростить свою проблему, поскольку, несмотря на ответ на мой вопрос, я все еще не уверен на 100%, как двигаться дальше. Так что, если вместо одного фиксированного роста тренда я выберу, к каким столбцам я хочу применить рост тренда. Итак, в вашем примере, что, если у меня сначала есть срез, где я выбираю из [Item] A, B или C. и на основе них я могу выбрать ни одного, одного или всех. а затем примените выбранный рост тренда к выбранным элементам, а к другим элементам примените их рост тренда по умолчанию, который также является столбцом в таблице демонстрационных фактов (в вашем случае). Я обновил: file.io/5YDn72 - person Anton; 22.03.2019
comment
В любом случае, это имитация вашего файла с добавленным столбцом default_Trend. - person Anton; 22.03.2019
comment
Кажется, файл доступен только ограниченное время. Я добавил третий столбец в демонстрационную таблицу фактов с готовыми default_trends и срез в отчете, который позволяет пользователю выбирать, к каким элементам применить trend_rise. - person Anton; 22.03.2019
comment
Разве ваша тенденция по умолчанию не будет установлена ​​для каждого элемента? - person Olly; 22.03.2019
comment
Хм, да, ты прав. У одного элемента будет одна тенденция по умолчанию. - person Anton; 22.03.2019
comment
Спасибо, предлагаемое решение выглядит очень хорошо. В моем случае у меня есть иерархия категорий, из которых можно выбрать значение тренда (элемент). Таким образом, у меня могут быть положительные тенденции, отрицательные тенденции, нейтральные тенденции, в рамках которых у меня будут разные годы, в которых у меня есть категории, как видно в моем вопросе. Я уточнил вопрос немного подробнее, как думаешь, можно было бы взглянуть? Думаю, я близок к решению, но кое-что упустил. - person Anton; 22.03.2019
comment
Как я понимаю, код состоит в том, что предложение CONTAINS проверяет строки со значениями столбцов, которые затем возвращаются в случае, если все другие переменные также истинны. Что мне нужно сделать, так это найти trend_value в одной таблице, где cat1 + cat2 + cat3 равно моему выбору среза, который является уникальным идентификатором, и использовать это trend_value вместо значения тренда по умолчанию. В таблице значений default_trend cat2 + cat3 - это уникальный идентификатор, поскольку он агрегирован на уровне cat2. - person Anton; 22.03.2019
comment
Я создал новый вопрос по обновленному вопросу, пожалуйста, посмотрите: stackoverflow.com/questions/55332313/ - person Anton; 25.03.2019