DAX索引和匹配?

时间:2018-11-13 20:43:00

标签: function dax powerpivot

下午好,

我希望在Power Pivot中执行的操作是使值依赖于同一表中的其他两个列。

我首先要做的事情:在表中输入名称的最新日期。我现在需要根据名称和日期来匹配ID号。

例如:

ID   | Name    | Date        | Latest Date | ID Number
1    | John    | 1/1/2018    |  1/5/2018   |
2    | Kyle    | 1/15/2018   |  1/30/2018  |
3    | John    | 1/5/2018    |  1/5/2018   |
4    | Kyle    | 1/30/2018   |  1/30/2018  |

我需要的是

ID   | Name    | Date        | Latest Date | ID Number
1    | John    | 1/1/2018    |  1/5/2018   | 3
2    | Kyle    | 1/15/2018   |  1/30/2018  | 4
3    | John    | 1/5/2018    |  1/5/2018   | 3
4    | Kyle    | 1/30/2018   |  1/30/2018  | 4

关于如何完成脚本来实现这一点的任何想法吗?

2 个答案:

答案 0 :(得分:0)

最接近的等效项是LOOKUPVALUE函数。

这应该用作计算列:

= LOOKUPVALUE(Table1[ID], Table1[Date], [Latest Date])

还有其他使用过滤的方法,但是上面应该是最熟悉的。

答案 1 :(得分:0)

如果每个“最新日期/名称”只有一个ID号,则可以使用LOOKUPVALUE。 使用此方法返回与名称和最新日期匹配的ID:

作为计算列;

LOOKUPVALUE ( 
    Table1[ID], 
    Table1[Name], [Name], 
    Table1[Date], [Latest Date]
)

作为衡量标准

Latest ID:= 
VAR LookupName = 
    IF ( 
        HASONEVALUE ( Table1[Name] ),
        VALUES ( Table1[Name] ),
        BLANK ()
    )
VAR LookupDate = 
    IF ( 
        HASONEVALUE ( Table1[Latest Date] ),
        VALUES ( Table1[Latest Date] ),
        BLANK ()
    )
RETURN
    LOOKUPVALUE ( 
        Table1[ID],
        Table1[Name], LookupName,
        Table1[Date], LookupDate
    )

但是,如果您有多个ID号,并且名称和日期与最新日期相匹配,则会返回错误:

  

提供了多个值的表,其中期望有一个值

相反,您可以使用:

Latest ID:= 
VAR LookupDate = 
    IF ( 
        HASONEVALUE ( Table1[Latest Date] ),
        VALUES ( Table1[Latest Date] ),
        BLANK ()
    )
RETURN
    CALCULATE ( 
        FIRSTNONBLANK ( Table1[ID] , 1),
        FILTER ( 
            ALLEXCEPT ( Table1, Table1[Name] ),
            Table1[Date] = LookupDate
        )
    )