> Tech > Drillthrough pour développeurs

Drillthrough pour développeurs

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Après avoir validé drillthrough et configuré la sécurité, vous allez mettre en oeuvre drillthrough pour les applications. Pour démontrer les étapes d'implémentation de drillthrough, j'ai ajouté la fonction drillthrough à  une page ASP (Active Server Pages) d'après la page ASPADOComplex.asp livrée avec Analysis Services. Cette page exécute une requête qui

montre les emplacements
de Quilogy, le nombre de
jours étudiants inscrits à  chaque endroit
et le montant du revenu (fictif,
bien entendu) que les cours de chaque
lieu ont généré.

Dans une application de type Web,
le moyen le plus naturel d’assurer le
drillthrough dans l’UI (User Interface)
consiste à  placer un hyperlien sur la
cellule et à  laisser l’utilisateur cliquer
sur le lien pour afficher des données
détaillées. A noter que chaque cellule
de la figure 3 contient un hyperlien.
Pour générer l’hyperlien, vous pouvez
modifier l’instruction suivante pour inclure
ou remplacer le code
ASPADOComplex.asp qui imprime la valeur de la cellule :

Response.Write "<a
href=Drillthrough.asp?colName=" & _
     colName(k) & "&rowName=" & rowName(j)
& _
     "&cube=Enrollment&Where=" &
     Server.URLEncode(strWhere) & ">" _
     & cst(k, j),FormattedValue & "</a>"

A noter que l'hyperlien appelle la page Drillthrough.asp et transmet à  cette page, par l'intermédiaire de la chaîne de requête, les noms des membres de la colonne et de la ligne courante, le cube, et toute clause WHERE éventuelle que l'instruction MDX a utilisée pour générer l'ensemble de cellules. Le code dans la page ASPADOComplex.asp stocke les noms de lignes et de colonnes sous forme d'arrays peuplés quand il construit les en-têtes de lignes et de colonnes de la table dans la page ASP. Le code ci-dessous extrait la clause WHERE de l'instruction MDX, puis envoie les valeurs à  la page Drillthrough.asp, que montre le listing 1.page ASPADOComplex.asp stocke les noms de lignes et de colonnes sous forme d'arrays peuplés quand il construit les en-têtes de lignes et de colonnes de la table dans la page ASP. Le code ci-dessous extrait la clause WHERE de l'instruction MDX, puis envoie les valeurs à  la page Drillthrough.asp, que montre le listing 1.

intPos = Instr(Session("MDXQuery"), "WHERE")
If IntPos > 0 Then strWhere = Mid(Session("MDXQuery"),intPos)

Drillthrough bâtit une instruction MDX qui inclut le mot-clé DRILLTHROUGH pour ordonner au serveur OLAP de construire et d'exécuter une requête pour renvoyer les données détaillées demandées. Vous pouvez accoler le mot-clé DRILLTHROUGH comme préfixe d'une instruction MDX, laquelle peut contenir des arguments MAXROWS et FIRSTROWSET pour limiter le nombre de lignes renvoyées au client et pour déterminer la partition dont les données doivent être renvoyées en premier si le cube contient de multiples partitions. Le serveur OLAP applique MAXROWS après avoir appliqué le filtre pour le cube ou la partition. En A du listing 1, on voit que la page limite le nombre de lignes à  renvoyer à  5 000. Pour bâtir l'instruction MDX, la page ajoute à  la variable strSource les arguments transmis dans la chaîne de requête (nom de colonne, nom de ligne, cube et clause WHERE) et atteints par l'intermédiaire de l'objet ASP Request. Ainsi, si vous cliquez sur la colonne Days pour Cincinnati, la page construit l'instruction MDX suivante :

DRILLTHROUGH MAXROWS 5000
SELECT {[Measures].[Days]} ON COLUMNS,
{[Location].[All
Location].[N].[Cincinnati]}
ON ROWS
FROM Enrollment

Pour exécuter l'instruction MDX,
vous invoquez la méthode Execute
d'un objet Connection. Cet exemple
définit la propriété ActiveConnection
de l'objet ADOMD.Catalog d'après le
nom du serveur et du catalogue que la
session de l'utilisateur contenait avant
qu'il n'appelle Execute. Dans des applications
Web, la valeur renvoyée à 
partir de la méthode Execute est un
ADO Recordset, pas un cellset comme
dans ADO MD. Comme un drillthrough
dans des applications Web
peut renvoyer des recordsets multiples,
il vaut mieux écrire le code en
double pour extraire les résultats et les
formater dans une table HTML,
comme le montre le renvoi B du listing
1.

La méthode NextRecordset de l'objet
Recordset renvoie les recordsets
créés pour des partitions supplémentaires,
ou elle renvoie Nothing quand il
n'existe plus de recordsets. Si vous
êtes certains que les recordsets pour
les différentes partitions contiennent
les mêmes colonnes, vous pouvez fusionner
les résultats en utilisant le code
ASP. Toutefois, dans ce cas, la procédure
PrintTable place simplement une
table HTML supplémentaire sur la page
renvoyée à  l'utilisateur. La figure 4
montre les données détaillées résultantes.

Téléchargez cette ressource

Guide de technologie 5G pour l’entreprise

Guide de technologie 5G pour l’entreprise

Pourquoi la 5G est-elle faite pour votre entreprise ? La 5G peut améliorer la vitesse, la fiabilité et la capacité de votre réseau, permettant ainsi une meilleure collaboration, une productivité accrue et une prise de décision plus rapide. Notre livre blanc " The Big Book of Enterprise 5G" vous fournit les informations stratégiques dont vous avez besoin pour prendre des décisions éclairées et préparer votre entreprise à prospérer dans l'ère de la 5G. Cradlepoint, part of Ericsson est le leader mondial des solutions de réseau sans fil 4G LTE et 5G fournies via le cloud. Connectez vos employés, lieux et objets avec la 4G LTE et la 5G pour un WAN sans fil d'entreprise.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010