Этого можно добиться двумя способами - определить фильтры при встраивании отчета или с помощью Безопасность на уровне строк .
При встраивании элементов Power BI выинициализация конфигурации . Одним из свойств этого объекта являются фильтры, которые должны быть предварительно применены к отчету при загрузке. В настоящее время это поддерживаемые типы фильтров:
export enum FilterType {
Advanced = 0,
Basic = 1,
Unknown = 2,
IncludeExclude = 3,
RelativeDate = 4,
TopN = 5,
Tuple = 6
}
Эти типы соответствуют фильтрам, которые можно применять в отчете при отображении в браузере или в Power BI Desktop. Для получения дополнительной информации о том, какие свойства имеет каждый тип фильтра и как его использовать, см. Страницу Фильтры в документации, но, например, базовый фильтр должен определить таблицу и столбец, к которым будет применяться фильтр,оператор сравнения и, конечно, значения, например:
const basicFilter: pbi.models.IBasicFilter = {
$schema: "http://powerbi.com/product/schema#basic",
target: {
table: "Store",
column: "Count"
},
operator: "In",
values: [1,2,3,4],
filterType: 1 // pbi.models.FilterType.BasicFilter
}
или
const basicFilter = {
$schema: "http://powerbi.com/product/schema#basic",
target: {
table: "Store",
column: "Count"
},
operator: "In",
values: [1,2,3,4],
filterType: 1 // pbi.models.FilterType.BasicFilter
}
Затем установите этот фильтр в конфигурации до встраивания:
var config = {
type: embedType,
accessToken: accessToken,
tokenType: tokenType,
embedUrl: embedUrl,
id: embedId,
dashboardId: dashboardId,
permissions: permissions,
settings: {
filterPaneEnabled: false,
navContentPaneEnabled: true
},
filters: [basicFilter]
};
Примечание,что в этом случае вы должны скрыть панель фильтра, установив filterPaneEnabled: false
, в противном случае пользователь увидит предварительно примененный фильтр на панели фильтров и сможет его изменить или удалить! Но если вы скроете панель фильтров, это ограничит возможности пользователей анализировать данные, используя только слайсеры и другие параметры, представленные в самом отчете. Таким образом, использование RLS может быть лучшей идеей, но для этого требуется выделенная емкость для вашего рабочего пространства (т. Е. Покупка Power BI Premium или Power BI Embedded).
Для использования RLS вы должны определить один илибольше ролей в вашем отчете. Для каждой роли будет определено выражение DAX для фильтрации данных. Затем для каждого из ваших пользователей вы можете решить, какую роль или роли назначить, и в отчете будут показаны только данные, доступные для этих ролей. Затем используйте полученный токен AAD для вызова GenerateTokenInGroup REST API и передачи ролей , которые вы хотите, чтобы ваш пользователь имел в теле запроса:
{
"accessLevel": "View",
"identities": [
{
"username": "john@contoso.com",
"roles": [
"sales",
"marketing"
],
"datasets": [
"cfafbeb1-8037-4d0c-896e-a46fb27ff229"
]
}
]
}
Затем используйте полученный токен для встраивания отчета и не забудьте изменить значение свойства tokenType
в конфигурации на 1 (встраивать) вместо 0 (AAD), если это необходимо.
Таким образом, вы можете оставить панель фильтров видимой, потому что движок будет применять политики безопасности под капотом.