PowerBI — Подсчет атрибутов записи на основе даты

#powerbi #dax #powerbi-desktop #powerbi-custom-visuals #daxstudio

Вопрос:

У меня есть две простые таблицы. Мне нужно определить, кто является «новым» на определенную дату (скажем, в январе), а затем подсчитать только эти атрибуты. Существует соотношение 1:M по имени. Мне в основном нужно ответить на следующие вопросы с приведенными ниже данными:

  1. Каково общее количество членов семьи на основе входа в систему за месяц? (Сделано с использованием пользовательских мер)
  2. Из общего числа #1 — сколько человек вошли в систему в первый раз?
  3. Из общего числа № 2 — сколько было детей? Сколько было взрослых?

Таблица Входа в Систему

ID Имя Дата
логин1 Сэм Янв.
логин2 Сэм Янв.
логин3 Дейв Янв.
логин4 Дейв Янв.
логин5 Джек Янв.
логин6 Сэм Янв.
логин7 Джеймс Февраль
логин8 Джеймс Февраль
логин9 Джеймс Февраль
логин10 Сэм Февраль
логин11 Сэм Февраль
логин12 Стив Февраль

Таблица Контактов

Имя Члены семьи Ребенок Взрослый
Сэм 3 1 2
Джеймс 2 1 1
Дейв 4 2 2
Джек 1 0 1
Стив 6 1 5

Используя эти данные, отфильтрованные в феврале, мы увидим, что Стив никогда не входил в систему до этой даты, так что это делает его «новым». Джеймс тоже новичок.

Моя ближайшая попытка-это пользовательская мера «Количество новых людей».

 
VAR currentUsers = VALUES('Log-Ins'[Name])
VAR currentDate = MIN('Log-Ins'[Date])

VAR pastUsers = CALCULATETABLE(VALUES('Log-Ins'[Name]), 
    ALL('Log-Ins'[Date].[Month],'Log-Ins'[Date].[MonthNo],'Log-Ins'[Date].[Year])
    , 'Log-Ins'[Date]<currentDate)

VAR newUsers = EXCEPT(currentUsers,pastUsers)

RETURN COUNTROWS(newUsers)
 

Как вы можете видеть, это дает мне количество новых людей, но я хочу подсчитать их атрибуты, чтобы сказать :: Из 11 общих членов семьи 8 были новыми. Из этих 8 человек 6 были взрослыми и 2 — детьми.

pbiImage

Ответ №1:

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

введите описание изображения здесь

 #ContactsWhoLoggedIN := 
CALCULATE(COUNTROWS(Contacts),FILTER(Contacts,CALCULATE(COUNTROWS(LogIN)>0)))

#NewCWhoLoggedIN := 
CALCULATE(COUNTROWS(Contacts),
FILTER(Contacts,
//LoggedIn in the Current Date Context
CALCULATE(COUNTROWS(LogIN))>0
amp;amp;
//Never LoogedIN before the Current Date Context
CALCULATE(COUNTROWS(LogIN),FILTER(ALL(Dates),Dates[Date]<MIN(Dates[Date])))=0
)
)

#CWhoLoggedBackIN := [#ContactsWhoLoggedIN]-[#NewCWhoLoggedIN]

#FM_NewCWLI := 
CALCULATE(SUM(Contacts[FamilyMembers]),
FILTER(Contacts,
//LoggedIn in the Current Date Context
CALCULATE(COUNTROWS(LogIN))>0
amp;amp;
//Never LoogedIN before the Current Date Context
CALCULATE(COUNTROWS(LogIN),FILTER(ALL(Dates),Dates[Date]<MIN(Dates[Date])))=0
)
)
 

Я помню этот шаблон из «Microsoft Excel 2013: Построение моделей данных с помощью PowerPivot».