[Journées SQL Server] Epilogue et précisions

J’ai reçu pas mal de questions relatives à ma démo bonus de fin de session (que vous pouvez voir sur le webcast). Pour rappel il s’agissait de montrer qu’il était possible d’injecter du MDX dans un modèle BISM Tabular, et de voir qu’il était interprété par Excel. Alors comment est-ce possible?

Déjà ce à quoi vous avez assisté est la définition même de BISM (le côté tolkienien du « One model to rule them all »): les modèles Tabular et Multidimensional sont basées sur des structures objet (au sens AMO et donc XMLA du terme) identiques. Comprenez qu’un modèle tabulaire est défini en sous jacent comme possédant une DataSourceView, un cube qui s’appelle Sandbox (comme dans PowerPivot), des Dimensions, des MeasureGroups… et donc des MdxScripts (oui car je vous rappelle que SSAS gère potentiellement plusieurs MdxScripts que l’on peut modifier mais c’est une autre histoire).

Si vous vous connectez en AMO sur ce modèle (ou regardez la définition XMLA envoyée au déploiement du modèle tabular) vous constaterez que cet objet MdxScript possède des calculs de deux types, en MDX et en DAX. Entres autres il définit une DefaultMeasure bidon égale à 1 (probablement pour des raisons de performances). Un client OLAP classique comme Excel est parfaitement capable de lire les deux types mesures, ce qui signifie que le script expose bien les métadonnées de ces deux types. La démonstration que j’ai faite consistait simplement à rajouter une mesure en MDX (et à scoper dessus) pour prouver que ça marche sous un client OLAP.

Mais attention! La mesure que j’ai créée aurait été invisible en DAX. Je ne l’ai montré qu’à deux personnes qui m’ont posé la question et se reconnaitront mais ma mesure était inconnue du parser DAX. En d’autres termes et à date le formula engine DAX est capable uniquement de voir les calculs exprimés en DAX. De plus ce cas n’est pas supporté. Officiellement les modèles tabulaires ne gèrent pas les calculs MDX, et l’édition du MdxScript est proscrite. Vous voilà prévenus!
Au passage cela répond à une question posée en fin de session: non, les requêtes MDX envoyées à un modèle Vertipaq ne sont pas traduites en DAX.

Voilà, à bientôt!

PS: pour finir un rappel des langages supportés sur quel modèle:
Tabular supporte DAX et MDX mais pas avec DirectQuery pour ce dernier. Multidimensional supporte uniquement MDX.

4 réflexions sur “[Journées SQL Server] Epilogue et précisions

  1. Bonjour,Je me pose une question suite à la lecture de ce post.N'aviez vous pas évoqué lors des journées GUSS SQL Server 2012 que le MDX toujours envoyé par Excel était "traduit" en DAX pour des modèles Tabulaires ?Cordialement,

  2. Je ne me rappelle plus si j'ai employé le terme "traduit" – qui est erroné techniquement parlant – mais je voulais surtout appuyer le fait que le MDX n'est pas le langage "natif" de PowerPivot/Tabular (i.e. il n'a pas été conçu pour cela). Comme disait Amir Netz dans un commentaire sur un billet de Chris Webb, PowerPivot/Tabular est conçu sur SSAS ex-UDM et donc hérite de fonctionnalités de l'UDM ("A lot of the AS features that are missing in PowerPivot are actually hiding under the surface waiting for a good UI to be added to expose them. "). Donc le MDX n'est pas traduit en DAX mais il est moins performant que le DAX pour les mêmes requêtes.

  3. Merci de votre réponse.L'execution de requêtes MDX "sur" un modèle Tabulaire est il officiellemnt supporté (bien que moins performant on peut le comprendre) en dehors d'Excel ?Cordialement,

  4. Oui* et c'est même la méthode de requêtage "standard": la tendance voudrait que MDX reste le langage de requête des deux modèles, quand DAX serait plus un langage d'expression simple. Des différences de performances existent encore mais elles sont généralement minimes – sauf dans certains cas – et on peut imaginer qu'elles seront comblées rapidement. Référence: http://msdn.microsoft.com/fr-fr/library/hh230973(v=sql.110).aspxYou can use MDX to create queries against tabular models that use the VertiPaq cache as the preferred query method (that is, models that have not been deployed in DirectQuery mode). Although clients such as Power View use DAX both for creating aggregations and for querying the model as a data source, if you are familiar with MDX it can be a shortcut to create sample queries in MDX, see Building Measures in MDX.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s