Ссылка, которую дает @MikeHoney, содержит действительно полезную информацию о тонкостях отношений и имеет отношение к этой проблеме (смотрите!), Но эта проблема в конечном счете не связана, в частности, с двунаправленной фильтрацией. Фактически, я могу воспроизвести это с этой упрощенной структурой отношений:
Ключевой момент, на который следует обратить внимание, заключается в том, что когда вы присоединяете Table2
к Dates
, поскольку Table2
содержит T2Date
значений, которые не соответствуют ни одному Date[date]
, это создает дополнительную строку в Dates
с пустой датой, которую вы можете заметить в своем фильтре на 6. Year
, когда это отношение существует (активное или неактивное) Отфильтровывая, что этот пробел в фильтре 6. Year
будет работать, за исключением того, что по вашему показателю вы используете ALL(Dates)
для удаления всей фильтрации, выполненной для этой таблицы.
Существует несколько способов устранения этого несоответствия, самым простым из которых является замена ALL
на ALLNOBLANKROW
. Если вы используете ALLSELECTED
, это также будет работать в сочетании с фильтрацией пробелов в вашем фильтре уровня отчета на 6. Year
.
Очистив некоторые элементы, не относящиеся к этому контексту, и изменив ALL
на ALLNOBLANKROW
, ваш общий показатель можно записать так:
ALLNOBLANKROW =
VAR EndServiceDate =
MAX ( Dates[Date] )
RETURN
CALCULATE (
SUM ( Table1[Net Amount] ),
FILTER (
ALLNOBLANKROW ( Dates ),
Dates[Date] <= EndServiceDate
),
Table1[Flag2] = 1,
Table1[Flag] = TRUE ()
)
Результаты без фильтра 6. Year
и с двумя мерами, один с использованием ALL
, а другой с ALLNOBLANKROW
:
Обратите внимание, что каждая строка в столбце ALL
была уменьшена на -7,872.01
. Это сумма всех значений Net Amount
, которые не соответствуют ни одной дате в таблице Dates
. Если вы удалите отношение с Dates[date]
до Table2[T2Date]
, то пустая строка больше не будет существовать, и оба они будут соответствовать версии ALLNOBLANKROW
.