Табличное распределение / объем бюджета DAX по месяцам

У меня есть простая книга PowerPivot с некоторыми SalesTargets в одной таблице, это по месяцам… обычно 1-е число каждого месяца, и измерение даты.

Я написал (с большим трудом) запрос DAX, чтобы распределить полученную ежемесячную цель до дней для целей межмесячной отчетности (иначе не было бы целевых данных на этом уровне).

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

не зная почему, я не могу это исправить ... вот мой текущий код:

Measure :=
CALCULATE (
    SUMX (
        VALUES ( Dates[Date] ),
        CALCULATE (
            CALCULATE (
                SUM ( SalesTargets[Target] ),
                ALL ( Dates[Date] ),
                SUMMARIZE ( Dates, Dates[MonthName] )
            )
                / CALCULATE (
                    DISTINCTCOUNT ( Dates[Date] ),
                    ALL ( Dates[Date] ),
                    Dates[IsWorkingDay] = 1,
                    SUMMARIZE ( Dates, Dates[MonthName] )
                )
        )
    ),
    Dates[IsWorkingDay] = 1
)

Код пытается суммировать цели продаж на уровне месяца, а затем разделить это число на сумму дат, где IsWorkingDay = 1.

Этот процесс выполняется для всех дат [Дата] (наименьшее зерно) таблицы дат, а затем я пытаюсь отфильтровать даты, где IsWorkingDay снова = 1 ..

Если я удалю логику рабочего дня из обеих областей кода, все будет работать нормально ... и без проблем будет накапливаться по месяцам, кварталам и годам ..

Я уверен, что если бы я понял, в чем проблема, я смог бы ее решить ... Но я просто не вижу этого.

Спасибо


person m1nkeh    schedule 30.07.2014    source источник
comment
BGM, не могли бы вы поделиться некоторыми образцами (фиктивными) данными?   -  person Petr Havlik    schedule 18.08.2014
comment
привет, я мог бы предоставить некоторые образцы данных ... я попытаюсь загрузить книгу в OneDrive или что-то в этом роде, когда у меня будет время, однако я на самом деле теперь решил эту проблему, разбив запрос на отдельные части и вообще задействовав свой мозг ;)   -  person m1nkeh    schedule 19.08.2014
comment
BGM - если у вас будет возможность, пожалуйста, все равно загрузите данные - я хотел бы попробовать ваше решение :)   -  person Petr Havlik    schedule 19.08.2014


Ответы (1)


Вот что я сделал в итоге:

SalesTarget :=
CALCULATE (
    SUMX (
        VALUES ( Dates[Date] ),
        CALCULATE (
            CALCULATE (
                [Sum of Target],
                ALL ( 'Dates' ),
                SUMMARIZE ( Dates, Dates[MonthName], Dates[Year] )
            )
                / CALCULATE (
                    [Sum of IsWorkingDay],
                    ALL ( 'Dates' ),
                    SUMMARIZE ( 'Dates', 'Dates'[MonthName] )
                )
        )
    ),
    Dates[IsWorkingDay] = 1
)

обратите внимание, что единственная реальная разница здесь - это удаление отдельного количества дней, когда IsWorkingDay = 1

Я заметил, что это не давало мне правильного ответа, когда я разбил калькуляцию на более мелкие наборы и поэтому изменил ее на что-то другое после небольшого эксперимента ...

В моей таблице дат IsWorkingDay - это логическое поле, равное 1 или 0, но вы также можете сделать это с помощью чего-то вроде:

WorkingDays :=
CALCULATE (
    COUNTROWS ( 'Dates' ),
    ALL ( 'Dates' ),
    SUMMARIZE ( 'Dates', 'Dates'[MonthName] ),
    'Dates'[IsWorkingDay] = "Working Day"
)

Надеюсь, этот пост кому-то поможет :)

person m1nkeh    schedule 19.08.2014