DAX индекс и совпадение? - PullRequest
       5

DAX индекс и совпадение?

0 голосов
/ 13 ноября 2018

Добрый день,

Что я хочу сделать в Power Pivot, так это привести значение, зависящее от двух других столбцов в одной таблице.

Что я сделал первым: получил последниедата для имени, внесенного в таблицу.Теперь мне нужно сопоставить идентификационный номер на основе имени и даты.

Например:

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 голосов
/ 14 ноября 2018

Вы можете использовать LOOKUPVALUE, если у вас будет только один идентификационный номер на последнюю дату / имя. Используя это для возврата идентификатора, который соответствует имени и самой последней дате:

как вычисляемый столбец;

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
    )

Однако, если у вас есть более одного идентификационного номера с совпадающим именем и датой, совпадающей с самой поздней датой, это вернет ошибку:

Была предоставлена ​​таблица с несколькими значениями, где ожидалось одно значение

Вместо этого вы можете использовать:

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
        )
    )
0 голосов
/ 14 ноября 2018

Ближайшим эквивалентом является функция LOOKUPVALUE .

Это должно работать как вычисляемый столбец:

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

Есть и другие способы сделать этоиспользуя фильтрацию, но вышеупомянутое должно быть наиболее знакомым.

...