Partager via


Tri des membres d'attribut sur la base d'un attribut secondaire

Au cours de la leçon 3, vous avez appris à trier des membres d'attribut en fonction de leur nom ou de la valeur de leur clé. Vous avez également appris à utiliser une clé de membre composite pour modifier les membres d'attribut et l'ordre de tri. Pour plus d'informations, consultez Modification de la dimension Time. Il se peut toutefois que vous ayez parfois besoin de trier les membres d'attribut en fonction d'un attribut secondaire pour obtenir un ordre de tri spécifique, par exemple si un tri basé sur le nom et la clé de l'attribut ne vous convient pas. Afin de trier un attribut en se basant sur un nom ou une clé d'attribut secondaire, vous devez utiliser un attribut secondaire qui est lié à cet attribut.

Les relations d'attributs définissent les relations ou les dépendances entre les attributs. Dans une dimension qui est basée sur une seule table relationnelle, tous les attributs sont généralement liés les uns aux autres via l'attribut clé. Cela est dû au fait que tous les attributs d'une dimension fournissent des informations sur les membres liés par l'attribut clé de la dimension aux faits de la table de faits pour chaque groupe de mesures associé. Dans une dimension basée sur plusieurs tables, les attributs sont généralement liés par une clé de jointure entre les tables.

Toutefois, les utilisateurs peuvent souhaiter disposer d'autres informations sur des membres à un niveau précis dans une hiérarchie. Le Concepteur de dimensions permet de définir d'autres relations entre les attributs ou de modifier les relations par défaut pour augmenter les performances. Lorsque vous créez une relation d'attributs, la principale contrainte est de s'assurer que l'attribut référencé n'a qu'une seule valeur pour chaque membre dans l'attribut auquel il est lié. Lorsque vous définissez une relation entre deux attributs, vous pouvez définir une relation rigide ou flexible selon que les relations entre les membres doivent ou non évoluer dans le temps. Par exemple, un employé peut être muté dans une autre région mais une ville ne changera pas d'état. Si une relation est définie en tant que relation rigide, les agrégations d'attributs ne sont pas recalculées à chaque fois que la dimension est traitée de façon incrémentielle. Toutefois, si la relation entre les membres ne change pas, elle doit être traitée entièrement. Pour plus d'informations, consultez Relations d'attributs, Définition et configuration d'une relation d'attributs, Configuration des propriétés des relations d'attributs et Spécification des relations entre attributs dans une hiérarchie définie par l'utilisateur.

Au cours des tâches de cette rubrique, vous allez définir un nouvel attribut dans la dimension de temps basé sur une colonne existante dans la table de dimension sous-jacente. Vous allez utiliser ce nouvel attribut pour trier les membres de type mois calendaire par ordre chronologique et non par ordre alphabétique. Vous allez également définir un nouvel attribut dans la dimension Customer basé sur le calcul nommé que vous utiliserez pour trier les membres d'attribut Commute Distance. Au cours des tâches de la rubrique suivante, vous allez apprendre à utiliser les relations d'attributs pour augmenter les performances des requêtes.

Définition d'une relation d'attributs et d'un ordre de tri dans la dimension de temps

Pour définir une relation d'attributs et un ordre de tri dans la dimension de temps

  1. Ouvrez le Concepteur de dimensions pour la dimension de temps, puis vérifiez la propriété OrderBy de l'attribut Month Name dans la fenêtre des propriétés.

    Notez que les membres d'attribut Month Name sont triés en fonction de la valeur de leur clé.

  2. Affichez l'onglet Navigateur, vérifiez si la hiérarchie Calendar Time est sélectionnée dans la liste Hiérarchie, puis développez les niveaux de la hiérarchie définie par l'utilisateur pour vérifier l'ordre de tri appliqué pour les mois calendaires.

    Notez que les membres de la hiérarchie d'attributs sont triés en fonction des valeurs ASCII de leurs clés de membre, qui sont les mois et les années. Dans ce cas, le tri sur le nom ou la clé de l'attribut ne permet pas de trier les mois calendaires par ordre chronologique. Pour résoudre ce problème, vous devez trier les membres de la hiérarchie d'attributs en fonction d'un nouvel attribut, l'attribut MonthNumberOfYear. Vous allez créer cet attribut et le baser sur une colonne qui existe dans la table de dimension DimTime.

  3. Affichez l'onglet Structure de dimension pour la dimension de temps, cliquez avec le bouton droit sur MonthNumberOfYear dans le volet Vue de source de données et choisissez Nouvel attribut de colonne.

  4. Dans le volet Attributs, sélectionnez Month Number Of Year, dans la fenêtre des propriétés affectez à la propriété AttributeHierarchyEnabled la valeur False, à la propriété AttributeHierarchyOptimizedState la valeur NotOptimized et enfin à la propriété AttributeHierarchyOrdered la valeur False.

    Ces paramétrages vont permettre de masquer cet attribut aux utilisateurs et de réduire le temps de traitement. Ils doivent être définis ainsi car ce nouvel attribut sera utilisé uniquement pour trier les membres d'un autre attribut.

