DAX在ValidFrom列中查找日期

时间:2018-08-30 09:08:29

标签: powerbi dax

我有两(2)张桌子

表名:X

ID    Name       ValidFrom       Property
A-----Test1-----01.01.2010---------30
A-----Test1-----01.01.2015---------60
B-----Test1-----01.01.1900---------30
B-----Test2-----01.01.2018---------60

表名:Y

ID    Date
A---01.01.2010
A---01.02.2010
A---01.03.2015
A---01.04.2015

理想情况下,我想将计算所得的列添加到表Y 中,该表从表X 查找ID和日期以及ID和ValidFrom。在此示例中,表X中的行#1将是所有日期> = 01.01.2010和日期<01.01.2015的返回数据行。结果是这样的:

表名:Y (新)

ID     Date        Name    Property
A---01.01.2010----Test1------30
A---01.02.2010----Test1------30
A---01.03.2015----Test1------60
A---01.04.2015----Test1------60

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

目前尚不清楚Name列是如何生成的,但是这是在表Property中具有Name列之后如何获取Y列的方法:

Property =
VAR LastValid =
    CALCULATE (
        MAX ( X[ValidFrom] ),
        FILTER (
            ALL ( X[ValidFrom] ),
            X[ValidFrom] <= EARLIER ( Y[Date] )
        )
    )
RETURN
    LOOKUPVALUE (
        X[Property],
        X[ID], Y[ID],
        X[Name], Y[Name],
        X[ValidFrom], LastValid
    )

LastValid变量查找小于或等于当前行中日期的最新日期。然后,将其与IDName一起使用,以从表Property中查找X

答案 1 :(得分:0)

考虑到您所引用的最后一个公式并将LOOKUPVALUE应用于ID和ValidFrom,我成功尝试了下一种方法:

名称= VAR LastValid =     CALCULATE(MAX(X [ValidFrom]);         过滤器(             ALL(X [ValidFrom]);             X [ValidFrom] <=早(Y [Date])         )     ) 返回     LOOKUPVALUE(         X [名称];         X [ID]; Y [ID];         X [ValidFrom];最后验证     )