Страницы: 1
RSS
подсчет количества клиентов по условию, power bi
 
добрый день
в таблице Ученики есть столбцы Дата первого списания и Дата прекращения занятий (не у всех клиентов).
Нужно посчитать количество активных клиентов на последний день каждого месяца(тех, у которых было первое списание, но которые еще не прекратили заниматься)
помогите пожалуйста  
 
Добрый. Попробуйте меру

Код
=COUNTROWS(SUMMARIZE(FILTER('Ученики';'Ученики'[Дата прекращения занятий]=BLANK());'Ученики'[Месяц начала занятий];'Ученики'[Год начала занятий];'Ученики'[№ клиента]))
 
Доброе время суток.
mechanix 85, ваша мера исходит из того что, оплата поступает ежемесячно без разрывов. Но, например, у ученика 871514 нет платежа в октябре 2020. Возможно у родителей не было средств - в ноябре и декабре платят большие суммы, доплачивают за октябрь. Опять же, дети могу болеть, и из-за  этого может быть разрыв в платежах. Это вполне житейские ситуации :)
Опять же, 992361 дата прекращения платежей стоит декабрь 2020 года. Означает ли это, что в ноябре 2020 это не активный клиент?
Изменено: Андрей VG - 24.02.2021 11:33:34
 
Андрей VG, я понял именно так задачу
 
да, Андрей VG, вы правы
у клиентов может быть оплата не в каждом месяце по разным причинам
единственное условие, чтобы не считать его клиентом, это наличие даты прекращения занятий в соответствующем столбце
если там пусто - значит это все еще активный клиент
 
Цитата
mechanix 85 написал:
я понял именно так задачу
Ну, вы же прекрасно знаете, что ТСы в большинстве случаев не могут сформулировать определения - считают, что это задача отвечающего :)
Цитата
Евгений написал:
у клиентов может быть оплата не в каждом месяце по разным причинам
Евгений, пожалуйста, объясните, почему вы об этом не написали при постановке задачи?
Изменено: Андрей VG - 24.02.2021 11:52:13
 
не подумал что это важная информация, извиняюсь
я сейчас еще раз посмотрел на таблицу, раз уж я изначально не все условия написал, хотел бы еще одно уточнить -
считать клиентами нужно только если Статус ученика = "клиент". еще есть "нерегулярный клиент", их считать не нужно
Изменено: Евгений - 24.02.2021 12:03:36
 
Цитата
Евгений написал:
считать клиентами нужно только если Статус ученика = "клиент"
Я в вас верю, вы сможете самостоятельно добавить условие в фильтр. Вариант.
Код
active Count = Var maxDate = MAX('Calendar'[Date])
Var allClients = CALCULATETABLE('Ученики', ALLSELECTED('Финансы'[Date 1]))
Var neededClients = FILTER(allClients, 'Ученики'[Дата первого платежа] <= maxDate && ISBLANK('Ученики'[Дата прекращения занятий]))
Return COUNTROWS(GROUPBY(neededClients, 'Ученики'[№ клиента]))
 
Андрей VG, спасибо, все работает почти правильно
Единственное, клиенты, которые перестали ходить, они не считаются вообще ни в одном месяце (хотя пару месяцев например занимались и это время были активными)
пример, клиент 894670. дата первого списания - 10/09/2020. дата прекращения занятий - 11/10/2020. должен быть посчитан активным за сентябрь
клиент 979024. дата первого списания - 22/10/2020. дата прекращения занятий - 15/12/2020. должен быть посчитан активным за октябрь и ноябрь
 
Цитата
Евгений написал:
клиенты, которые перестали ходить, они не считаются вообще ни в одном месяце
Вполне естественно, так как
Цитата
Евгений написал:
единственное условие, чтобы не считать его клиентом, это наличие даты прекращения занятий в соответствующем столбце
Потратьте минут 15 и напишите непротиворечивое определение того, что вы хотите посчитать относительно вашей модели данных - это не требует каких-либо знаний DAX.
 
Хорошо, давайте попробую еще раз.
Хотим посчитать количество активных клиентов на определенную дату Х.
кого считать активным клиентом?
если в столбце "дата прекращения занятий" у клиента пусто, то дата Х должна быть больше или равна дате первого списания.
если в столбце "дата прекращения занятий" у клиента не пусто, то дата Х должна быть больше или равна дате первого списания и при этом меньше или равна дате прекращения занятий.
на это накладывается общее условие что если статус ученика = нерегулярный клиент, то он не считается активным.
 
Цитата
Евгений написал:
еще раз
Это скорее алгоритмическое определение :) . Ровно как описано с некоторыми тождественными преобразованиями выражений
Код
active Count = Var maxDate = MAX('Calendar'[Date])
Var allClients = CALCULATETABLE('Ученики', ALLSELECTED('Финансы'[Date 1]))
Var neededClients = FILTER(allClients,
    'Ученики'[Дата первого платежа] <= maxDate 
    && (ISBLANK('Ученики'[Дата прекращения занятий]) || maxDate <= 'Ученики'[Дата прекращения занятий])
    && NOT('Ученики'[Статус ученика] = "Нерегулярный клиент")
)
Return COUNTROWS(GROUPBY(neededClients, 'Ученики'[№ клиента]))
 
Андрей, спасибо большое, все работает!
подскажите пожалуйста еще, как избавиться от этого хвоста на графике? чтобы он заканчивался месяцем, для которого загружены текущие данные (на сегодняшний день январем 2021)?
 
 
Цитата
Евгений написал:
чтобы он заканчивался месяцем, для которого загружены текущие данные
А какое это имеет отношение к
Цитата
подсчет количества клиентов по условию
Цитата
2.6. Один вопрос - одна тема. Не следует в открываемой теме обозначать и задавать сразу несколько вопросов.
 
я рассуждал так, что вопрос по графическому отображению того же самого количества учеников, которое мы считали выше.
если это нарушение правил, то я создам новую тему конечно, не вопрос
Страницы: 1
Наверх