如何根据其过滤日期范围将一列除以其起始值

时间:2019-12-06 15:02:37

标签: powerbi dax

date        return  
1/1/2010    1.01  
2/1/2010    1.02  
3/1/2010    1.03  
4/1/2010    1.04  
5/1/2010    1.05  
6/1/2010    1.06  
7/1/2010    1.07  
8/1/2010    1.08  
9/1/2010    1.09  

嗨,那里,  我有累积的返回数据(factor_return)。我想要一个measure = return / start_return 其中start_return是过滤日期范围内最早的日期的返回。

谢谢

我尝试了此操作,但抱怨“找不到名称factor_return [return]”。请帮忙。

Measure =
VAR start_return =
    CALCULATE (
        VALUES ( factor_return[ return] ),
        FILTER (
            ALLSELECTED ( factor_return[date] ),
            factor_return[date] = MIN ( factor_return[date] )
        )
    )
RETURN
    DIVIDE ( factor_return[ return], start_return )

2 个答案:

答案 0 :(得分:0)

首先,您的错误表示您对列进行了拼写错误。我可以看到您在'return'之前添加了一个空格,[re​​turn]和[return]之间有区别。请注意第一个示例中的空格。

第二,您的公式无法满足您的需求,因为MIN()语句会受到当前过滤表上下文之外的filtercontext的影响。它将在仅1行(当前日期行)的表中搜索最小日期。 以下措施将为您工作:

Measure = 
VAR start_return = CALCULATE(VALUES(factor_return[return]), FILTER(ALLSELECTED(factor_return), factor_return[date] = MINX(ALLSELECTED(factor_return), factor_return[date])))
RETURN 
DIVIDE(SELECTEDVALUE(factor_return[return]), start_return)

以下屏幕截图中的度量2显示了VAR start_return的值。 enter image description here

希望这会有所帮助!

答案 1 :(得分:0)

我会这样:

Measure =
VAR start_date =
    CALCULATE (
        MIN ( factor_return[date] ),
        ALLSELECTED ( factor_return )
    )
VAR start_return =
    CALCULATE (
        SELECTEDVALUE ( factor_return[return] ),
        factor_return[date] = start_date
    )
RETURN
    DIVIDE ( SELECTEDVALUE ( factor_return[return] ), start_return )

这将计算过滤器中的第一个日期,查找该日期的收益,然后将当前收益除以该第一个收益。