При попытке создать организационную диаграмму с помощью настраиваемых визуальных элементов в Power BI Desktop необходимо показать диаграмму с отфильтрованными данными, которые применяются срезом в столбце отдела.
Я столкнулся с ограничением настраиваемого визуального элемента (что логично), чтобы получить правильную диаграмму в визуальном, в наборе данных должен быть корневой узел. В моем сценарии столбец ReportsTo
должен быть null
, чтобы идентифицировать его как корневой узел.
Удалось создать Reportsto
столбец null
в каждом отделе в представлении SQL с использованием логики ROW_NUMBER () OVER (PARTITION BY EmpDepartment Order by EmpGrade desc
и CASE
. Но это уже обработанные данные, я что-то ищу во время выбора фильтра, чтобы при выборе пользователем 2 отделов в пользовательском визуальном элементе слайсера не произошло сбоя.
Я пробовал следовать DAX на рабочем столе Power BI, чтобы получить RANK на основе Grade
с отфильтрованными данными. К сожалению, DAX работает как Измерение, а не как Расчетный столбец strong >, и с этой мерой я не могу получить ожидаемый результат при попытке вычислить столбец с использованием IF([RANK]=1,BLANK(), ('Table'[ReportsTo]))
Примечание. В Power BI Desktop добавлен столбец индекса - страница редактирования запросов
RANK =
MINX (
FILTER (
SELECTCOLUMNS (
ALLSELECTED ('Table'),
"index", 'Table'[Index],
"rank", RANKX ( ALLSELECTED ( 'Table' ), 'Table'[Grade],, DESC, DENSE )
),
[index] = MAX ( 'Table'[Index] )
),
[rank]
)
)
Вот пример данных, согласно следующей таблице, когда отдел отфильтрован с помощью ИТ (срез), EmpID
107 будет корневым узлом на основе столбца ReportsTo_2
. Но визуально не будет работать, если выбрано 2 отдела.
+-----------+------------+-------+---------------+---------+--------------+
| EmpID | ReportsTo | Grade | EmpDepartment | EmpName | ReportsTo_2
+-----------+------------+-------+---------------+---------+--------------+
| 101 | 107 | A1 | IT | Emp1 | 107
| 102 | 107 | A1 | IT | Emp2 | 107
| 103 | 107 | A1 | IT | Emp3 | 107
| 104 | 108 | A2 | Proc. | Emp1 | 108
| 105 | 108 | A2 | Proc. | Emp1 | 108
| 106 | 108 | A2 | Proc. | Emp1 | 108
| 107 | 109 | B1 | IT | Mgr1 |
| 108 | 109 | B1 | Proc. | Mgr2 |
| 109 | 110 | C2 | Management | Director|
| 110 | | D9 | Sr.Management | CEO |
+-----------+------------+-------+---------------+---------+--------------+
Ожидаемый результат: Моя идея состоит в том, чтобы получить значение null
в столбце ReportsTo_2
для наивысшего Grade
в отфильтрованных данных (фильтр по отделам).
Оценил ваш совет по достижению этого. Спасибо
Дополнительная информация для пояснений по запросу в комментариях
Использование следующих визуальных элементов:
Пользовательский визуал 1
Пользовательский Визуальный 2
Сценарии:
- При фильтрации с несколькими отделами (корневой узел недоступен), если я использую
ReportsTo_2
в качестве родительского, отображается ошибка "несколько корневых узлов": Ссылка на изображение - Если в отделах НЕ применяется фильтр: Ссылка на изображение
Те же сценарии с Custom Visual 2:
Дополнительное примечание 2:
Основная проблема, с которой я столкнулся: в качестве меры мы можем легко получить ожидаемый результат, а в качестве вычисляемого столбца то же выражение. не дает ожидаемого результата.
Ссылка на изображение