DAX根据每月的最大日期计算度量

时间:2020-04-29 15:08:21

标签: powerbi dax

让我们说我有一个包含以下各列的表Doc_Table:

  • Doc_Ref
  • 版本日期
  • 其他属性

通过结合Doc_Ref和Version_Date,一行是唯一的。

我正在搜索计算该月最后一个版本的文档计数。例如:如果我在4月收到3个版本11 / 4、15 / 4和24/4,则仅使用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 Palacios的答复得出了该答案

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 个答案:

答案 0 :(得分:2)

首先,您必须有一个列用于月份,而另一列则用于年份。 我使用以下方法创建了两者:

列年

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] ) )
)

使用Year,Month和MaxCount创建一个表。 结果是:

enter image description here

希望对您有帮助。

答案 1 :(得分:1)

这也有效:

我假设您有一个日期维度表(如果没有,请使用一个)。 dimDate表应与'Doc_Table'[Version_Date]具有1 ::关系。然后在可视表中将年和月添加到表中(来自dimDate表),最后将此度量添加到表中:

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

视觉效果将创建年份和月份的上下文,然后DISTINCTCOUNT函数将计算例如中有多少个不同的Doc_ref。 2020年4月(4)。

enter image description here

答案 2 :(得分:0)

尝试以下操作:

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] ) )

让我们知道这是否对您有用。

最佳

大卫