Использование связанной функции в DAX с USERELATIONSHIP


Я пытаюсь вытащить поле из другой таблицы в моей модели BISM, используя функцию" RELATED". Поскольку существует много таблиц, имеющих отношение к таблице People, только одна связь активна, а остальные неактивны. В этом случае отношение неактивно, и, как я понимаю, я должен использовать функцию "USERELATIONSHIP", чтобы указать отношение для использования. Основываясь на том, что я нашел здесь: http://connect.microsoft.com/SQLServer/feedback/details/730493/powerpivot-dax-method-related-does-not-work-if-key-is-inactive Я думал, что смогу сделать это:

=CALCULATE(RELATED(People[FullName]]),USERELATIONSHIP(Def[OwnerID],People[PersonID]))

Но я получаю ошибку:

Столбец "People[FullName]" либо не существует, либо не имеет отношения ни к одной таблице, доступной в текущем контексте.
1 2

1 ответ:

Вот пример использования набора данных AdventureWorksDW...

EVALUATE(
    CALCULATETABLE(
        ADDCOLUMNS(
            'Internet Sales'
            ,"Order Calendar Year"
                ,CALCULATE(VALUES('Date'[Calendar Year]))
            ,"Ship Calendar Year"
                ,CALCULATE(
                    VALUES('Date'[Calendar Year])
                    ,FILTER(
                         'Date'
                        ,'Date'[DateKey] = 'Internet Sales'[ShipDateKey]
                    )
                )
            ,"Due Calendar Year"
                ,CALCULATE(
                     VALUES('Date'[Calendar Year])
                    ,FILTER(
                         'Date'
                        ,'Date'[DateKey] = 'Internet Sales'[DueDateKey]
                    )
                )
        )
    )
)

Этот код извлекает календарный год из таблицы дат в таблицу интернет-продаж для каждой из дат в таблице интернет-продаж:

  • дата заказа (активная связь)
  • Срок выполнения (неактивные отношения)
  • дата отгрузки (неактивные отношения)

EDIT : исправлен первый ответ (выше)...Вот хорошая запись о том, почему USERLATIONSHIP не будет работать в этом sceanrio: linky*

LOOKUPVALUE ниже также работает:

=LOOKUPVALUE(
     People[FullName]
    ,People[PersonID]
    ,FollowUps[OwnerID]
)