DAX Рассчитать показатель на основе максимальной даты месяца - PullRequest
0 голосов
/ 29 апреля 2020

Допустим, у меня есть таблица Doc_Table со следующими столбцами:

  • Doc_Ref
  • Version_Date
  • Other_Attributes

A Строка уникальна путем объединения Doc_Ref и Version_Date.

Я ищу для расчета количества документов за последнюю версию месяца. Пример: если бы я получил 3 версии 11/4, 15/4 и 24/4 в апреле, я бы использовал только последнюю версию для апреля.

В SQL это будет выглядеть так:

Select count(Doc_Ref)
From Doc_Table
Where Month(Version_Date) in (Select MAX(Version_Date), Month(Version_Date) From Doc_Table Group By Month(Version_Date))

Допустим, у нас есть следующие элементы:

Doc_Ref ; Version_Date ; Other_Attributes
Ref1 ; 2020-03-20 ; ...
Ref2 ; 2020-03-20 ; ...

Ref1 ; 2020-04-11 ; ...
Ref2 ; 2020-04-11 ; ...
Ref3 ; 2020-04-11 ; ...

Ref1 ; 2020-04-15 ; ...
Ref2 ; 2020-04-15 ; ...
Ref3 ; 2020-04-15 ; ...

Ref1 ; 2020-04-24 ; ...
Ref2 ; 2020-04-24 ; ...
Ref3 ; 2020-04-24 ; ...
Ref4 ; 2020-04-24 ; ...

Ожидаемые результаты будут:

Month Year - Count_Of_Doc_Ref
March 2020 - 2
April 2020 - 4

Не могли бы вы помочь мне с созданием KPI? Спасибо за ваши идеи.

РЕДАКТИРОВАТЬ: Я приду с этим ответом на основе Agustin Pala cios ответить

NB of Ongoing Doc Ref Shared = 
VAR VersionLessThan = SELECTEDVALUE('Axis Doc_Ref'[Version Date];MAX('Axis Doc_Ref'[Version Date]))
VAR OngoingEWPerMonth = CALCULATE
    (   [NB of Ongoing Doc Ref]
        ;FILTER('Axis Doc_Ref';'Axis Doc_Ref'[Version Date] = MAX('Axis Doc_Ref'[Version Date]))
    )
RETURN
CALCULATE
(
    CALCULATE
    (   [NB of Ongoing Doc Ref]
        ;FILTER('Axis Doc_Ref';'Axis Doc_Ref'[Version Date] = MAX('Axis Doc_Ref'[Version Date]))
    )
    ;USERELATIONSHIP('Axis Doc_Ref'[Version Date];'Axis EW Created Date'[Date - Created])
    ;FILTER(all('Axis Doc_Ref'[Version Date]); 'Axis Doc_Ref'[Version Date] <= VersionLessThan)
)

Ответы [ 3 ]

2 голосов
/ 29 апреля 2020

Во-первых, у вас должен быть столбец для месяца, а другой - для года. Я создал оба, используя:

Столбец Год

Year = YEAR( 'Table'[Version_Date] )

Столбец Месяц

Month = MONTH( 'Table'[Version_Date] )

Затем используйте эту меру:

MaxCount =
CALCULATE (
    COUNT ( 'Table'[Doc_Ref] ),
    FILTER ( 'Table', 'Table'[Version_Date] = MAX ( 'Table'[Version_Date] ) )
)

Использовать год , Месяц и MaxCount, чтобы создать таблицу. Вот результат:

enter image description here

Надеюсь, это поможет вам.

1 голос
/ 30 апреля 2020

Это также работает:

Я предполагаю, что у вас есть таблица измерения даты (если нет, используйте ее). Таблица dimDate должна иметь отношение 1: * к Doc_Table [Version_Date]. Затем в визуальной таблице добавьте год и месяц в таблицу (из таблицы dimDate) и, наконец, добавьте эту меру в таблицу:

Distinct Doc_ref = 
DISTINCTCOUNT('Doc_Table'[Doc_ref])

Визуальный элемент создаст контекст года и месяца и DISTINCTCOUNT- Затем функция подсчитает, сколько различных Doc_ref существует, например, в апреле 2020 года (4).

enter image description here

0 голосов
/ 29 апреля 2020

Попробуйте сделать следующее:

EVALUATE
SUMMARIZE (   
FILTER (
    CALCULATETABLE (
        ADDCOLUMNS (
            RefTable,
            "LastDate",
            VAR MaxDate =
                MAXX (
                    FILTER (
                        RefTable,
                        MONTH ( RefTable[Version_Date] ) = MONTH ( EARLIER ( RefTable[Version_Date] ) )
                    ),
                    RefTable[Version_Date]
                )
            RETURN
                IF ( MaxDate = RefTable[Version_Date], MaxDate ),
            "Month_Year", FORMAT ( RefTable[Version_Date], "MMM YY" )
        )
    ),
    [LastDate] <> BLANK ()
),
[Month_Year],
"Count", COUNTA ( RefTable[Doc_Ref] ) )

Дайте нам знать, если это работает для вас.

Лучше

Дэвид

...