Статика

Фильтрация по идентификатору

Предположим, вы хотите, чтобы пользователь мог просматривать данные о продажах только по двум странам, которые в таблице измерений имеют идентификаторы 1 и 3. В нашем примере мы будем использовать данные таблицы Города, в которой есть столбец ID. В этом столбце идентификаторы 1 и 3 соответствуют странам Россия и Китай. Для создания правила фильтрации мы воспользуемся следующим выражением:

'Города' [ID] IN {1, 3}

Данная формула производит фильтрацию таблицы Города, оставляя только те строки, у которых значение поля ID равно 1 или 3. Таким образом, будут отобраны страны Россия и Китай:

ex1.png

Фильтрация по строке

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

Предположим, вам необходимо предоставить доступ только к тем данным, которые относятся к определенной компании. В нашем примере это Contoso, которая указана в столбце Brandname таблицы dimproduct. В этом случае нам необходимо использовать следующее выражение:

'Product' [Brandname] IN {"Contoso"}

Данная формула производит фильтрацию таблицы Product, оставляя только те строки, у которых значение в столбце Brandname соответствует Contoso. Таким образом, пользователь получит доступ только к тем данным, которые относятся к этой компании.

static2.png

При необходимости указания нескольких строковых значений (в нашем примере компаний), необходимо перечислить их через запятую в фигурных скобках. Например:

'Product' [Brandname] IN {"Contoso", "Fabricam"}

Указание нескольких условий в одном атрибуте с помощью AND

В данном примере мы рассмотрим ситуацию, в которой нам необходимо ограничить доступ ко всем данным, кроме тех, которые относятся к столицам определенных стран.

Для этого давайте представим, что у нас есть таблица Локация, в которой присутствует два столбца: Country и IsCapital. В столбце Country перечислены различные страны мира, а в столбце IsCapital используется два значения: 1 – если город является столицей и 0 для остальных городов.

Для достижения нашей цели мы укажем два условия в одном атрибуте с помощью функции AND. Мы выберем строки, где значение столбца IsCapital равно 1 и значение столбца Country соответствует определенной стране. Например, если мы хотим указать столицы Франции и России, наше выражение будет выглядеть так:

AND ('Локация'[Country] IN {"Франция","Россия"}, 'Локация'[IsCapital] IN {"1"})

Указание нескольких условий в нескольких атрибутах

Теперь давайте представим, что нам необходимо предоставить доступ определенному кругу пользователей (например, менеджерам) только к тем данным, которые относятся к ограниченному набору стран. Рабочие таблицы:

  • Локация, в которой есть столбец Country с перечнем стран;

  • Должность, в которой есть столбец ID с идентификаторами позиций сотрудников.

Мы хотим, чтобы менеджеры компании (сотрудники с идентификатором 1) имели доступ только к тем данным, которые относятся к России и Китаю. Для этого мы создадим роль, в которой укажем два выражения: одно будет давать право на доступ к странам Россия и Китай, второе будет предоставлять доступ к этим данным только менеджерам.

Для этого для таблицы Локация мы введем следующее выражение:

'Локация'[Country] IN {"Китай","Россия"}

Для таблицы Должность укажем следующее:

'Должность'[ID] IN {1}

После создания роли мы присвоим ее необходимым пользователям или группам пользователей.

Комбинирование ролей для гибкой настройки доступа

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

'Должность'[ID] IN {1}

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

Предоставление доступа к расширенной информации пользователю, который в ходит в группу, не имеющей права просмотра этих данных

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

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

'Локация'[City] IN {"Пекин"}

Роль группы пользователей

Роль пользователя

Роль группы пользователей

Роль пользователя

Экранирование символов

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

Представим, что вы хотите создать роль для доступа к данным, относящимся к компании, которая указана в загруженной таблице как ООО “ФлосТехнолоджи”. В этом случае для корректной работы формулы необходимо использовать дополнительные двойные кавычки для обозначения названия компании:

'Товары' [Компания] IN {"ООО ""ФлосТехнолоджи"""}


Смотрите также

Настройка статической RLS
Настройка динамической RLS