Подсветка с помощью слайсера Power BI - PullRequest
1 голос
/ 27 января 2020

У меня есть приборная панель с различными визуальными эффектами. Данные состоят из различных значений для страховых компаний. Я хочу, чтобы мои слайсеры / фильтры не фильтровали все данные, а выделяли только выбранную компанию.

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

Кто-нибудь знает, как это сделать?

Ответы [ 2 ]

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

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

Сначала нам понадобится срез, который будет не отфильтруйте наши данные. Мы можем сделать это, продублировав нашу исходную таблицу, удалив ненужные столбцы и убедившись, что между источником и дубликатом нет никакой связи. Поэтому, если у нас есть исходная таблица с именем Table, например:

enter image description here

Щелкните правой кнопкой мыши по ней и выберите Duplicate:

enter image description here

Затем щелкните правой кнопкой мыши заголовок столбца, который вы хотите сохранить, и выберите Remove Other Columns, чтобы получить список только названий компаний (вы также можете удалить дубликаты). , но это не обязательно). Затем в модели удалите связь между обеими таблицами:

enter image description here

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

Теперь вам нужно зафиксировать значение слайсера и использовать его в показателе, который определит, будет ли выделена текущая строка или нет. Для этого вы можете использовать SELECTEDVALUE , но учтите, что это даст вам значение, только если в слайсере выбрано значение. Если вы хотите поддержать выделение более чем одной компании, это становится немного сложнее.

Создайте новую меру в исходной таблице, например:

Measure = IF(HASONEVALUE('Table (2)'[Company name]);
    IF(SELECTEDVALUE('Table (2)'[Company name]) = MAX('Table'[Company name]); 1; 0);
    IF(ISFILTERED('Table (2)'[Company name]) && COUNTROWS(FILTER('Table (2)'; 'Table (2)'[Company name] = MAX('Table'[Company name]))); 1; 0))

В случае, если есть в слайсере выбрано только одно значение (см. HASONEVALUE ), тогда наша мера вернет 1 (выделение) или 0 (не), сравнивая его с текущей строкой.

В противном случае ( т. е. в слайсере нет выбора, или выбрано 2 или более компаний), тогда мы рассмотрим отфильтрованный список компаний (Table (2)) - если он содержит текущую строку, то 1 (выделение), в противном случае 0 ( нет). Но мы также разберем случай, когда в слайсере не выбрано значение. В этом случае список будет содержать все компании, т.е. все строки будут выделены. Вот идет ISFILTERED . И, наконец, если список фильтруется и в фильтрованном списке существует текущая строка, то 1 (выделите), в противном случае 0 (не).

Теперь вам нужно использовать эту меру, чтобы изменить фон столбца - щелкните правой кнопкой мыши каждый столбец в таблице и выберите Conditional formatting -> Background color:

enter image description here

Затем отформатируйте по правилам, где Измерьте> = 1 следующим образом:

enter image description here

Теперь, когда в слайсере нет выделения, в таблице нет выделенных строк:

enter image description here

Если вы выбираете одну компанию, она выделяется:

enter image description here

Это также работает, если выбрано несколько компаний:

enter image description here

0 голосов
/ 04 февраля 2020

Спасибо, Андрей, за ваше пошаговое объяснение, которое было невероятно полезным. Я хотел бы ответить на еще один вопрос, особенно в отношении комментария ниже.

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

В моей модели я связал третью table (Table (3)) к Table (2) с отношением «многие к одному» с таблицей (2). Поэтому, когда я нажимаю на Таблицу (3), она фильтрует Таблицу (2), которая действует как слайсер для Таблицы (1).

Когда в таблице (2) отфильтровывается только 1 значение, он условно форматирует ячейки в таблице (1). Однако если в таблице (2) отфильтровано более одного значения, условное форматирование завершится неудачно.

Поскольку я стараюсь избегать ручного выбора нескольких значений в слайсере (таблица (2)), мне было интересно, есть ли обходной путь для SELECTEDVALUE, который позволяет условно форматировать, когда я фильтрую больше 1 значение в таблице (2).

...