Вычисления мощности с двумя датами для нестандартного месяца

#date #dax #powerbi-desktop

#Дата #dax #powerbi-рабочий стол

Вопрос:

Версия Power BI для настольных
компьютеров: 2.73.5586.984 64-разрядная (сентябрь 2019)

Я создаю вычисляемый столбец, чтобы определить, был ли запрос завершен в состоянии «Текущий» или «Невыполненный». Наш месяц отчетного периода начинается с 26-го числа месяца по 25-е число. Если заявка была заполнена в отчетный период m / 26 — m / 25, она будет считаться «Текущей». Если заявка была завершена за пределами этого периода времени, тогда это будет «Отставание». Кроме того, если текущий запрос не был завершен, но все еще может быть завершен в том же отчетном периоде, тогда он будет указан как «Текущий», но если он перейдет к следующему отчетному месяцу, тогда это будет «Невыполненная работа».

Пример:
создано 1/1/2021 и завершено 1/10/2021 = Текущее
созданное 1/1/2021 и завершено 3/18/2021 =
Создано 1/25/2021 и завершено 1/26/2021 =
Создано 4/20/2021 и не завершено amp; Сегодня [4/30/2021] =
Создано 29/2021 и не завершено amp; Сегодня [4/30/2021] = Текущее

Я написал следующий DAX, чтобы справиться с этим, но, похоже, я сталкиваюсь с проблемами после окончания / в начале отчетного периода, когда вычисления не работают должным образом, и все перечисляется как текущее или невыполненное.

У меня также есть вспомогательный столбец в моей таблице дат, который определяет, какой текущий отчетный период основан на текущем дне, но я не использую его в этой формуле, но могу, если это сделает его более эффективным.

Какой лучший / правильный способ сделать это?

Столбец с вычислением текущих /невыполненных заданий:

 Current_Backlog = 

VAR CreatedDay = Day(IR_SR[Created_Date])
VAR CompletedDay = Day(IR_SR[Completed_Date])
VAR CreatedMonth = Month(IR_SR[Created_Date])
VAR CompletedMonth = Month(IR_SR[Completed_Date])
VAR CreatedMonthAdd = Month(IR_SR[Created_Date]) 1
VAR CompletedMonthAdd = Month(IR_SR[Completed_Date]) 1
VAR CurrentMonth = Month(TODAY())
VAR CurrentMonthAdd = Month(TODAY()) 1
VAR CurrentDay = Day(TODAY())

RETURN
//If the date the ticket was completed is before the 26th and the created and completed month match, mark as current
IF(CompletedDay < 26 amp;amp; CreatedMonth = CompletedMonth, "Current",
    //If the completed date is after or equal to the 26th see if the created month plus one and completed month plus one match, mark as current
    IF(CreatedDay >= 26 amp;amp; CompletedDay >= 26 amp;amp; CreatedMonthAdd = CompletedMonthAdd, "Current",
        //If the completed date is after or equal to the 26th and the created date is after or equal to the 26th see if the created and completed month plus one match, mark as current
        IF(CreatedDay >= 26 amp;amp; CreatedMonthAdd = CompletedMonth, "Current",
            //If the ticket is not completed and the created date is less then the 26th and the created month and current month match, mark as current
            IF(IR_SR[Open/Closed] = "Open" amp;amp; CurrentDay < 26 amp;amp; CreatedDay < 26 amp;amp; CreatedMonth = CurrentMonth, "Current",
                //If the ticket is not completed and the created date is greater then the 26th and the created month and current month match plus one, mark as current
                IF(IR_SR[Open/Closed] = "Open" amp;amp; CurrentDay >= 26 amp;amp; CurrentDay < 1 amp;amp; CreatedDay >= 26 amp;amp; CreatedMonthAdd = CurrentMonthAdd, "Current",
                    IF(IR_SR[Open/Closed] = "Open" amp;amp; CurrentDay < 26 amp;amp; CurrentDay >= 1 amp;amp; CreatedDay >= 26 amp;amp; CreatedMonthAdd = CurrentMonth, "Current",
                    "Backlog"))))))
 

Текущий отчетный месяц:

 = Table.AddColumn(#"Inserted Day Name", "Reporting_Period", each if Date.Day([Date]) >= 26
then Date.StartOfMonth(Date.AddMonths([Date], 1))
else Date.StartOfMonth([Date]))
 

Ответ №1:

совет в этом случае. Сравните обе формулы DAX в анализаторе производительности внутри Power BI и проверьте, сколько времени ушло на вычисления. Я предполагаю, что все ваши данные импортируются, в этом случае данные кэшируются, поэтому первая проблема с производительностью решена. В любом случае, вставьте вторую часть вашего кода DAX, и я проверю это. Спасибо

Комментарии:

1. Спасибо за ответ. Я ценю советы по производительности, но я больше ищу лучшее исправление, поскольку это работает не полностью. Например, все заявки, которые не были завершены, отображаются в состоянии «Невыполненной работы», хотя некоторые из них должны быть в «текущем» состоянии.