IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SSAS Discussion :

[SSAS] Restriction d'accès sur une dimension [Fait]


Sujet :

SSAS

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut [SSAS] Restriction d'accès sur une dimension
    Bonjour,

    J'utilise Analysis Services 2005 et je suis novice dans ce domaine.

    J'ai crée un cube qui est utilisé par plusieurs utilisateurs et tout fonctionne correctement.

    Mon problème : Limiter les informations du cube en fonction de l'utilisateur connecté.

    J'ai crée un rôle et j'essaie de limiter le périmètre d'une dimenssion en fonction de l'utilisateur connecté.

    J'ai vu dans la doc que la fonction USERNAME() permettait de récupérer le compte de la personne connecté, mais je ne sais pas écrire la requête MDX pour limter les données d'une dimenssion.

    Quelqu'un a t-il la solution ?

    Merci d'avance.

  2. #2
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 56
    Points : 67
    Points
    67
    Par défaut Rôle
    Je suppose que tu veux restreindre l'accès des utilisateurs à certains membres d'une dimension, Geography par exemple. Il te faut donc limiter les jeux de membres avec une requete MDX dans ton rôle.
    Exemple MDX qui limite l'accès d'un rôle au membre Europe et ses descendants
    Ancestor(Geography.CurrentMember,[Continent]) IS Europe

    Voir la doc en ligne SQL SERVER
    http://msdn.microsoft.com/fr-fr/library/ms174590.aspx

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Précision
    Petite précision par rapport à mon problème : Pour reprendre ton exemple, si un continent est sous la responsabilité d'un ou plusieurs utilisateur, je souhaite filtrer la dimenssion en fonction de l'utilisateur qui se connecte au cube (à partir de son compte window). le but étant de ne pas lui montrer ce qu'il n'a pas à voir.
    Evidement le périmètre d'un utilisateur peut bouger, donc je ne peux pas mettre de valeur en dur dans ma requête MDX.

    je ne maîtrise pas MDX mais ça pourrait donner ça -->

    Ancestor(Geography.CurrentMember,[DroitsUser]) IS USERNAME()

    En tout cas, Merci Eauderose de pour ta réponse et je vais étudier l'aide en ligne.

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 56
    Points : 67
    Points
    67
    Par défaut SSAS
    Je crois avoir compris ton besoin mais la solution n'est pas triviale.

    Sur la base de l'exemple adventureworks, Il faut combiner l'utilisation des rôles, d'une dimension du type DimEmployee et de la fonction MDX UserName qui permet de récupérer domain-name\user-name.

    Etape 1: il te faut disposer comme dans AdventureWorkDW d'une DimEmployee possédant des ParentEmployeeKey and EmployeeKey pour constituer ta hiérarchie d'utilisateurs et d'un attribut LoginID où tu stockes le domain-name\user-name.

    Etape 2: dans ta dimension employee, il faut définir un membre par défaut lors de l'accès au cube pour l'attribut de dimension LoginID. à l'aide d'une requête MDX dans la propriété defaultMember (on s'accroche !):

    Filter([Employee].[Employees].Members,[Employee].[Employees].CurentMember.Properties.("LoginID")= UserName).Item(0)

    Je définis le jeu de membres par défaut de ma dimension employee comme étant ceux dont l'attribut LoginID est égal à UserName et je prend le premier membre de ce jeu.

    Etape 3: je suppose que tes utilisateurs dispose de comptes locaux sur ta machine SSAS.

    Je définis un nouveau rôle pour mon cube et j'ajoute mes utilisateurs sous la forme domain-name\user-name. Je coche le ReadDefinition sur l'onglet datasource Adventure Works et read sur l'onglet Cube.

    Dans l'onglet Rôle...Données de la Dimension...Dimension Employee reprendre l'expression MDX:
    Filter([Employee].[Employees].Members,[Employee].[Employees].CurentMember.Properties.("LoginID")= UserName)

    On peut envisager cette fois ci de retourner un jeu de membres

    Etape 4: je processe le cube ...et je teste.

    Un exemple utilisé avec Proclarity comme client:

    http://www.sqlserveranalysisservices...mberinSSAS.htm

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut SSAS
    Merci Eauderose pour ta contribution. Je suis surpris que ce soit si compliqué car le besoin me semble légitime. Je vais me lancer et tester ta solution.

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 572
    Points : 341
    Points
    341
    Par défaut
    Bonjour,
    Citation Envoyé par croquetteandco Voir le message
    Merci Eauderose pour ta contribution. Je suis surpris que ce soit si compliqué car le besoin me semble légitime. Je vais me lancer et tester ta solution.
    Tu peux créer un rôle par type d'utilisateurs puis dans ce rôle autoriser le Read et le Local Cube puis dans Dimension Data tu sélectionnes la Dimension De Cube dont tu souhaites filtrer les membres. Tu coches ceux que tu veux garder pour le rôle en cours. Dans Advanced tu vas cocher Enable Visual Total. Membership pour le reste.

    a+,=)
    -=Clement=-

Discussions similaires

  1. [SSAS][2k5]Restriction d'accès sur cube
    Par tonitoBI dans le forum SSAS
    Réponses: 5
    Dernier message: 26/01/2009, 12h50
  2. Réponses: 1
    Dernier message: 15/07/2008, 20h54
  3. Réponses: 2
    Dernier message: 08/07/2008, 11h28
  4. Restriction d'accès sur une URL Spécifique
    Par elspliffo dans le forum Apache
    Réponses: 1
    Dernier message: 16/10/2007, 10h57
  5. Réponses: 13
    Dernier message: 11/08/2004, 11h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo