首页 > 解决方案 > 重置基于日期的计算

问题描述

我正在使用此报告逐月跟踪新的登录,目前工作正常,但我需要将所有内容重置为 0 - 以便每个财政年度的每个登录都再次被视为新登录。

登录表

ID 姓名 日期
登录1 山姆 2020 年 1 月 12 日上午 8:00:00
登录2 山姆 2020 年 1 月 12 日上午 9:00:00
登录3 戴夫 2020 年 1 月 12 日上午 8:00:00
登录4 戴夫 2020 年 1 月 12 日上午 9:00:00
登录5 杰克 2020 年 1 月 12 日上午 8:00:00
登录6 山姆 2020 年 1 月 12 日上午 9:00:00
登录7 詹姆士 2020 年 2 月 12 日上午 8:00:00
登录8 詹姆士 2020 年 2 月 12 日上午 9:00:00
登录9 詹姆士 2020 年 2 月 12 日上午 10:00:00
登录10 山姆 2020 年 3 月 12 日上午 8:00:00
登录11 山姆 2020 年 3 月 12 日上午 9:00:00
登录12 史蒂夫 2020 年 4 月 12 日上午 8:00:00

使用这些在 2 月过滤的数据,我们会看到史蒂夫在该日期之前从未登录,因此这使他成为“新人”。詹姆斯也是新人。

我最接近的尝试是自定义的“新个体计数”度量


VAR currentUsers = VALUES('Log-Ins'[Name])
VAR currentDate = MIN('Log-Ins'[Date])

VAR pastUsers = CALCULATETABLE(VALUES('Log-Ins'[Name]), 
    ALL('Log-Ins'[Date].[Month],'Log-Ins'[Date].[MonthNo],'Log-Ins'[Date].[Year])
    , 'Log-Ins'[Date]<currentDate)

VAR newUsers = EXCEPT(currentUsers,pastUsers)

RETURN COUNTROWS(newUsers)

我试图添加一个硬编码并用它替换“currentDate”,但这给了我自该日期以来的所有登录,这是我不想要的。基本上我希望即使在 2020 年也已经登录的人再次被视为新人,但仅限于那个月,而不是直到明年(或我定义的任何日期)

VAR fiscalYear = DATE(2021,2,01)

我想我仍然必须使用 currentDate 但可能会根据财政日期过滤它?不知道该怎么做。

标签: powerbidaxpowerbi-desktoppowerbi-custom-visuals

解决方案


不是我正在寻找的答案,但对于遇到此问题的任何人,我以更传统的方式解决了它。我添加了一个新的 FiscalYear 计算列,基本上说“如果日期 = x,将年份设置为 y”。

然后,我使用该计算列作为报告的过滤器,保持原始 DAX 不变,并允许我在报告的年份之间切换,同时保留所有“新”登录数据。


推荐阅读