Если все значения в списке отсутствуют, создайте строки с пропущенными значениями - PullRequest
0 голосов
/ 28 марта 2019

Для этого нужно немного информации.

У меня есть список идентификаторов пользователей.У меня также есть 20 модулей, с которыми пользователь может быть связан, каждый модуль имеет количество сеансов, которые можно сосчитать.

У меня в настоящее время есть таблица, подобная этой:

UserID  Module  Count  
A       1       3  
A       2       3  
B       1       2  
B       3       2  
C       1       3  
C       2       3  
C       3       3  

Что такоеЯ пытаюсь добиться следующего:

Для каждого идентификатора пользователя мне нужно проверить, есть ли одна строка на модуль, учитывая все 20 модулей.То, как таблица настроена прямо сейчас, когда у пользователя ничего нет в модуле, у меня нет строки для модуля, с которым он не связан.Если пропущена строка, она должна создать строку для отсутствующего модуля и установить для Count значение 0.

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

UserID  Module  Count  
A       1       3  
A       2       3  
A       3       0  
B       1       2  
B       2       0  
B       3       2  
C       1       3  
C       2       3  
C       3       3  

Как бы я это сделал?

Я получаю свою первую строку, группируя другую таблицу для каждого модуля, где count - это количество строк в другой таблице.Однако это не относится к отсутствующим модулям, и мне все равно нужно сообщить о них как 0.

1 Ответ

0 голосов
/ 28 марта 2019

Вы можете попробовать:

NewTable = 
VAR T1 = SUMMARIZECOLUMNS ( Table1[UserID] )
VAR T2 = SUMMARIZECOLUMNS ( Table1[Module] )
RETURN
    ADDCOLUMNS ( 
        CROSSJOIN ( T1, T2 ),
        "Count",
        LOOKUPVALUE ( 
            Table1[Count], 
            Table1[UserID], [UserID],
            Table1[Module], [Module]
        ) + 0
    )

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...