Création de filtres

Vous pouvez créer un filtre pour chaque ensemble de restrictions d'accès que vous devez appliquer aux valeurs de base de données Essbase. Vous n'avez pas besoin de créer des filtres distincts pour les utilisateurs ayant les mêmes besoins d'accès. Une fois le filtre créé, vous pouvez l'affecter à plusieurs utilisateurs ou groupes d'utilisateurs.

Remarques :

Si vous utilisez une fonction de calcul qui renvoie un ensemble de membres, tels que des enfants ou des descendants, et qu'elle renvoie un ensemble vide, le filtre de sécurité n'est pas créé. Une erreur est écrite dans le journal de l'application indiquant que la définition de région a été évaluée sur un ensemble vide.

Avant de créer un filtre, effectuez les actions suivantes :

  • Connectez-vous au serveur et sélectionnez la base de données associée au filtre.

  • Recherchez les filtres dans Limites dans les règles de dénomination.

Reportez-vous à Création de filtres.

Pour créer un filtre, vous pouvez également utiliser l'instruction Créer un filtre MaxL.

Filtrer les membres et filtrer les combinaisons de membres

L'accès aux valeurs de base de données Essbase peut être contrôlé en filtrant des membres entiers ou des combinaisons de membres. Le filtrage des membres affecte séparément des tranches entières de données pour ces membres. Le filtrage des combinaisons de membres affecte les données aux croisements de membres.

Figure 30-1 Comment les filtres affectent les relations entre les données et/ou


Cette image présente deux cubes : le cube de gauche illustre l'impact des relations OR ; le cube de droite illustre l'impact des relations AND.

Remarques :

Le filtrage sur les combinaisons de membres (relation ET) ne s'applique pas à la méta-zone. Metaread filtre chaque membre séparément (relation OR).

Filtrer les membres séparément

Pour filtrer toutes les données d'un ou de plusieurs membres d'outline Essbase, définissez l'accès de chaque membre sur sa propre ligne. Les définitions de filtre sur des lignes distinctes d'un filtre sont traitées par une relation OU.

Par exemple, pour bloquer l'accès à Sales ou Jan, supposons que le filtre suivant est affecté à l'utilisateur KSands :

  • Accès : Aucun. Spécification du membre : Sales.

  • Accès : Aucun. Spécification du membre : Jan.

La prochaine fois que l'utilisateur KSands se connecte à Sample Basic, sa vue de feuille de calcul de la marge bénéficiaire pour Qtr1 montre qu'elle n'a pas accès aux valeurs de données pour le membre Sales ou le membre Jan, qui sont marquées avec #NOACCESS. Toutes les données de Sales sont bloquées à partir de la vue, ainsi que toutes les données de janvier, à l'intérieur et à l'extérieur du membre Sales. Les données relatives au coût des marchandises vendues (COGS), un frère ou une sœur des ventes et un enfant de la marge, sont disponibles, à l'exception du coût des marchandises vendues pour janvier.

Figure 30-2 Résultats du blocage des filtres pour l'accès aux ventes ou janvier


Cette image montre une feuille de calcul dans laquelle les cellules bloquées par des filtres sont marquées avec #NOACCESS.

Filtrer les combinaisons de membres

Pour filtrer les données des combinaisons de membres Essbase, définissez l'accès pour chaque combinaison de membres à l'aide d'une ligne dans l'éditeur de filtre. Dans les définitions de filtre, deux ensembles de membres séparés par une virgule sont traités comme une union de ces deux ensembles de membres (relation AND).

Par exemple, supposons que le filtre suivant soit affecté à l'utilisateur RChin : Accès : Aucun. Spécification du membre : Sales, Jan.

La prochaine fois que l'utilisateur RChin se connecte à Sample Basic, sa vue de feuille de calcul de la marge bénéficiaire pour Qtr1 montre qu'elle n'a pas accès à la valeur de données à l'intersection des membres Sales et Jan, qui est marquée avec #NoAccess. Les données de vente de janvier sont bloquées. Cependant, les données de ventes pour les autres mois sont disponibles et les données hors ventes pour janvier sont disponibles.

Figure 30-3 Résultats du blocage des filtres sur l'accès aux ventes, Jan


Cette image présente une feuille de calcul dans laquelle les données de vente pour Jan sont bloquées pour l'utilisateur.

Filtrer à l'aide de variables de substitution

Les variables de substitution Essbase vous permettent de gérer les informations qui changent régulièrement. Un nom et une valeur sont affectés à chaque variable. Un gestionnaire de base de données peut modifier la valeur à tout moment. Lorsqu'une variable de substitution est spécifiée dans un filtre, la valeur au moment de l'accès aux données est appliquée.

Par exemple, si vous voulez qu'un groupe d'utilisateurs ne voie les données que pour le mois en cours, vous pouvez configurer une variable de substitution nommée CurMonth et définir un filtre (MonthlyAccess) dans lequel vous spécifiez l'accès, en utilisant &CurMonth pour le nom du membre. L'utilisation d'une esperluette (&) au début d'une spécification l'identifie comme une variable de substitution au lieu d'un nom de membre dans Essbase. Assignez le filtre MonthlyAccess aux utilisateurs appropriés.

