power bi: агрегация разных показателей - PullRequest
0 голосов
/ 31 августа 2018

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

Team    City    Employees
A      Shanghai    3
A      Beijing     5
B      Helsinki    1
B      Beijing     0
C      Berlin      10
D      Shanghai    5
D      Berlin      6

В приведенном выше примере это число будет равно 2 (B и C), и мне удалось создать показатель, который подсчитывает, сколько связанных cities каждый team использует:

# of Cities = CALCULATE(DISTINCTCOUNT(Data[City]);FILTER('Data';Data'[Employee]>0))

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

Total Team w/ one city = IF( [# of Cities] = 1 ; 1 ; 0 ) 

но это невозможно для агрегирования.

Есть идеи, как это сделать? Я предпочел бы использовать его в качестве меры вместо нового вычисляемого столбца, чтобы я мог разделить результаты по другим столбцам в наборе данных.

Заранее спасибо!

1 Ответ

0 голосов
/ 31 августа 2018

Есть несколько способов сделать это; например:

Total Team w/ one city =
COUNTROWS ( FILTER ( VALUES ( Data[Team] ), [# of Cities] = 1 ) )

Как это работает: ЗНАЧЕНИЯ создает список отдельных команд. Затем список фильтруется для показателя числа городов = 1 на команду, и подсчитываются строки отфильтрованного списка.

Аналогично, вы можете использовать функцию SUMX:

Total Team w/ one city =
SUMX( VALUES(Data[Team]), IF([# of Cities] = 1, 1))

Другим распространенным подходом является использование функции SUMMARIZE:

Total Team w/ one city =
COUNTROWS (
    FILTER (
        SUMMARIZE ( Data, 
                    Data[Team], 
                    "City Count", [# of Cities] ),
        [City Count] = 1 ) 
       )

Здесь мы сначала группируем таблицу данных по командам и рассчитываем показатель количества городов каждой команды. Затем сгруппированная таблица фильтруется, оставляя только команды с числом городов = 1. Затем подсчитываются строки отфильтрованной таблицы. Преимущество этого подхода по сравнению с первым состоит в том, что SUMMARIZE позволяет группировать таблицу по нескольким столбцам, тогда как VALUES допускает только один. Тем не менее, первая формула быстрее (важно, если ваш набор данных большой).

Кстати, формулу # of Cities можно немного упростить:

# of Cities = CALCULATE(DISTINCTCOUNT(Data[City]), Data'[Employees]>0)
...