在Power BI中使用switch true处理日期

3
我正在解决Power BI中的一个问题,根据日期标准对行进行分类。我的第一个想法是使用嵌套的if语句,但我意识到switch(True())函数可能更适合。不幸的是,由于某种原因,该语句从[Result2]跳到[Result3],并且不考虑第一个之后的任何标准。
我有一个连续的日期范围,基本上,如果日期在w和x之间,则要返回特定值,如果日期在y和z之间,则要返回另一个值。
我正在使用新列,并且日期格式化为日期。我的公式如下:
Column 2 = 
SWITCH(TRUE(),
   Dates[Date]>01/01/2007 && Dates[Date]<08/30/2008,"2007/2008",
   Dates[Date]>08/31/2008 && Dates[Date]<08/30/2009,"2008/2009",
   Dates[Date]>08/31/2009 && Dates[Date]<08/30/2010,"2009/2010",
   Dates[Date]>08/31/2010 && Dates[Date]<08/30/2011,"2010/2011",
   Dates[Date]>08/31/2011 && Dates[Date]<08/30/2012,"2011/2012",
   Dates[Date]>08/31/2012 && Dates[Date]<08/30/2013,"2012/2013",
   Dates[Date]>08/31/2013 && Dates[Date]<08/30/2014,"2013/2014",
   Dates[Date]>08/31/2014 && Dates[Date]<08/30/2015,"2014/2015",
   Dates[Date]>08/31/2015 && Dates[Date]<08/30/2016,"2015/2016",
   Dates[Date]>08/31/2016 && Dates[Date]<08/30/2017,"2016/2017", 
   "Unaccounted")
2个回答

4

Olly有一个好建议,但可以使用时间智能函数STARTOFYEAR来简化,其中第二个参数表示年底。

New Column = 
VAR StartYear = YEAR(STARTOFYEAR(Dates[Date], "08/31"))
RETURN StartYear & "/" & StartYear + 1

值得注意的是,在您的SWITCH函数中,每年的8月30日和31日都没有被考虑进去。我猜这不是有意为之。

谢谢,我的数据集中没有8月30日/31日的日期,所以我没有考虑它们。出于好奇,如果日期评估不一致,我该如何编辑我的switch语句? - varnhem
1
你的函数原则上看起来应该可以工作,但是你的日期需要以日期格式呈现。例如,使用DATE(2007,08,31)而不是08/31/2007 - Alexis Olson

2

这是一种低效的处理方式,当您的价值可能是派生出来的时候。

尝试:

New Column = 
VAR StartYear = 
    YEAR ( Dates[Date] ) + 
    IF ( 
        MONTH ( Dates[Date] ) < 9,
        0,
        1
    )
RETURN
    StartYear & "/" & StartYear + 1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接