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 :

Diminution des performances sur membre calculé si sécurisation via role


Sujet :

SSAS

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Diminution des performances sur membre calculé si sécurisation via role
    Bonjour à tous,
    J'ai créé un cube comportant plusieurs membres calculés (des comptages, nombre de commandes, nombre de clients...).
    J'utilise les roles pour limiter les mesures visibles par les utilisateurs.
    Sur un role qui a le droit à toutes les mesures, je n'ai aucun problème de performance. Par contre sur un role qui a au moins 1 mesure non visible (n'importe laquelle) le temps d'affichage des mesures calculées est très long. Plusieurs minutes, au lieu de 1s pour l'utilisateur sans sécurité.
    Pouvez-vous m'aider car ces mesures calculées sont inutilisables.
    Merci !

  2. #2
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    Bonjour!

    Tu as implémenté ça comment? Avec de la Cell Data Security?

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Oui c'est ca, avant-dernier onglet du paramétrage du role

  4. #4
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    Euh l'avant dernier onglet c'est Dimension Data non? (Je fais du SSIS là en ce moment et je n'ai pas de projet AS ouvert mais pour moi le Rôle c'est

    - Cubes
    - Cell Data
    - Dimensions
    - Dimension Data
    - Mining Structures

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Oui c'est ça
    Désolé je suis sur une version française
    Donc j'utilise la sélection des données de dimension, qui permet également de choisir les mesures auquelles les utilisateurs ont le droit.
    A part le probleme de performance, ca marche comme je le souhaite.

  6. #6
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    Tu aurais un exemple des mesures calculées en question? Une qui rame bien? Tu as relevé quelques compteurs perfmon sur les requêtes avec et sans rôle? (Tu peux utiliser MDX Studio, partie Profiler pour ça. Par contre n'oublie pas de le lancer en Runas Admin sinon tu n'auras pas les compteurs )

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Voici la requete MDX :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    WITH MEMBER [Measures].[Nb Commandes2]
     AS iif(
    count(nonempty(Descendants([Commande].[Type-Commande-Ligne].CurrentMember,[Commande].[Type-Commande-Ligne].[Num Commande Jde]),[Measures].[01 CAF]))=0, 
    null,
    count(nonempty(Descendants([Commande].[Type-Commande-Ligne].CurrentMember,[Commande].[Type-Commande-Ligne].[Num Commande Jde]),[Measures].[01 CAF])))
     
    SELECT 
      {
        [Measures].[01 CAF]
       ,[Measures].[Nb Commandes2]
      }
      DIMENSION PROPERTIES PARENT_UNIQUE_NAME  ON COLUMNS
     ,NON EMPTY 
        Hierarchize
        (
          AddCalculatedMembers
          (
            DrillDownMember
            (
              {
                {
                  DrillDownMember
                  (
                    {
                      {
                        DrillDownLevel({[Géographie].[Région-Secteur-Commune].[All]})
                      }
                    }
                   ,{[Géographie].[Région-Secteur-Commune].[Région].&[85]}
                  )
                }
              }
             ,{[Géographie].[Région-Secteur-Commune].[Secteur].&[117]}
            )
          )
        )
      DIMENSION PROPERTIES 
        PARENT_UNIQUE_NAME
       ,[Géographie].[Région-Secteur-Commune].[Secteur].[Région]
       ,[Géographie].[Région-Secteur-Commune].[Commune].[Code Insee]
       ,[Géographie].[Région-Secteur-Commune].[Commune].[Code Secteur]
       ,[Géographie].[Région-Secteur-Commune].[Commune].[Département]
       ,[Géographie].[Région-Secteur-Commune].[Commune].[Id Commune]
       ,[Géographie].[Région-Secteur-Commune].[Commune].[Secteur]
       ON ROWS
    FROM [CAF]
    WHERE 
      (
        [Export YN].[Type de Vente].[Code Type Vente].&[A]
       ,[Calendrier CAF].[Calendrier-Civil].[Année Civile].&[2011]
      )
    Dans les compteurs, j'ai environ 1s avec un compte admin (sans restriction sur les mesures calculées) et 5min avec un compte restrinct. Tous les autres compteurs sont à 0.

    Merci pour tes réponses !

  8. #8
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    Bon juste parce que ça a été mon boulot du jour !!
    Pour revenir à ton problème si MDX Studio ne te renvoie pas les compteurs, essaie de suivre (en capturant la valeur avant et après) le compteur Total Cells Covered dans Perfmon. Si tu vois une grosse différence entre les deux cela signifie que SSAS décide de passer d'un plan Block-Computed à un plan Cell-By-Cell. J'ai déjà entendu parler de ça sur des Denied Sets sans le voir forcément de mes yeux, et si effectivement c'est ce qui se passe on peut modifier des settings serveur non documentés mais ça passe forcément par un cas de support chez Microsoft.
    Vu par moi, ton membre calculé ne semble pas avoir de caractéristiques incroyables sur le plan de la BC. Juste sauf erreur il pourrait être remplacé par un DistinctCount si [Num Commande Jde] est le niveau fin non?

  9. #9
    Membre à l'essai
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Salut collègue,

    si tous les autres compteurs sont à 0, c'est que le perfmon ne fonctionne pas...De mémoire, il faut le lancer en local sur la machine.

    Pour agrémenter la discussion, avant d'ouvrir le dossier support chez microsoft, voici les compteurs avec un compte "administrateur" :
    Time : 140 ms
    Calc covers : 0
    Cells calculated : 0
    Sonar subcubes : 644
    NON EMPTYs : 638
    Autoexists : 1
    EXISTINGs : 0
    SE queries : 0
    Flat cache insert : 1
    Cache hits : 32
    Cache misses : 0
    Cache inserts : 0
    Cache lookups : 32
    Memory Usage KB : 0
    et les mêmes avec un compte dans un role :

    Time : 6 min 38 sec 770 ms
    Calc covers : 0
    Cells calculated : 276453248
    Sonar subcubes : 796
    NON EMPTYs : 1392
    Autoexists : 278
    EXISTINGs : 48
    SE queries : 332
    Flat cache insert : 14
    Cache hits : 9216
    Cache misses : 272
    Cache inserts : 98
    Cache lookups : 9472
    Memory Usage KB : -88780
    (François, un copier/coller de résultat perfmon, je les mets entre QUOTE ou entre CODE ? J'ai pas envie de me prendre également un coup de massue )

    Sinon notre SSAS est en version 10.50.2772.0 (Standard FR).
    Cela correspond à SQL Serveur 2008 R2 SP1 CU2.
    la CU3 est sortie en Octobre :
    http://support.microsoft.com/kb/2591748
    mais aucun FIX ne concerne ton problème...

    Fred

  10. #10
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    (François, un copier/coller de résultat perfmon, je les mets entre QUOTE ou entre CODE ? J'ai pas envie de me prendre également un coup de massue )
    QUOTE c'est cool. Et c'est très bien La gestion du CODE et de QUOTE est assez simple, c'est juste fait pour améliorer la lecture du forum en isolant les éléments importants. C'es plus vous pour que pour l'équipe de modération. La distinction entre les deux peut être floue, mais disons que CODE est à réserver
    - au code quel qu'il soit
    - à toute "citation" qui nécessiterait une police à chasse fixe (extrait de fichier, exemple de layout de rapport...
    QUOTE concernant les citations, les messages d'erreur....

    Faut pas en vouloir à la modération, ça fait une semaine qu'on migre des topics entiers du principal vers les sous-forum en faisant des ajouts de balises.

    Pour revenir au problème:

    si tous les autres compteurs sont à 0, c'est que le perfmon ne fonctionne pas...De mémoire, il faut le lancer en local sur la machine.
    Oui ça peut être une question de droits ou ça potentiellement. Mais en général je m'arrange toujours pour le lancer sur la machine si c'est possible.

    Cells calculated : 276453248
    Bon donc on est clairement dans le cas ou le plan choisi n'est pas le bon et que la Block Computation est shootée. En furetant un peu sur le web je viens de tomber là dessus et ça ressemble à votre problème non? http://social.msdn.microsoft.com/For...c-8de5c0a37587
    Le problème semble être exactement le même...

  11. #11
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Parfait le lien, c'est exactement ce qu'il me fallait.
    Voila ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    AVANT
     
    iif(
    count(nonempty(Descendants([Commande].[Type-Commande-Ligne].CurrentMember,[Commande].[Type-Commande-Ligne].[Num Commande Jde]),[Measures].[01 CAF]))=0, 
    null,
    count(nonempty(Descendants([Commande].[Type-Commande-Ligne].CurrentMember,[Commande].[Type-Commande-Ligne].[Num Commande Jde]),[Measures].[01 CAF])))
     
    APRES
     
    sum(
    Descendants([Commande].[Type-Commande-Ligne].CurrentMember,[Commande].[Type-Commande-Ligne].[Num Commande Jde]),
    iif(isempty([Measures].[01 CAF]),
    NULL,
    1))
    Plus aucun probleme de performance.
    Merci pour tout !

  12. #12
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    L'optimisation des Count(Filter()) et leur remplacement par des Sum(IIF()) est une chose, qui est connue et logique. Mais ici la BC doit se déclencher car on a seulement des Count() et le Filter ne l'empêche plus. Ce qui m'étonne et n'a rien de logique c'est que le comportement soit alors affecté par le rôle. As-tu exactement le même nombre de Cells calculées dans les deux cas? Le fait d'optimiser le Count(), et donc de modifier le plan de requête sous-jacent masque peut être le fait que les perfs soient encore différentes. Ou pas. Mais en tous les cas c'est un comportement anormal et assez angoissant je dois dire.

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/01/2012, 10h19
  2. Problème de performance sur un calcul en cascade
    Par mars13008 dans le forum SQL
    Réponses: 11
    Dernier message: 19/04/2011, 12h38
  3. [Qt Mobility] Qt Mobility 1.1.3, avec améliorations du binding Qt Quick et des performances sur Symbian
    Par johnlamericain dans le forum Bibliothèques
    Réponses: 4
    Dernier message: 01/03/2011, 21h37
  4. Optimisation des performances sur station SUN
    Par TiChabin972 dans le forum Général Java
    Réponses: 1
    Dernier message: 20/07/2007, 18h26

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