ms166763.note(fr-fr,SQL.90).gifRemarque :
Le tri alphabétique des propriétés dans la fenêtre correspondante simplifie cette tâche dans la mesure où ces trois propriétés sont triées de manière adjacente.
  1. Dans le volet Attributs, développez Date.
    Notez que tous les attributs de la dimension de temps sont liés directement à l'attribut Date. Cet attribut est la clé de membre qui lie les membres de dimension aux faits dans les groupes de mesures associés.
  2. Développez Month Name.
    Notez qu'aucune relation n'est définie entre l'attribut Month Name et l'attribut Month Number Of Year.
  3. Faites glisser l'attribut Month Number Of Year vers la balise <nouvelle relation d'attributs> sous l'attribut Month Name.
    Si vous auriez pu définir une relation supplémentaire, déplacer la relation existante entraîne une amélioration des performances de traitement et une réduction de la redondance. Vous avez correctement défini une relation entre l'attribut Month Number Of Year et l'attribut Month Name. Dans la fenêtre des propriétés, notez que la valeur par défaut de la propriété RelationshipType de la relation d'attribut Month Number Of Year est Flexible.
  4. Dans la fenêtre des propriétés, affectez à la propriété RelationshipType la valeur Rigid.
    Les relations entre les membres de l'attribut Month Name et de l'attribut Month Number Of Year ne changeront pas au fil du temps. Par conséquent, Analysis Services ne supprime pas les agrégations pour cette relation au cours du traitement incrémentiel. Si une modification survient, une erreur de traitement se produit au cours du traitement incrémentiel et vous devrez effectuer un traitement complet de la dimension. Vous êtes maintenant prêt à définir l'ordre de tri pour les membres de l'attribut Month Name.
    L'illustration suivante montre la propriété RelationshipType avec la valeur Rigid pour la relation d'attribut Month Number Of Year de l'attribut Month Name.
    Propriété RelationshipType avec la valeur Rigide
  5. Sélectionnez Month Name dans le volet Attributs puis, dans la fenêtre des propriétés, affectez à la propriété OrderBy la valeur AttributeKey et à la propriété OrderByAttribute la valeur Month Number Of Year.
    L'illustration suivante montre ces nouvelles propriétés dans la fenêtre des propriétés.
    Modifications des propriétés OrderBy et OrderByAttribute
  6. Dans le menu Générer, cliquez sur Déployer Analysis Services Tutorial.
  7. Une fois le déploiement terminé, affichez l'onglet Navigateur pour la dimension de temps, cliquez sur Reconnexion et parcourez les hiérarchies utilisateur Calendar Time et Fiscal Time pour vérifier si les mois sont maintenant triés par ordre chronologique.
    Notez que les mois sont bien triés par ordre chronologique, comme montré dans l'illustration suivante.
    Hiérarchie d'utilisateur modifiée par ordre chronologique

Définition des relations d'attributs et d'un ordre de tri dans la dimension Customer

