Нахождение разницы между двумя таблицами, сгенерированными из одной таблицы с использованием DAX - PullRequest
0 голосов
/ 03 июля 2019

Я хочу найти разницу между суммой всех общих элементов между двумя таблицами.

У нас есть один большой стол (Таблица A)

enter image description here

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

На основе определенных фильтров (один из них - дата) нам нужно создать 2 таблицы: enter image description here

Затем мы должны найти разницу между суммой всех общих элементов.

Таблицы 1 и 2 не могут быть реальными таблицами и могут быть просто виртуальными таблицами (определенными с использованием VAR), объявленными для создания меры.

Я попробовал следующий код:

Разница = VAR Table1 = ADDCOLUMNS ('TableA', "id", CALCULATE (VALUES ('TableA' [Id]), ALL ('Date'), ALL ('TableA'), USERELATIONSHIP ('Date' [По состоянию на дату], Previous_Date [Previous_Date]), USERELATIONSHIP («Дата» [По состоянию на дату], «Таблица A» [Дата])), «Значение», «Таблица A» [Значение])

ВДП Table2 = ADDCOLUMNS («TableA», «id», CALCULATE (VALUES («TableA» [Id]), ALL («TableA»), USERELATIONSHIP («Date» [на дату], «TableA» [Date])) , «Значение», «Таблица A» [Значение])

VAR abc = CALCULATE (SUMX (Table1, IF (VALUES ('TableA' [Id]) IN Table1 && VALUES ('TableA' [Id]) в Table2, Table1 [Value])))

VAR pqr = CALCULATE (SUMX (Table2, IF (VALUES ('TableA' [Id]) В Table1 && VALUES ('TableA' [Id]) в Table2, Table2 [Value])))

ВОЗВРАТ а-PQR

1 Ответ

0 голосов
/ 03 июля 2019

Предварительное условие: - Измените тип данных столбцов идентификатора на Текст в обеих таблицах.

Затем создайте этот вычисляемый столбец в таблице 1: -

Common_NotCommon_Table1 = 
         Var out1 = LOOKUPVALUE(Table2[id],Table2[id],Table1[id])
         Var out2 = IF(out1 <> "", "Common","Not-Common")
return out2

Затем создайте этот вычисляемый столбец в таблице2. Аналогично: -

Common_NotCommon_Table2 = 
         Var out1 = LOOKUPVALUE(Table1[id],Table1[id],Table2[id])
         Var out2 = IF(out1 <> "", "Common","Not-Common")
return out2

Затем создайте две меры, чтобы найти сумму - ее можно создать в любой из ваших таблиц.

Sum_Common_Table1 = CALCULATE(SUM(Table1[corresponding value]), FILTER(Table1, Table1[Common_NotCommon_Table1] = "Common")) 

Sum_Common_Table2 = CALCULATE(SUM(Table2[corresponding value]), FILTER(Table2, Table2[Common_NotCommon_Table2] = "Common")) 

Затем создайте меру разницы в любой из таблиц: -

Common_Diff = [Sum_Common_Table2] - [Sum_Common_Table1]

Вывод, как и ожидалось, выглядит так,

enter image description here

Пожалуйста, примите ответ, если он поможет, и дайте мне знать, как он работает для вас.

...