Création de filtres dynamiques efficaces

Vous pouvez créer des filtres dynamiques en fonction de données source externes afin de réduire le nombre de définitions de filtre nécessaires.

Au lieu de gérer un ensemble de filtres d'accès aux données codés en dur pour de nombreux utilisateurs, vous pouvez filtrer l'accès aux cellules de cube à partir de données source externes, en fonction des noms d'utilisateur et de membre.
Pour ce faire, utilisez la syntaxe de définition de filtre dynamique, y compris la méthode @datasourceLookup, ainsi que les variables $LoginUser et $LoginGroup. Vos données source externes sont un fichier .csv ou une table relationnelle. Pour des données source 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 lignes de filtre peuvent contenir les éléments suivants dans le cadre de la définition, ainsi que des expressions de membre.

$loginuser

Cette variable stocke la valeur de l'utilisateur connecté au moment de l'exécution. Elle peut être utilisée en association 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. Lorsque vous l'utilisez conjointement à la méthode @datasourcelookup, chaque groupe est individuellement recherché dans la source de données.

@datasourcelookup

Cette méthode extrait des 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 de niveau application, ajoutez au nom un préfixe contenant le nom de l'application et une période.

columnName

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

columnValue

Valeur à rechercher dans columnName.

returnColumnName

Nom de la colonne de source de données à partir de laquelle renvoyer une liste de valeurs.

Description

Un appel @datasourcelookup est équivalent à la requête SQL suivante :

select returnColumnName from dataSourceName where columnName=columnValue

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

Essbase constitue la ligne de définition de filtre en associant les éléments de liste sous la forme d'une chaîne séparée par des virgules. Si un enregistrement contient des espaces, des caractères spéciaux ou uniquement des chiffres, ils sont placés entre guillemets.

Exemples

Placez les paramètres entre guillemets.

L'appel suivant recherche une source de données globale et renvoie la liste des noms de magasin où Mary est la responsable (store manager).

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

L'appel suivant recherche une source de données de niveau application et renvoie la liste des noms de magasin où l'utilisateur actuellement connecté est le responsable (store manager).

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

L'appel suivant recherche une source de données de niveau application. Il renvoie ensuite la liste des noms de magasin où le service de magasin correspond à l'un des groupes auxquels appartient l'utilisateur connecté.

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

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

Workflow pour la création de filtres dynamiques

Utilisez le workflow général suivant pour créer des filtres dynamiques.

Pour ce workflow de filtres dynamiques, il est supposé que vous avez déjà un cube, ainsi que des groupes et des utilisateurs provisionnés.

  1. Identifiez une source de données, s'il s'agit d'un fichier ou d'une source relationnelle.
  2. Définissez la connexion et la source de données dans Essbase, globalement ou au niveau de l'application.
  3. Créez des filtres au niveau du cube en utilisant la section Filtres de l'inspecteur de base de données.
  4. Définissez les lignes de filtre pour chaque filtre à l'aide de la syntaxe de filtre dynamique pour employer 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, via 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 lignes octroyant à l'utilisateur connecté l'accès en lecture aux métadonnées.

Pour savoir comment créer et appliquer ce filtre dynamique, téléchargez le modèle de classeur d'application Efficient_Filters.xlsx dans la section Technique de la galerie et suivez les instructions README du classeur. La galerie est disponible dans la section Fichiers de l'interface Web Oracle Analytics Cloud – Essbase.