> Tech > Obtention des résultats

Obtention des résultats

Tech - Par iTPro - Publié le 24 juin 2010
email

Lorsque le fournisseur XMLA reçoit une requête, il la transmet au moteur de requête MDX, pour analyse et exécution. Après avoir obtenu les résultats MDX, le fournisseur XMLA les encapsule dans une réponse SOAP et les retourne au client à l’origine de la requête.
Une réponse Execute peut être

Obtention des résultats

extrêmement longue, en fonction du volume des données retournées et du format employé. Pour afficher les résultats d’une requête Execute, chargez l’exemple d’application et exécutez une requête MDX. Pour effectuer le chargement, ouvrez simplement l’application dans Internet Explorer.
Vous pouvez soit copier le fichier vers un répertoire virtuel et l’ouvrir dans HTTP, soit double-cliquer sur le fichier pour l’ouvrir dans le navigateur. Vous verrez l’intégralité du code XML renvoyé par la requête dans l’exemple d’application Web. La figure 2 illustre une partie du résultat.

La réponse SOAP à un appel de méthode Execute est similaire au résultat à un appel de méthode Discover. Comme le montre le listing 2, le code servant à l’appel contient les balises SOAP Envelope et Body usuelles en tant qu’enveloppes de niveau supérieur, puis affiche la requête MDX encapsulée pour la transmission dans XML. Vous avez deux options pour le format des résultats d’une requête Execute : Rowset et MDDataSet (qui apparaît comme Multidimensional dans le listing).
Le format Rowset est une structure tabulaire aplatie contenant des lignes et des colonnes avec les éléments de données. MDDataSet est un format multidimensionnel qui contient trois sections : OLAPInfo, Axes et CellData. Vous verrez ces trois sections en faisant défiler le résultat de l’exemple d’application.
Le format multidimensionnel représente les données multidimensionnelles sous une forme hiérarchique plus représentative de la structure des données que le format tabulaire aplati. OLAPInfo définit la structure du résultat. La première section d’OLAPInfo, intitulée CubeInfo, énumère les cubes source des données. Ensuite, AxesInfo comporte un élément AxisInfo pour chaque axe dans les données.

Chaque élément AxisInfo contient les hiérarchies, membres et propriétés de cet axe. Il inclut systématiquement les propriétés standard Uname (Unique Name), Caption, Lname (Level Name) et Lnum (Level Number). Par ailleurs, AxisInfo peut contenir une valeur par défaut spécifiée pour les propriétés de cellules. Si le résultat de la requête inclut de nombreuses valeurs répétitives, ces valeurs par défaut peuvent réduire considérablement la taille des données retournées en renvoyant uniquement les éléments de données qui diffèrent de la valeur par défaut. Enfin, la section CellData d’un format multidimensionnel contient les propriétés standard et personnalisées CellInfo pour chaque cellule retournée par la requête MDX.

Les propriétés standard sont Value, FmtValue (Format Value), ForeColor et BackColor. Les propriétés facultatives dépendent de la requête MDX utilisée pour récupérer le résultat.

La description du résultat XMLA avec des termes abstraits est difficile car les données exactes retournées varient en fonction de la requête employée. Le moyen le plus simple pour comprendre OLAPInfo consiste à examiner un exemple de résultat d’une requête spécifique. Considérons la requête MDX suivante : select {[Product].children) on rows, {[Store].children) on columns from Sales L’exécution de cette requête via le fournisseur XMLA au moyen de la méthode Execute donne le résultat de la section AxesInfo illustré sur la figure 3. La requête retourne des colonnes (Axis0) et des lignes (Axis1). Chaque axe contient une seule hiérarchie :

L’axe des colonnes contient la hiérarchie Store et l’axe des lignes, la hiérarchie Product. Après avoir défini les axes des dimensions, la figure 3 présente la dimension de découpage (slicer), qui est une dimension MDX pour le filtrage des données multidimensionnelles. Les dimensions de découpage apparaissent dans la clause WHERE d’une requête MDX et affichent toute hiérarchie du cube qui n’apparaît dans les axes des dimensions. La répétition de cette information est utile dans XMLA car vous pouvez vous en servir pour montrer les autres hiérarchies disponibles dans un cube donné et écrire d’autres requêtes sur ces hiérarchies.

Comme indiqué précédemment, la dernière partie de la section OLAPInfo d’un format multidimensionnel, à savoir CellInfo, décrit les propriétés retournées par la requête pour chaque cellule de l’ensemble de résultats. Comme la requête employée dans cet exemple ne spécifie pas de propriétés supplémentaires, la section CellInfo affiche uniquement les informations de base Value et FmtValue :

<OlapInfo>
<!– the AxesInfo goes here – >
<CellInfo>
        <Value name="VALUE" />
        <FmtValue name="FORMATTED_ VALUE />
</CellInfo>
</OlapInfo>

La section suivante du résultat dans le format MDDataSet est Axes, qui contient les données renvoyées par la requête, organisées soit sous la forme TupleFormat, comme l’illustre la figure 4, soit sous la forme ClusterFormat. Prenons un exemple afin de voir les différences entre ces deux formats. Imaginons que vous ayez trois catégories de pays (Canada, Mexique et USA) et trois catégories de produits (Boissons, Aliments et Non-consommables), qui génèrent neuf combinaisons de pays et de produits. Logiquement, vous avez plusieurs options pour représenter cet ensemble sous la forme écrite. Premièrement, vous pouvez lister les combinaisons :

{(Canada, Boissons),
(Canada, Aliments),
(Canada, Non-consommables),
(Mexique, Boissons),
(Mexique, Aliments),
(Mexique, Non-consommables),
(USA, Boissons),
(USA, Aliments),
(USA, Non-consommables)}

Il s’agit du type de représentation d’ensemble correspondant au format TupleFormat. Chaque paire est un tuple (ou n-uplet) et chaque tuple contient un membre de chaque dimension incluse dans le résultat. Par conséquent, si vous avez trois dimensions dans la requête, le tuple résultant aura trois membres.

Vous avez aussi la possibilité d’utiliser une représentation mathématique des combinaisons des deux ensembles. Au moyen du concept de produit cartésien, vous pouvez représenter l’ensemble de données sous la forme :

{Canada, Mexique, USA} x {Boissons, Aliments, Non-consommables}

L’opérateur de produit cartésien (x) entre les deux ensembles représente toutes les combinaisons possibles des ensembles en question. Le format ClusterFormat se sert de cette représentation et, bien qu’elle soit nettement plus compacte, elle requiert une plus grande interprétation pour la compréhension et la navigation.

La dernière section de MDDataSet est CellData et contient les valeurs de chaque cellule retournée par la requête MDX. Un nombre ordinal dans un tableau basé sur zéro fait référence aux cellules. (Pour apprendre à calculer les nombres ordinaux, consultez l’encadré Web « Mapping the Tuple Ordinals », sur www.itpro.fr Club abonnés.) Si une cellule n’est pas présente dans le tableau, la valeur par défaut d’AxisInfo sert de valeur pour la cellule. Si aucune valeur par défaut n’est spécifiée, la valeur est null.

Téléchargez gratuitement cette ressource

Guide de Services Cloud Managés

Guide de Services Cloud Managés

Accélérer votre transformation digitale, protéger et sécuriser vos environnements Cloud avec les offres de support, d'accompagnement et de services managés. Découvrez le TOP 3 des Services Managés pour accompagner la transformation de vos environnements Cloud, gagner en agilité et en sécurité dans un monde d'incertitudes.

Tech - Par iTPro - Publié le 24 juin 2010