Extensions de personnalisation Analysis Services

S’applique à : SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

SQL Server SQL Server Analysis Services extensions de personnalisation constituent la base de l’idée d’implémenter une architecture de plug-in. Dans une architecture de plug-in, vous pouvez développer dynamiquement des nouveaux objets de cube et de nouvelles fonctionnalités, et les partager facilement avec d'autres développeurs. Par conséquent, SQL Server Analysis Services extensions de personnalisation fournissent les fonctionnalités qui permettent d’effectuer les opérations suivantes :

  • Conception et déploiement dynamiques Immédiatement après avoir conçu et déployé SQL Server Analysis Services extensions de personnalisation, les utilisateurs ont accès aux objets et aux fonctionnalités au début de la session utilisateur suivante.

  • Indépendance de l’interface Quelle que soit l’interface que vous utilisez pour créer les extensions de personnalisation SQL Server Analysis Services, les utilisateurs peuvent utiliser n’importe quelle interface pour accéder aux objets et aux fonctionnalités.

  • Le contexte de session SQL Server Analysis Services extensions de personnalisation ne sont pas des objets permanents dans l’infrastructure existante et ne nécessitent pas de retraitement du cube. Elles sont exposées et créées pour l'utilisateur au moment où il se connecte à la base de données, et restent disponibles pour toute la durée de cette session utilisateur.

  • Distribution rapide Partagez SQL Server Analysis Services extensions de personnalisation avec d’autres développeurs de logiciels sans avoir à entrer dans des spécifications détaillées sur l’emplacement et la façon de trouver cette fonctionnalité étendue.

SQL Server Analysis Services extensions de personnalisation ont de nombreuses utilisations. Par exemple, votre société effectue des ventes qui impliquent des devises différentes. Vous créez un membre calculé qui retourne les ventes consolidées dans la devise locale de la personne qui accède au cube. Vous créez ce membre en tant qu'extension de personnalisation. Vous partagez alors ce membre calculé avec un groupe d'utilisateurs. Une fois le membre calculé partagé, ces utilisateurs ont un accès immédiat à celui-ci dès qu'ils se connectent au serveur. Ils bénéficient de cet accès même s'ils n'utilisent pas la même interface que celle utilisée pour créer le membre calculé.

SQL Server Analysis Services extensions de personnalisation sont une modification simple et élégante de l’architecture d’assembly managé existante et sont exposées dans le SQL Server Analysis Services modèle objet Microsoft.AnalysisServices.AdomdServer, la syntaxe MDX (Multidimensional Expressions) et les ensembles de lignes de schéma.

Architecture logique

L’architecture de SQL Server Analysis Services extensions de personnalisation est basée sur l’architecture d’assembly managé et les quatre éléments de base suivants :

L'attribut personnalisé [PlugInAttribute]
Lors du démarrage du service, SQL Server Analysis Services charge les assemblys requis et détermine les classes qui ont l’attribut personnalisé Microsoft.AnalysisServices.AdomdServer.PlugInAttribute.

Notes

Le .NET Framework définit des attributs personnalisés comme un moyen de décrire votre code et d’affecter le comportement au moment de l’exécution. Pour plus d’informations, consultez la rubrique « Vue d’ensemble des attributs » dans le Guide du développeur .NET Framework sur MSDN.

Pour toutes les classes avec l’attribut personnalisé Microsoft.AnalysisServices.AdomdServer.PlugInAttribute, SQL Server Analysis Services appelle leurs constructeurs par défaut. L'appel de tous les constructeurs au démarrage fournit un emplacement commun à partir duquel générer de nouveaux objets et qui est indépendant de toute activité des utilisateurs.

En plus de créer un petit cache d’informations sur la création et la gestion des extensions de personnalisation, le constructeur de classe s’abonne généralement aux événements Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened et Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing. S'il ne s'abonne pas à ces événements, la classe peut être marquée de manière appropriée en vue d'être nettoyée par le garbage collector du CLR (Common Language Runtime).

Contexte de session
Pour les objets basés sur des extensions de personnalisation, SQL Server Analysis Services crée un environnement d’exécution pendant la session cliente et génère dynamiquement la plupart de ces objets dans cet environnement. Comme tout autre assembly CLR, cet environnement d'exécution a également accès aux autres fonctions et procédures stockées. À la fin de la session utilisateur, SQL Server Analysis Services supprime les objets créés dynamiquement et ferme l’environnement d’exécution.

Événements
La création d’objet est déclenchée par les événements de session On-Cube-OpenedCubeOpened et On-Cube-ClosingCubeClosing.

La communication entre le client et le serveur se produit par le biais d'événements spécifiques. Ces événements indiquent au client les situations qui conduisent à la génération des objets du client. L'environnement du client est créé dynamiquement à l'aide de deux ensembles d'événements : événements de session et événements de cube.

