2016-07-18 6 views
0

Я борюсь с шаблоном DAX, чтобы позволить мне построить среднее значение продолжительности на графике.Создание шаблона DAX, который подсчитывает дни между полем даты и значением месяца на оси x диаграммы

В данной статье мы расскажем о следующих проблемах: в моем наборе данных есть поле dtOpened, которое представляет собой значение даты, описывающее, когда что-то началось, и я хочу, чтобы иметь возможность рассчитать продолжительность в дни с этой даты. Затем я хочу, чтобы у вас была возможность создать среднюю продолжительность с этой даты за определенный период времени. Это очень легко сделать, когда вы думаете о ценности, как сейчас, но я хочу, чтобы иметь возможность показать диаграмму, которая описывает, что это среднее значение было бы в течение различных периодов времени по оси x (месяц/квартал/год).

Проблема, с которой я столкнулся, заключается в том, что если я создаю расчетный столбец, чтобы найти текущий возраст (NOW() - [dtOpened]), тогда он всегда использует функцию NOW(), что бесполезно для исторических периодов времени. Может быть, мне нужна Мера для этого, а не расчетный столбец, но я не могу понять, как это сделать.

Я подумал об использовании LASTDATE (а не NOW), чтобы определить, какая последняя дата будет в контексте фильтра любого месяца/квартала/года, но если текущий месяц находится только на полпути, вероятно, необходимо будет рассмотреть сегодняшнюю дату как значение, из которого можно вычесть значение dtOpened.

Я буду благодарен за любую помощь или указатели, которые вы можете мне дать!

+0

Привет, Джефф. Думаю, вам нужно уточнить в своем вопросе, как бы вы хотели, чтобы эти средние значения разразились с течением времени. Принимая одно в изоляции ... если это было начато в феврале, но прошло через март, апрель и май, то в каком месяце вы хотели бы, чтобы средняя продолжительность этой вещи была представлена ​​в вашей диаграмме? – Rory

+0

Спасибо, Рори.Чтобы добавить немного больше деталей, этот набор данных включает случаи, которые имеют неизвестные длительности. Меня интересуют случаи, которые еще не были отмечены как закрытые. В приведенном выше примере, если бы был случай, который был открыт в феврале и закрыт в мае, я бы ожидал, что в мае показатель «Case Age» будет «null» (по мере закрытия дела). В феврале, марте и апреле я ожидал, что стоимость будет примерно на 30 дней больше, чем предыдущая. Фактическое значение должно быть значением Age Age, как это было на последней дате этого месяца. На графике ось y будет Case Age, а ось x будет месяцем. Джеф. – Geoff

ответ

0

Похоже, у вас есть таблица (назовем его Cases) хранения ваших дел с одной записью в случае с полями, как следующее: casename, dtOpened, OpenClosedFlag

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

Затем используйте итеративный средний x, чтобы усреднить разницу в датах.

Average Duration (days) := 
CALCULATE (
    AVERAGEX (Cases, MAX (DateTable[Month Ending]) - Cases[dtopened]), 
    FILTER (Cases, Cases[OpenClosedFlag] = "Open"), 
    FILTER (Cases, Cases[dtopened] <= MAX (DateTable[Month Ending])) 
) 

Как только вы создадите меру против своего месяца, вы должны увидеть средние значения, представленные правильно. Вы можете сделать что-то подобное для квартала & года.

0

Вы гений, Рори; Благодарю.

В моем примере, я имел dtClosed поле, а не открывать/закрывать флаг, поэтому был один дополнительный кусок фильтрации сделать, чтобы проверить, если дело было закрыто в , что момент времени. Так что моя мера в конечном итоге глядя, как это:

Average Duration:=CALCULATE(
     AVERAGEX(CasesOnly, MAX(DT[LastDateM]) - CasesOnly[Owner Opened dtOnly]), 
     FILTER(CasesOnly, OR(ISBLANK(CasesOnly[Owner Resolution dtOnly]), 
          CasesOnly[Owner Resolution dtOnly] > MAX(DT[LastDateM]))), 
     FILTER(CasesOnly, CasesOnly[Owner Opened dtOnly] <= MAX(DT[LastDateM])) 
    ) 

А чтобы получить диаграмму, я построена на DT[Date] поле на оси х. Еще раз спасибо.

+0

круто, рад помочь – Rory

 Смежные вопросы

  • Нет связанных вопросов^_^