首页 > 解决方案 > DAX:映射项目如果同时出现在 2 个日期

问题描述

如何映射或计算上个月也在我的数据中的新项目?

例如:

身份证/日期/项目

123 / 01.12.20 / 一

123 / 01.11.20 / 一

143 / 01.11.20 / 二

153 / 01.12.20 / 三

将获得:

123个/一个

标签: powerbidax

解决方案


看起来 Item 是 ID 的描述。我们可以编写一个度量来显示该项目,如果它在前一个月也存在,否则为空白。这样,在 Power BI 中使用 ID 和此度量创建表格视觉对象,我们将只看到上个月出现的 ID 和项目。

Item if in previous month =
IF(
    HASONEVALUE( T[Item] )
        && HASONEVALUE( T[ID] ),
    VAR currentMonth =
        MONTH(
            MAX( T[Date] )
        )
    VAR currentItem =
        SELECTEDVALUE( T[Item] )
    RETURN
        IF(
            NOT ISEMPTY(
                FILTER(
                    ALL( T ),
                    MONTH( T[Date] ) = CurrentMonth - 1
                        && T[Item] = currentItem
                )
            ),
            currentItem
        )
)

如果我们有两个月的数据,这很有效,就像你的问题一样。如果我们有两个多月的时间,那么也许我们真正想要的是检查最后一个月的前一个月。

Item if in previous to last month = 
VAR LastMonth =
    MONTH(
        MAXX(
            ALL( T ),
            T[Date]
        )
    )
RETURN
    IF(
        HASONEVALUE( T[Item] )
            && HASONEVALUE( T[ID] )
            && MONTH(
                MAX( T[Date] )
            ) = LastMonth,
        VAR currentItem =
            SELECTEDVALUE( T[Item] )
        RETURN
            IF(
                NOT ISEMPTY(
                    FILTER(
                        ALL( T ),
                        MONTH( T[Date] ) = LastMonth - 1
                            && T[Item] = currentItem
                    )
                ),
                currentItem
            )
    )

推荐阅读