Как найти сумму значений, присутствующих в одной таблице и отсутствующих в другой таблице - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь найти сумму значений, соответствующих ключу, который присутствует в таблице 1, но отсутствует в таблице 2.

enter image description here

Эти таблицы были созданы на основе некоторых фильтров и представляют значения для двух разных дат.

Две разные даты выбраны из двух разных таблиц дат, которые имеют неактивные отношения, специально созданные для этой цели.

Я хочу создать меру, которая определяет сумму.

Ниже приведен синтаксис, который я использовал:

 Difference = 
VAR 
Table1 = CALCULATETABLE(VALUES('TableA'[Id]), 'TableA'[Type] = "ABC", ALL('Date'), USERELATIONSHIP('Date'[As of Date], Previous_Date[Previous_Date]),USERELATIONSHIP('Date'[As of Date], 'TableA'[As of Date]))
VAR
Table2 = CALCULATETABLE(VALUES('TableA'[Id]), 'TableA'[Type] = "ABC", USERELATIONSHIP('Date'[As of Date], 'TableA'[As of Date]))
RETURN
IF(AND(VALUES('TableA'[Id]) IN Table1 , NOT(VALUES('TableA'[Id])) IN Table2), 
CALCULATE(SUM('TableA'[Values])),0)

Он не содержит ошибок.Однако, когда я отбрасываю показатель на визуал KPI, я получаю следующее сообщение:

enter image description here

Скажите, пожалуйста, что не так с синтаксисом.Также, пожалуйста, дайте мне знать, если есть какой-нибудь лучший код, который можно написать.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 28 июня 2019

Причина, по которой вы получаете сообщение об ошибке, заключается в том, что она ожидает одно значение для x, когда вы пишете x IN Table1, но использование функции VALUES может вернуть список, а не одно значение.

Я бы попробовал что-то более похожее на это после RETURN:

SUMX (
    'TableA',
    IF ( 'TableA'[Id] IN Table1 && NOT ( 'TableA'[Id] IN Table2 ), 'TableA'[Value] )
)

. Это перебирает каждую строку TableA и проверяет, находится ли значение Id в каждой строке в таблицах, которые вы вычислили.Если условие выполнено, добавляется Value.В противном случае IF возвращает пробел (который обрабатывается так же, как 0 в сумме), поскольку третьего аргумента нет.

...