> Tech > Drillthrough pour développeurs

Drillthrough pour développeurs

Tech - Par iTPro - 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 gratuitement cette ressource

Cybersécurité sous contrôle à 360°

Cybersécurité sous contrôle à 360°

Avec Cloud in One, les entreprises ne gagnent pas uniquement en agilité, en modernisation et en flexibilité. Elles gagnent également en sécurité et en résilience pour lutter efficacement contre l’accroissement en nombre et en intensité des cyberattaques. Découvrez l'axe Cybersécurité de la solution Cloud In One.

Tech - Par iTPro - Publié le 24 juin 2010