Les événements de session sont associés à l'objet de serveur. Lorsqu’un client se connecte à un serveur, SQL Server Analysis Services crée une session et déclenche l’événement Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened. Lorsqu’un client met fin à la session sur le serveur, SQL Server Analysis Services déclenche l’événement Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing.

Les événements de cube sont associés à l'objet de connexion. La connexion à un cube déclenche l’événement Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened. La fermeture de la connexion à un cube, soit en fermant le cube, soit en passant à un autre cube, déclenche un événement Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing.

Traçabilité et gestion des erreurs
Toutes les activités peuvent être tracées à l’aide de SQL Server Profiler. Les erreurs non gérées sont consignées dans le journal des événements Windows.

La création et la gestion de tous les objets sont indépendantes de cette architecture. Elles sont sous l'entière responsabilité des développeurs des objets.

Base de l'infrastructure

SQL Server Analysis Services extensions de personnalisation sont basées sur des composants existants. Voici un récapitulatif des améliorations qui fournissent les fonctionnalités des extensions de personnalisation.

Assemblys

L’attribut personnalisé, Microsoft.AnalysisServices.AdomdServer.PlugInAttribute, peut être ajouté à vos assemblys personnalisés pour identifier SQL Server Analysis Services classes d’extensions de personnalisation.

Modifications apportées au modèle objet AdomdServer

Les objets suivants du modèle objet Microsoft.AnalysisServices.AdomdServer ont été améliorés ou ajoutés au modèle.

Nouvelle classe AdomdConnection

La classe Microsoft.AnalysisServices.AdomdServer.AdomdConnection est nouvelle et expose plusieurs extensions de personnalisation via des propriétés et des événements.

Propriétés

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.SessionID, une valeur de chaîne en lecture seule représentant l’ID de session de la connexion actuelle.

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.ClientCulture, une référence en lecture seule à la culture cliente associée à la session active.

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.User, une référence en lecture seule à l’interface d’identité représentant l’utilisateur actuel.

Événements

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing

Nouvelles propriétés de la classe Context

La classe Microsoft.AnalysisServices.AdomdServer.Context a deux nouvelles propriétés :

  • Microsoft.AnalysisServices.AdomdServer.Context.Server, une référence en lecture seule au nouvel objet serveur.

  • Microsoft.AnalysisServices.AdomdServer.Context.CurrentConnection, une référence en lecture seule au nouvel objet Microsoft.AnalysisServices.AdomdServer.AdomdConnection.

Nouvelle classe Server

Propriétés et événements de classe Microsoft.AnalysisServices.AdomdServer.Server.

Propriétés

  • Microsoft.AnalysisServices.AdomdServer.Server.Name, valeur de chaîne en lecture seule représentant le nom du serveur.

  • Microsoft.AnalysisServices.AdomdServer.Server.Culture, référence en lecture seule à la culture globale associée au serveur.

Événements

  • Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened

  • Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing

Classe AdomdCommand

La classe Microsoft.AnalysisServices.AdomdServer.AdomdCommand prend désormais en charge les commandes MDX suivantes :

Extensions MDX et améliorations

La commande CREATE MEMBER est améliorée avec la propriété légende, la propriété display_folder et la propriété associated_measure_group.

La commande UPDATE MEMBER est ajoutée pour éviter la récréation du membre lorsqu'une mise à jour est nécessaire avec la perte de priorité conséquente pour la résolution des calculs. Mises à jour ne pouvez pas modifier l’étendue du membre calculé, déplacer le membre calculé vers un autre parent ou définir un autre ordre de résolution.

La commande CREATE SET est améliorée avec la propriété légende, la propriété display_folder et la nouvelle propriété STATIC | MOT CLÉ DYNAMIQUE. Statique signifie que l’ensemble est évalué uniquement au moment de la création. Dynamique signifie que le jeu est évalué chaque fois que le jeu est utilisé dans une requête. La valeur par défaut est STATIC si un mot clé est omis.

Les commandes CREATE KPI et DROP KPI sont ajoutées à la syntaxe MDX. Les indicateurs de performance clés peuvent être créés dynamiquement à partir de tout script MDX.

Extensions d'ensembles de lignes de schéma

À MDSCHEMA_MEMBERS colonne d’étendue est ajoutée. Les valeurs de portée sont les suivantes : MDMEMBER_SCOPE_GLOBAL=1, MDMEMBER_SCOPE_SESSION=2.

À MDSCHEMA_SETS set_evaluation_context colonne est ajoutée. Les valeurs de contexte d'évaluation du jeu sont les suivantes : MDSET_RESOLUTION_STATIC = 1, MDSET_RESOLUTION_DYNAMIC = 2.

Sur MDSCHEMA_KPIS, la colonne de portée est ajoutée. Les valeurs de portée sont les suivantes : MDKPI_SCOPE_GLOBAL=1, MDKPI_SCOPE_SESSION=2.