Power BI 求最大间隔日期(库存、登录)

背景:

  1. 有一张用户登录明细表,其中判断用户当天登录的条件是isLoginDayDateShift=1,然后看LastLoginDate列即可
  2. 求:用户最大登录间隔,比如用户2021/1/1 2021/1/3 2020/1/6号分别有登录,则最大登录间隔为2天
  3. 除了登录间隔,也可以判断缺货天数这种场景

思路:

万能的视图层算法

  1. 先构建一张干净的登录表,包括用户ID、登录日期
  2. 给登陆表加一列,新列为下次登录日期
  3. 最后一个登录日期行,这行的”下次登录日期“肯定是空的,因此,将空替换为刷新日期
  4. 求日期间隔,日期1为原本登录日期、日期2为下次登录日期
  5. 返回步骤4中的最大值

实现:

--  FactTable[IsLoginDayDateShift]是用来辅助判断是否最后登录的列 当这列=1时,看last loggin date就是登录日期

a =
VAR logintable =
    FILTER (
        SUMMARIZE (
            FactTable,
            FactTable[IDnum],
            FactTable[LastLoginDate],
            FactTable[IsLoginDayDateShift]
        ),
        FactTable[IsLoginDayDateShift] = 1
            && NOT ISBLANK ( FactTable[LastLoginDate] )
    ) 
    
 --if have next log day, then dateiff, otherwise refreshdate
VAR next_ =
    ADDCOLUMNS (
        logintable,
        "@next",
            CALCULATE (
                MIN ( FactTable[LastLoginDate] ),
                FILTER (
                    logintable,
                    FactTable[LastLoginDate]
                        > EARLIER ( FactTable[LastLoginDate] )
                ),
                FILTER (
                    logintable,
                    FactTable[IDnum] = EARLIER ( FactTable[IDnum] )
                ),
                logintable
            )
    )
VAR NEXT_MODIFY =
    --change blank as refresh date
    ADDCOLUMNS (
        next_,
        "@next_m",
            IF (
                ISBLANK ( [@next] ),
                SELECTEDVALUE ( 'Dim_Data Refreshing'[Time] ),
                [@next]
            )
    )
VAR DATEDIFFTABLE =
    ADDCOLUMNS (
        NEXT_MODIFY,
        "@datediff", DATEDIFF ( FactTable[LastLoginDate], [@next_m], DAY )
    )
RETURN
    MAXX ( DATEDIFFTABLE, [@datediff] )
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容