У меня есть таблица ниже в Power Bi.
Мне нужна визуальная сводная таблица, как показано ниже.
Например, если общее количество уникальных идентификаторов от A до A равно 3, а от A до B — это одна часть, которая распределяется между общими частями b, что составляет 1/2, не что иное, как 50 %.
Раньше это происходило на основе выбора пользователя в срезе, который является датой.
Как это сделать в DAX?
в основном нам нужно отображать процент, логику, количество отдельных общих IDS/всего различных IDS. В этом случае общее количество отдельных общих IDS равно 1 по сравнению с A (идентификатор 1 присутствует как в A, так и в B) и общего количества различных IDS для B равен 2, следовательно, 1/2, что составляет 50%. Пожалуйста, дайте мне знать, если это кого-то сбивает с толку.
id 2 также присутствует в A и B. Почему мы это не учитываем?
Извините, я отредактировал от 2 до 3 рассматриваемых вопросов. Извините за путаницу.
ты можешь попробовать это
создать новую таблицу
Таблица 2= ВАР _tbla = DISTINCT ('Таблица'[имя])
ВАР _tblb = SELECTCOLUMNS ( DISTINCT ( 'Таблица'[имя]), "имя1", 'Таблица'[имя])
ВОЗВРАЩАТЬСЯ ПЕРЕКРЕСТНОЕ СОЕДИНЕНИЕ ( _tbla, _tblb )
создать столбец
Столбец= ВАР _list = ОТЧЕТЛИВЫЙ ( ВЫБРАТЬ КОЛОННЫ ( ФИЛЬТР ( 'Таблица', 'Таблица'[имя] = 'Таблица 2'[имя] ), "id", 'Таблица'[id] ) )
ВАР _list2 = ОТЧЕТЛИВЫЙ ( ВЫБРАТЬ КОЛОННЫ ( ФИЛЬТР ( 'Таблица', 'Таблица'[имя] = 'Таблица 2'[имя1]), "id", 'Таблица'[id] ) )
ВАР _count = СЧЕТЧИКИ ( ПЕРЕСЕЧЕНИЕ ( _list, _list2 ) )
ВОЗВРАЩАТЬСЯ ЕСЛИ ( 'Таблица 2'[имя] = 'Таблица 2'[имя1], РАССЧИТАТЬ ( DISTINCTCOUNT ( 'Таблица'[id]), ФИЛЬТР ( 'Таблица', 'Таблица'[имя] = 'Таблица 2'[имя] ) ), _считать / РАССЧИТАТЬ ( DISTINCTCOUNT ( 'Таблица'[id]), ФИЛЬТР ( 'Таблица', 'Таблица'[имя] = 'Таблица 2'[имя] ) ) )
тогда вы можете создать матрицу
Большое спасибо, это работает отлично, когда я передаю значение среза во вновь созданный столбец, оно не работает. Все еще пытаюсь сделать DAX динамичным. Прошу вас помочь мне в этом, пожалуйста.
мое значение среза — столбец даты
Я изменил код, как удар: Таблица 2 = VAR _tbla = DISTINCT ('Table'[имя]) VAR _tbld = DISTINCT ('Table'[дата]) VAR _tblb = SELECTCOLUMNS (DISTINCT ('Table'[имя]), "name1", 'Table'[имя] ) RETURN CROSSJOIN ( _tbla, _tblb ,_tbld )
Column = VAR _list = DISTINCT ( SELECTCOLUMNS ( FILTER ( 'Table', 'Table'[Derivate] = 'Table 2'[Derivate] && 'Table'[date] = 'Table 2'[date]), "id", 'Таблица'[PartNumber] ) ) VAR _list2 = DISTINCT ( SELECTCOLUMNS ( FILTER ( 'Таблица', 'Таблица'[Производный] = 'Таблица 2'[Производный1] && 'Таблица'[дата] = 'Таблица 2'[дата] ), "id", 'Table'[PartNumber] ) ) VAR _count = COUNTROWS ( INTERSECT ( _list, _list2 ))
продолжение, RETURN IF ( 'Таблица 2'[Производный] = 'Таблица 2'[Производный1], РАСЧЕТ ( DISTINCTCOUNT ( 'Таблица'[Номер детали] ), ФИЛЬТР ( 'Таблица', 'Таблица'[Производный] = 'Таблица 2' [Произвести] && 'Таблица'[дата] = 'Таблица 2'[дата]) ), _count / CALCULATE ( DISTINCTCOUNT ( 'Таблица'[Номер детали] ), ФИЛЬТР ( 'Таблица', 'Таблица'[Произвести] = 'Таблица 2'[Производное] && 'Таблица'[дата] = 'Таблица 2'[дата] ) ) )
Сейчас работаю! Большое спасибо.
Какова формула/логика A:B? Как вы получили результат 1/2(50%)?