Неактивные отношения, влияющие на меры

В нашем отчете pbix есть следующие таблицы и отношения:  введите описание изображения здесь

По некоторым очевидным причинам мне нужно иметь связь (неактивную) между Dates [date] и Table2 [T2Date]. Однако это приводит к колебаниям данных для измерения «общей суммы» в таблице 1.

Вот несколько снимков экрана:  введите описание изображения здесь

До отношений (Даты [дата] - Таблица2 [T2Date]):

введите здесь описание изображения

После знакомства (даты [дата] - таблица2 [T2Date]):

введите здесь описание изображения

Мне нужно понять, почему возникает эта разница и как это связано с отношениями, поскольку мера использует другие отношения.

Для справки прилагаю отчет pbix.

https://drive.google.com/open?id=1XknisXvElS6uQN224bacZ_ >

Любая помощь будет оценена :)


person Pratik Bhavsar    schedule 20.04.2019    source источник


Ответы (2)


Ссылка, которую дает @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

Установка для параметра «Направление перекрестного фильтра» значения Оба для любого отношения немного рискованно - вы, по сути, передаете контроль над дизайном запросов во время выполнения роботам Power BI. Тогда есть риск, что они придумают неожиданный «креативный» дизайн запроса.

Некоторое представление о том, как это происходит, можно найти в недавнем выступлении Альберто Феррари:

https://www.sqlbi.com/tv/understanding-relationships-in-power-bi/

Я уверен, вы согласитесь, это довольно ужасно.

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

person Mike Honey    schedule 22.04.2019