Créer des filtres dynamiques optimisés

Vous pouvez créer des filtres dynamiques basés sur des données sources externes pour réduire ainsi le nombre de définitions de filtre nécessaires.

Au lieu de gérer un jeu de filtres d'accès aux données codés de façon permanente pour un grand nombre d'utilisateurs, vous pouvez filtrer l'accès aux cellules du cube à partir de données sources externe, en fonction des noms de membre et d'utilisateur.
Pour ce faire, vous utilisez une syntaxe de définition de filtre dynamique, notamment la méthode @datasourceLookup et les variables $LoginUser et $LoginGroup. Les données sources externes sont un fichier CSV ou une table relationnelle. Pour des données sources relationnelles, vous pouvez charger le fichier .csv dans une table relationnelle.

Syntaxe de filtre dynamique

Utilisez la syntaxe de filtre dynamique pour créer des filtres flexibles que vous pouvez affecter à plusieurs utilisateurs et groupes.

Les rangées de filtre peuvent contenir les éléments suivants dans leur définition, en plus des expressions de membre.

$loginuser

Cette variable stocke la valeur de l'utilisateur actuellement connecté à l'exécution. Elle peut être utilisée avec la méthode @datasourcelookup.

$logingroup

Cette variable stocke la valeur de tous les groupes auxquels appartient l'utilisateur actuellement connecté. Elle inclut les groupes directs et indirects. Si elle est utilisée avec la méthode @datasourcelookup, chaque groupe est consulté individuellement par rapport à la source de données.

@datasourcelookup

Cette méthode extrait les enregistrements à partir d'une source de données.

Syntaxe

@datasourcelookup (dataSourceName, columnName, columnValue, returnColumnName)
Paramètre Description
dataSourceName

Nom de la source de données externe définie dans Essbase. Pour une source de données au niveau de l'application, ajoutez le nom de l'application et une période comme préfixe du nom.

columnName

Nom de la colonne de la source de données pour rechercher la valeur columnValue indiquée.

columnValue

Valeur à rechercher dans columnName.

returnColumnName

Nom de la colonne de la source de données à partir de laquelle la liste de valeurs est retournée.

Description

Un appel @datasourcelookup est équivalent à l'interrogation SQL suivante :

select returnColumnName from dataSourceName where columnName=columnValue

@datasourcelookup consulte la source de données indiquée et recherche les enregistrements dans lesquels columnName contient columnValue. Si vous spécifiez columnValue comme $loginuser, cette méthode recherche les enregistrements dans lesquels columnName contient le nom de l'utilisateur actuellement connecté.

Essbase forme la définition de filtre en combinant les éléments de la liste comme chaîne séparée par des virgules. Si un enregistrement contient des caractères spéciaux, des espaces ou uniquement des chiffres, il est automatiquement entouré par des guillemets.

Exemples

Entourez les paramètres par des guillemets.

L'appel suivant consulte une source de données globale et retourne la liste des noms de magasins, où Mary est le gestionnaire du magasin.

@datasourceLookup("StoreManagersDS","STOREMANAGER","Mary","STORE")

L'appel suivant consulte une source de données au niveau de l'application et retourne la liste des noms de magasins, où l'utilisateur actuellement connecté est le gestionnaire du magasin.

@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")

L'appel suivant consulte une source de données au niveau de l'application et retourne la liste des noms de magasins, où le rayon de magasin correspond à l'un des groupes auquel appartient l'utilisateur actuellement connecté.

@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","$logingroup","STORE")

Si l'utilisateur connecté appartient aux 3 groupes, la méthode @datasourcelookup ci-dessus retourne toutes les valeurs de colonne correspondantes pour chaque groupe.

Flux de travail pour la création de filtres dynamiques

Utilisez le flux de travail général suivant pour créer des filtres dynamiques.

Ce flux de travail de filtres dynamiques suppose que vous ayez déjà un cube et que vous ayez provisionné les utilisateurs et les groupes.

  1. Identifiez une source de données, qu'il s'agisse d'un fichier ou d'une source relationnelle.
  2. Définissez la connexion et la source de données dans Essbase, soit au niveau global, soit au niveau de l'application.
  3. Créez des filtres au niveau du cube, à l'aide de la section Filtres de l'inspecteur de la base de données.
  4. Définissez des rangées pour chaque filtre, à l'aide de la syntaxe de filtre dynamique pour utiliser la variable $loginuser, la variable $logingroup et la méthode @datasourcelookup, le cas échéant.
  5. Affectez les filtres à des utilisateurs ou à des groupes.
  6. Si vous avez affecté le filtre à un groupe, affectez le groupe à l'application à filtrer, à l'aide de la section Autorisations de l'inspecteur d'application.

Exemple de filtre dynamique

Le filtre dynamique suivant fonctionne avec le cube nommé Efficient.UserFilters, disponible dans la galerie comme exemple de modèle.


Filtre dynamique avec trois rangées accordant à l'utilisateur connecté un accès en lecture des métadonnées.

Pour apprendre à créer et à appliquer ce filtre dynamique, téléchargez le modèle de classeur, Efficient_Filters.xlsx, à partir de la section Technique de la galerie, et suivez les instructions du fichier README dans le classeur. La galerie est disponible dans la section Fichiers de l'interface Web d'Essbase.