DAX在ValidFrom列中查找日期

问题描述 投票:1回答:2

我有两(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和ValidFrom查找ID和日期。在此示例中,表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

任何帮助将不胜感激

powerbi dax
2个回答
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


0
投票

考虑到最后一个公式并将LOOKUPVALUE应用于ID和ValidFrom,我尝试了下一个方法:

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

© www.soinside.com 2019 - 2024. All rights reserved.