Chaque mois, vous devez uniquement remplacer la valeur de la variable de substitution CurMonth par le nom de membre du mois en cours, tel que Jan, Feb, etc. La nouvelle valeur s'appliquera à tous les utilisateurs affectés.

Reportez-vous à Implémentation de variables pour la modification des informations.

Filtrer avec fonctions d'attribut

Vous pouvez utiliser des filtres pour restreindre l'accès aux données Essbase pour les membres de base partageant un attribut particulier. Pour filtrer les données des membres dont certains attributs sont définis dans une dimension d'attribut, utilisez le membre d'attribut en combinaison avec la fonction @ATTRIBUTE ou la fonction @WITHATTR.

Remarques :

Les fonctions @@ATTRIBUTE et @WITHATTR sont des fonctions de jeu de membres. La plupart des fonctions de jeu de membres peuvent être utilisées dans les définitions de filtre.

Par exemple, supposons que l'utilisateur PJones se voit affecter le filtre suivant : Accès : Aucun. Spécification du membre : @ATTRIBUTE("Caffeinated_False").

La prochaine fois que l'utilisateur PJones se connecte à Sample Basic, sa vue de feuille de calcul des ventes de colas du premier trimestre en Californie montre qu'il n'a pas accès aux valeurs de données pour les membres de dimension de base associés à Caffeinated_False. Les données de vente de Caffeine Free Cola sont bloquées. Notez que Caffeine Free Cola est un membre de base et que Caffeinated_False est un membre associé de la dimension d'attribut Caffeinated (non affichée dans la vue Feuille de calcul).

Figure 30-4 Résultats du blocage des filtres Accès aux produits sans caféine


Cette image montre une feuille de calcul dans laquelle les données de vente pour Caffeine Free Cola sont bloquées pour l'utilisateur.

Filtres de métadonnées

Le filtrage des métadonnées fournit un filtrage des données et une couche de sécurité supplémentaire. Avec le filtrage des métadonnées, un administrateur Essbase peut enlever des membres d'outline de la vue d'un utilisateur, en donnant accès uniquement aux membres qui l'intéressent.

Lorsqu'un filtre est utilisé pour appliquer l'autorisation MetaRead à un membre :

  1. Les données de tous les ancêtres de ce membre sont masquées dans la vue de l'utilisateur du filtre.

  2. Les données et les métadonnées (noms de membre) de tous les semblables de ce membre sont masquées dans la vue de l'utilisateur du filtre.

Filtres dynamiques

Vous pouvez créer des filtres de sécurité dynamiques Essbase en fonction de données source externes afin que le nombre de définitions de filtre nécessaires soit réduit. Pour ce faire, utilisez les définitions de filtre dynamique, y compris la méthode @datasourceLookup, ainsi que les variables $LoginUser et $LoginGroup.

Remarques :

Les filtres dynamiques prennent en charge les fonctions SQL telles que LOWER, UPPER et CAST, y compris les expressions imbriquées. Vous pouvez utiliser ces fonctions directement avec les fonctions d'ensemble de membres pour créer des définitions de filtre d'accès plus flexibles et plus précises.

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 conjointement 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.

Remarques :

Les noms de colonne de source de données ne doivent pas utiliser de mots réservés SQL tels que USER, GROUP ou ROLE. L'utilisation de mots réservés peut entraîner des erreurs d'analyse SQL ou un comportement de filtre inattendu.

Description

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

select returnColumnName from dataSourceName where columnName=columnValue

@datasourcelookup recherche la source de donnée 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.

Remarques :

Le paramètre @options peut être utilisé pour contrôler le comportement d'échec de la recherche. Lorsque strictLookup=true, les échecs de recherche sont traités comme des erreurs fatales et aucun résultat de filtre n'est renvoyé.

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 des colonnes correspondantes pour chaque groupe.

L'exemple suivant utilise des fonctions SQL dans une expression de filtre dynamique.

@datasourceLookup("Sample.StoreManagersDS",LOWER(CAST("STOREMANAGER" AS VARCHAR(30))),LOWER("$loginuser"),"STORE")

L'exemple suivant effectue une évaluation sensible à la casse à l'aide de fonctions de casse explicites.

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

L'exemple suivant renvoie les magasins appartenant au service Ventes ou Marketing.

@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","Sales","Marketing","STORE")

L'exemple suivant utilise une fonction de jeu de membres avec @datasourceLookup.

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

L'exemple suivant utilise des fonctions d'ensemble de membres imbriquées avec une recherche de source de données.

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

L'exemple suivant utilise un comportement de recherche strict. En cas d'échec de la recherche, aucun résultat de filtre n'est renvoyé.

@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE",@options(strictLookup=true))

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. Accédez au cube et choisissez Filtres.
  4. Définissez les lignes de filtre pour chaque filtre à l'aide de la syntaxe de filtre dynamique afin d'employer la variable $loginuser, la variable $logingroup et l'option @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. Accédez à l'application et choisissez Autorisations.

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 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 Essbase.