Как использовать CALCULATE с LOOKUPVALUE и USERELATIONSHIP - PullRequest
0 голосов
/ 07 апреля 2019

У меня есть три таблицы, одна тусклая таблица, называемая «ISO_ccy», показывающая только аббревиатуры валют ISO, одна тусклая таблица, показывающая «домашнюю валюту» сущности («сущности»), а другая таблица (факт) («сделки»)) показывает валютные (FX) сделки.Что касается сделок с иностранной валютой, то они всегда включают две валюты (ccy), поэтому в последней таблице есть два столбца с кодами ISO валют (и соответствующими суммами).Обе таблицы затемнения имеют только один столбец с кодами ISO ccy (таблица "ISO_ccy", имеющая только различные значения).

Теперь у меня есть одно (активное) отношение для валюты 1 (ccy1) и одно неактивное для валюты 2 (ccy2) между таблицей "ISO_ccy" и "trades".Существует также активная связь между таблицами "ISO_ccy" и "entity".

Мне нужно рассчитать сумму для каждой валюты и каждой сущности, где валюта не равна "домашней валюте" этой сущности.

Кажется довольно простым для ccy с активными отношениями (ccy1):

    Sum_Hedges_activeRelation:=
    CALCULATE(
    SUM([Amount_ccy1]);
    FILTER(trades;trades[ccy1]>LOOKUPVALUE(entities[ccy];entities[name];trades[name]))
    )

Выражение фильтра гарантирует, что показываются только суммы, если ccy сделки не равенв "домашний" город.

Здесь я получаю желаемый результат.

Теперь мне нужно сделать то же самое с неактивным отношением (ccy2).

Вот что я пробовал:

Sum_Hedges_in-activeRelation:=
CALCULATE(
SUM([Amount_ccy2]);
USERELATIONSHIP(trades[ccy2];ISO_ccy[ccy]);
FILTER(trades;trades[ccy2]<>LOOKUPVALUE(entities[ccy];entities[name];trades[name]))
) 

Однако я получаю только «пустой» результат.

Я также пытался добавить "ВСЕ (сделки)" в функцию РАСЧЕТ.Там тоже нет результатов.

Итак, я немного растерялся, как я могу заставить эту работу.Можете ли вы помочь?

1 Ответ

0 голосов
/ 08 апреля 2019

ОБНОВЛЕНИЕ 08 апреля 2019 г. с решением:

Я нашел решение моей проблемы здесь:

sqlbi: ИСПОЛЬЗОВАНИЕ в мере

Теперь мой форумный форум выглядит так:

Sum_Hedges_in-activeRelation:=
CALCULATE(
 CALCULATE(
 SUM([Amount_ccy2]);
 FILTER(trades;trades[ccy2]
 <>LOOKUPVALUE(entities[ccy];entities[name];trades[name]))
 );
USERELATIONSHIP(trades[ccy2];ISO_ccy[ccy])
)

Это немного отличается от решения, предоставленного (для контекста, связанного со столбцами) в указанной статье, так как я пропустил инструкцию ALL () во внешнем CALCULATE (). Я не мог объяснить, хотя ...

...