#powerbi #dax #powerbi-desktop #powerbi-custom-visuals #daxstudio
Вопрос:
У меня есть две простые таблицы. Мне нужно определить, кто является «новым» на определенную дату (скажем, в январе), а затем подсчитать только эти атрибуты. Существует соотношение 1:M по имени. Мне в основном нужно ответить на следующие вопросы с приведенными ниже данными:
- Каково общее количество членов семьи на основе входа в систему за месяц? (Сделано с использованием пользовательских мер)
- Из общего числа #1 — сколько человек вошли в систему в первый раз?
- Из общего числа № 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 — детьми.
Ответ №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».