Динамический GROUPBY в DAX, PowerBI - PullRequest
1 голос
/ 23 октября 2019

Я новичок в языках PowerBI и DAX.

Учитывая следующую таблицу All interactions (которая представляет собой совокупность действий пользователя с системой): enter image description here

Я хотел бы создать следующую визуализацию: (На оси X указано общее количество взаимодействий, на проценте по оси Y пользователей в системе с таким числомвзаимодействия)

Это может быть сделано путем создания динамической таблицы, такой как:

TableFoo =
GROUPBY (
    'All interactions',
    'All interactions'[user_name],
    "total_interactions", COUNTX ( CURRENTGROUP (), 'All interactions'[user_name] )
)

, которую можно визуализировать, как ожидается: enter image description here

Проблема с этим Я не могу фильтровать данные динамически . Например, при попытке сузить результаты, выбрав определенные type или user_details.gender, все сгруппированные данные остаются статическими.

Как я могу подойти к этому?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 23 октября 2019

Ключом к тому, чтобы сделать вещи динамичными, является использование показателей вместо вычисляемых столбцов или вычисляемых таблиц (если только они не рассчитаны в рамках вашей меры).


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

X-axis = GENERATESERIES ( 1, COUNTROWS ( 'All Interactions' ) )

(это больше, чем нужно, но должно работать для этой цели.)

Поместите 'X-axis'[Value] на ось вашего графика, а затем определите меру дляиспользуйте для поля Значение.

Contact Distribution = 
VAR Interactions = SELECTEDVALUE ( 'X-axis'[Value] )
VAR Summary =
    GROUPBY (
        'All interactions',
        'All interactions'[user_name],
        "total_interactions", COUNTX ( CURRENTGROUP (), 'All interactions'[user_name] )
    )
RETURN
    COUNTROWS ( FILTER ( Summary, [total_interactions] = Interactions ) )

Это считывает значение по оси X и затем подсчитывает количество пользователей, которые имеют столько взаимодействий в вашей сводной таблице GROUPBY.

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

0 голосов
/ 23 октября 2019

Вы должны указать в функции Все, что вы хотите удалить фильтр только в столбце Имя пользователя. Вам не нужно использовать функцию groupby. Вы можете попробовать эту формулу: (функция форматирования, чтобы увидеть десятичное число)

   format(
     Divide(
        countx(Sheet3,Sheet3[username]),
        Calculate(COUNTROWS(Sheet3),ALL(Sheet3[username])
        )
       ,0)
      , "PERCENT" )
...