Establi sh a Habit Score, основанный на количестве месяцев с действием на уникального пользователя - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь установить sh показатель привычки, который указывает +1 для каждого календарного месяца с действием и -1 для каждого календарного месяца без действий пользователя. Сложность в том, что я хотел бы сделать это для каждого пользователя, начиная с указанной даты (разной для каждого пользователя). Если действие совершается дважды в одном и том же месяце, я хочу, чтобы оно считалось только как +1. Изображение ниже поможет проиллюстрировать логику c и желаемый результат.

Desired Output

Мне нужно, чтобы результат отображался в виде вычисляемого столбца в отдельном столбце. таблица с разными пользователями (эта таблица уже создана, мне просто нужно добавить оценку привычки).

1 Ответ

0 голосов
/ 15 января 2020

Возможно, это не самое гладкое решение, но, похоже, оно работает с предоставленными вами тестовыми данными.

Примечание: я предположил, что есть таблица измерений календаря, в моем случае это «Календарь».

Сначала добавьте вычисляемый столбец в таблицу «Деятельность»:

Year-Month = 
FORMAT([Activity_Date]; "YYYY-MM")

Затем добавьте требуемый вычисляемый столбец в таблицу «Пользователь»:

Habit = 

var minDate =
CALCULATE(
    MIN('Activity'[Activity_Date]);
    'Activity'[Indicator] <> BLANK()
)

var maxDate = 
CALCULATE(
    MAX('Activity'[Activity_Date])
)

var calendarActivity = DATEDIFF(minDate; maxDate; MONTH)

var sumAddOne = 
CALCULATE(
    DISTINCTCOUNT('Activity'[Year-Month]);
    'Calendar'[Date] >= minDate;
    'Calendar'[Date] <= maxDate
)-1

var sumSubtractOne = calendarActivity-sumAddOne

return
IF(
    minDate <> BLANK();
    sumAddOne-sumSubtractOne;
    BLANK()
)

Затем я получу таблицу «Пользователь», вот такую:

Habit Calculated column

...