Pour définir les relations d'attributs et un ordre de tri dans la dimension Customer

  1. Affichez l'onglet Structure de dimension dans le Concepteur de dimensions pour la dimension Customer.

  2. Dans le volet Attributs, sélectionnez l'attribut Commute Distance et vérifiez la propriété OrderBy dans la fenêtre des propriétés.

  3. Affichez l'onglet Navigateur puis parcourez les membres de la hiérarchie d'attributs Commute Distance.

    Notez que les membres de la hiérarchie d'attributs sont triés en fonction des valeurs ASCII de leur clé de membre. Dans ce cas, le tri sur le nom ou la clé de l'attribut ne permet pas de trier les distances parcourues par ordre croissant. Au cours de cette tâche, vous allez trier les membres de la hiérarchie d'attributs sur la base du calcul nommé CommuteDistanceSort qui attribue le numéro de tri approprié à chaque valeur distincte dans la colonne. Pour gagner du temps, ce calcul nommé a déjà été ajouté à la table Customer dans la vue de source de données de l'entrepôt de données Adventure Works. Vous pouvez afficher cette vue pour visualiser le script SQL qui est utilisé dans ce calcul nommé. Pour plus d'informations, consultez Définition de calculs nommés dans une vue de source de données (Analysis Services).

    L'illustration suivante montre les membres de la hiérarchie d'attributs Commute Distance, triés en fonction des valeurs ASCII de la clé de membre.

    Hiérarchie de l'attribut Distance domicile/travail

  4. Affichez l'onglet Structure de dimension dans le Concepteur de dimensions pour la dimension Customer, cliquez avec le bouton droit sur CommuteDistanceSort dans la table Customer du volet Vue de source de données et choisissez Nouvel attribut de colonne.

  5. Dans le volet Attributs, sélectionnez Commute Distance Sort, dans la fenêtre des propriétés, affectez à la propriété AttributeHierarchyEnabled de cet attribut la valeur False, à la propriété AttributeHierarchyOptimizedState la valeur NotOptimized et enfin à la propriété AttributeHierarchyOrdered la valeur False.

    Ces paramétrages vont permettre de masquer cet attribut aux utilisateurs et de limiter les ressources de traitement. Ils doivent être définis ainsi car ce nouvel attribut sera utilisé uniquement pour trier les membres d'un autre attribut.

  6. Dans le volet Attributs, développez Full Name.

    Notez que tous les attributs de la dimension Customer dérivés de la table Customer dans la vue de source de données du didacticiel Analysis Services sont liés par cet attribut.

  7. Développez Geography.

    Notez que tous les attributs de la dimension Customer dérivés de la table Geography dans la vue de source de données du didacticiel Analysis Services sont liés par l'attribut Geography.

  8. Sélectionnez Geography puis, dans la fenêtre des propriétés, affectez à la propriété AttributeHierarchyVisible la valeur False, à la propriété AttributeHierarchyOptimized la valeur NotOptimized et enfin, à la propriété AttributeHierarchyOrdered la valeur False.

    Étant donné que cet attribut ne sera pas utilisé pour l'exploration, ces paramètres masqueront cet attribut aux utilisateurs et permettront de réduire les temps de traitement. Si une hiérarchie d'attributs compte des propriétés de membre, elle doit être activée.

  9. Dans le volet Attributs, développez Commute Distance.

    Notez qu'aucune relation n'est définie entre cet attribut et l'attribut Commute Distance Sort.

  10. Faites glisser l'attribut Commute Distance Sort vers la balise <nouvelle relation d'attributs> sous l'attribut Commute Distance.

    Vous avez correctement défini une relation entre l'attribut Commute Distance et l'attribut Commute Distance Sort. Dans la fenêtre des propriétés, notez que la valeur par défaut de la propriété RelationshipType du membre Commute Distance Sort de l'attribut Commute Distance est Flexible.

  11. Dans la fenêtre des propriétés, affectez à la propriété RelationshipType la valeur Rigid.

    Les relations entre les membres de l'attribut Commute Distance et de l'attribut Commute Distance Sort ne changeront pas au fil du temps. Vous êtes maintenant prêt à définir l'ordre de tri pour l'attribut Commute Distance.

  12. Sélectionnez Commute Distance dans le volet Attributs puis, dans la fenêtre des propriétés, affectez à la propriété OrderBy la valeur AttributeKey et à la propriété OrderByAttribute la valeur Commute Distance Sort.

  13. Dans le menu Générer, cliquez sur Déployer Analysis Services Tutorial.

  14. Une fois le déploiement terminé, cliquez sur l'onglet Navigateur du Concepteur de dimensions pour la dimension Customer, cliquez sur Reconnexion, puis parcourez la hiérarchie d'attributs Commute Distance.

    Notez que les membres de la hiérarchie d'attributs sont maintenant triés par ordre croissant, comme montré dans l'illustration suivante.

    Hiérarchie de l'attribut Distance domicile/travail retriée

Tâche suivante de la leçon

Spécification des relations entre attributs dans une hiérarchie définie par l'utilisateur