DAX Динамические средние даты - PullRequest
0 голосов
/ 28 октября 2019

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

Гистограмма имеет 5 временных элементов в иерархии. Год - Квартал - Месяц - Неделя -День

Когда я просматриваю столбчатую диаграмму, мне нужна мера, которая будет динамически рассчитывать среднегодовой - ежеквартальный - среднемесячный, недельный средний, дневной средний

Например, предположим, что диаграмма находится на уровне года и отображает 4 бара, представляющих 2016-2019 годы. Значение меры будет COUNT (UnitID) / 4, потому что в настоящее время на оси X отображаются 4 бара.

Позволяет перейти к 2018 году до уровня месяца. Есть 12 баров, представляющих январь-декабрь. Значение меры будет COUNT (2018 UnitIDs) / 12, потому что в настоящее время на оси X отображается 12 баров.

Позволяет развернуть 2019 до уровня месяца. Есть только 10 баров, представляющих январь-октябрь. Значение меры будет COUNT (2019 UnitIDs) / 10, потому что на оси X в настоящее время отображается только 10 баров.

Наконец, давайте не будем углубляться в детали, а просто расширим иерархию из года в месяц. Мы переходим от годового представления, показывающего 4 бара, к ежемесячному представлению, показывающему 12. Но итоговое значение за январь представляет собой сумму 2016 январь + 2017 январь + 2018 январь + 2019 январь. Мера должна интерпретироваться как COUNT (Все UnitIDs) / 12, потому что в настоящее время на оси X отображается 12 месяцев.

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

Спасибо всем за ваши советы и отзывы. Я с нетерпением жду возможности проверить ваши ответы и посмотреть, работают ли они!

1 Ответ

0 голосов
/ 30 октября 2019

Похоже, вы ищете способ показать одно и то же значение для каждого года, квартала, месяца и т. Д.

Figure1

Интересно, как это будет иметь смысл, посколькувизуальный, но если это так, ваша мера будет примерно такой:

Average Count UnitIDs in Drilldown Periods = 

-- At which level the report is drilled down?
VAR CalendarDrilldownLevel = 
IF(ISFILTERED('Calendar'[Day]), "Day",
    IF(ISFILTERED('Calendar'[Week]), "Week",
        IF(ISFILTERED('Calendar'[Month]), "Month",
            IF(ISFILTERED('Calendar'[Quarter]), "Quarter",
                IF(ISFILTERED('Calendar'[Year]), "Year", "None")))))

-- Total count of UnitIDs in the entire period
VAR TotalCount = CALCULATE([Count of Unit IDs], ALLSELECTED('Calendar'))

-- Number of years, quarters, months, etc. based on the drilldown level
VAR CountOfPeriods = CALCULATE(
    SWITCH(
        CalendarDrilldownLevel,
        "Year", DISTINCTCOUNT('Calendar'[Year]),
        "Quarter", COUNTROWS(
            DISTINCT(
                SELECTCOLUMNS(
                    'Calendar',
                    "Year", 'Calendar'[Year],
                    "Quarter", 'Calendar'[Quarter]
                )
            )
        ),
        "Month", COUNTROWS(
            DISTINCT(
                SELECTCOLUMNS(
                    'Calendar',
                    "Year", 'Calendar'[Year],
                    "Quarter", 'Calendar'[Quarter],
                    "Month", 'Calendar'[Month]
                )
            )
        ),
        -- Similar lines follow for weeks, days, and in case of no drill down.
    ),
    ALLSELECTED('Calendar')
)

RETURN DIVIDE(TotalCount, CountOfPeriods)

Может быть, вы пытаетесь это показать средняя линия в визуале? В этом случае вы можете просто определить простую меру, например COUNT('Your Table'[UnitID]), и добавить среднюю линию в визуальную настройку столбчатой ​​диаграммы. (Вы можете найти это в разделе Analytics )

Figure2

...