Двунаправленные кросс-фильтры в табличных моделях

Применимо к: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

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

Концепцию можно разбить на две составляющих. Кроссфильтрация — это возможность задать контекст фильтра для таблицы на основе значений в связанной таблице, а двунаправленность означает передачу контекста фильтра второй связанной таблице на другой стороне связи. Само название указывает на то, что срез можно выполнить в обоих направлениях, а не только в одном. На внутреннем уровне двусторонняя фильтрация расширяет контекст фильтра до запроса супермножества данных.

Снимок экрана: поле

Существует два типа перекрестных фильтров: односторонняя и двусторонняя фильтрация. Однонаправленный — это традиционный фильтр с направлением от многих к одному в связи между исходной таблицей и таблицей измерения. Двусторонний — это перекрестный фильтр, который позволяет использовать контекст фильтра одной связи в качестве контекста фильтра для другой связи таблицы с одной таблицей, общей для обеих связей.

С заданными DimDate и DimProduct с внешними ключами к FactOnlineSalesдвунаправленный кросс-фильтр эквивалентен FactOnlineSales-DimDate и FactOnlineSales-DimProduct , используемым одновременно.

Двунаправленные перекрестные фильтры могут быть простым решением проблемы проектирования запросов "многие ко многим", которая в прошлом бросала вызов разработчикам табличных приложений и Power Pivot. Если вы использовали обходное решение DAX для связей "многие ко многим" в табличных моделях или моделях Power Pivot, попробуйте применить двусторонний фильтр, чтобы узнать, дает ли он ожидаемые результаты.

При создании двунаправленного кросс-фильтра учитывайте следующие особенности.

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

    Если двунаправленные фильтры будут включены везде, данные могут оказаться чрезмерно фильтрованными. Кроме того, может возникнуть неоднозначность из-за создания нескольких возможных путей запроса. Чтобы избежать обеих проблем, запланируйте использование сочетания односторонних и двусторонних фильтров.

  • Выполните добавочное тестирование, чтобы проверить влияние каждого изменения фильтра на модель. Функция Анализа в Excel в Visual Studio хорошо подходит для добавочного тестирования. Рекомендуется периодически проводить дополнительные тесты с использованием других клиентов отчетов, чтобы исключить неожиданные результаты на более поздних этапах.

Примечание

Конструктор табличных моделей в Visual Studio включает значение по умолчанию, определяющее, выполняются ли двунаправленные перекрестные фильтры автоматически. Если включить двунаправленные фильтры по умолчанию, то двунаправленная фильтрация будет включена только в том случае, если модель четко сформулирует один путь запроса через цепочку связей между таблицами.

Значение по умолчанию

Однонаправленные фильтры заданы по умолчанию. Можно изменить значение по умолчанию для всех новых проектов, создаваемых в конструкторе, или в самой модели уже существующего проекта.

На уровне проекта параметр проверяется при создании проекта. Если по умолчанию будет задан двунаправленный фильтр, это проявит себя при создании следующего проекта.

  1. В Visual Studio выберите Сервис>Параметры>Службы Analysis Services Табличные конструкторы>Новые параметры проекта.

  2. Задайте для параметра Направление фильтрации по умолчанию значение Одно направление или Оба направления.

Кроме того, можно изменить значение по умолчанию для модели.

  1. В Обозреватель решений выберите Свойства Model.bim> .

  2. Задайте для параметра Направление фильтрации по умолчанию значение Одно направление или Оба направления.

Имейте в виду

Чтобы увидеть, как работает двунаправленный кросс-фильтр в конкретной ситуации, нужно провести его практическое испытание. Иногда вы обнаружите, что встроенных поведений недостаточно, и для выполнения этой задачи потребуется вернуться к вычислениям DAX. В разделе См. также вы найдете несколько ссылок на дополнительные ресурсы по этой теме.

На практике с помощью кросс-фильтрации можно получить такие формы для просмотра данных, которые обычно создаются только с помощью конструкций "многие-ко-многим". Сказав это, важно признать, что двунаправленная перекрестная фильтрация не является конструкцией "многие ко многим". Реальная табличная конфигурации "многие-ко-многим" не поддерживается в конструкторе для табличных моделей в этом выпуске.

См. также раздел

Создание связей и управление ими в Power BI Desktop
Практический пример обработки простых связей "многие к человеку" в Power Pivot и табличных моделях
Разрешение связей типа "многие-ко-многим" с использованием кросс-табличной фильтрации DAX
Разрешение связей "многие-ко-многим" (блог SQLBI)