Ссылка, которую дает @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
.
person
Alexis Olson
schedule
22.04.2019