JSS 2014 – Les Journées SQL Server 2014

Le mois de Décembre approche et comme vous le savez déjà les JSS se préparent !

Cette année cet événement qui regroupe la communauté SQL Server autour de différent sujets se déroule le 1er et le 2 Décembre.

Plus d’infos et inscription ici : http://guss.pro/2014/12/01/journees-sql-server-2014/

Cette année j’aurai le plaisir d’être speaker sur deux sessions :

Venez nombreux !

Power BI – Ce qu’il faut savoir

Intro, parce qu’il le faut

Un article d’un genre nouveau pour une nouvelle prise de fonction d’un genre RE-nouveau :)
Et oui, me voilà embarquer avec plaisir dans une nouvelle et belle aventure !

Récemment on m’a confié du Self Service BI… La chose tombe bien car MS est très actif sur le sujet et notamment ces dernières semaines où ils ont présenté pas mal de nouvelles choses. Je vous avouerai qu’au début j’étais un peu sceptique pour le Self-Service BI, dont PowerPivot est le précurseur. Par la suite on avait Power View qui pointait son son nez, on parlait également de Data Explorer et Geoflow jaillissait de nulle part. Depuis le temps est passé, on entend parler de Power BI avec des : Power Query (Data Explorer), Power Map (GeoFlow), et toujours l’indémodable Power Pivot (PowerPivot).

Le Self-service BI Microsoft n’échappe pas à la stratégie « Cloud First, Mobile First », c’est pourquoi on parle de cloud avec Office 365 qui fournira un portail pour centraliser les rapports tout en proposant d’autres fonctionnalités inédites comme Q&A, Data Management Gateway etc. Cet  aspect cloud permet une accessibilité simplifiée pour les terminaux mobiles, ainsi on peut se connecter à la plate forme de données via des applications mobiles ou tout simplement avec un navigateur.

Le Self-Service BI semble avoir évolué depuis Power Pivot V1… mais qu’est ce que ça fait tout ça et qu’est ce que ça vaut ?

Cet article décrit mes premiers pas dans ce domaine que je découvre, donc il se peut bien que je revienne sur ce que j’ai écrit. Voilà ce que j’ai appris et retenu de tout cela.

Par où commencer ?

Un Office Professionnel Plus ou ProPlus 2013, de préférence une version 64 bits, en installant les Power Ad-in :

Et pour finir un petit tour ici pour s’inscrire à Power BI pour Office 365 et bénéficier de 30 jours d’essais. Et oui ! j’oubliais ! A ce qu’il parait on fait de la mobilité en BI et qu’on a des applications pour ça.

  • Windows 8 : Power BI
  • iOs : Apparement c’est pour bientôt

Il y a toujours l’accès en Web et profiter du HTML5. Nous voilà équipé…place au test.

Power Query : « L’ETL Self-Service ? »

La logique des choses fait que l’on commence par Power Query, étant similaire à un ETL,  qui plus est l’un des premiers outils que l’on utilise dans un projet BI traditionnel.

Est-ce que Power Query est il mieux que SSIS ? ou sont ils identiques ? Est-ce que Power Query  remplacera SSIS ?
Ce sont sans doute les premières questions que l’on peut se poser. La réponse ci-dessous n’engage que moi.

Ce n’est pas exactement les même outils. SSIS est un vrai ETL, Power Query c’est un outil puissant de manipulation de données aux allures d’ETL.

  • Oui, Power Query extrait des données de différentes sources
  • Oui, Power Query permet de faire (un peu) de transformations (fusion, dédoublonnage, fonctions etc.)
  • Non, Power Query ne charge pas les données dans des destinations à part si on considère une feuille Excel ou le modèle de données de Power Pivot comme étant les deux seules destinations de Power Query.

Par contre, on peut partager notre requête fabriqué avec Power Query grâce à la partie cloud et le data catalog. Ce qui rend possible la récupération via une recherche simple de requêtes faites par d’autre personne de votre organisation, ou récupérer des données publiques directement d’internet (malheureusement pas grand chose pour la France).

Les transformations effectuées dans Power Query sont « historisées » au fur et à mesure que l’on les applique (Etapes appliquées),  une fonctionnalité très pratique.

Power_Query_Transform_Tool

Il existe une option de certification des requêtes faite par un Data Steward ce qui permet d’avoir une certaine légitimité des données.  Et pour finir Power Query possède pas mal de connecteurs : OData, Web, SAP, HDInsight, Facebook etc. mais pas de SSAS ! :-/

Beaucoup de fonctionnalités sont présentes dans Power Query, je ferai  sans doute un article à part pour décrire l’ensemble de l’outil.

Dans un contexte de Self-Service BI, les Power User ne sont pas des développeurs chevronnés par conséquent Power Query leurs permettraient (en théorie)  de résoudre des problèmes de données principalement mais aussi à chercher des données partagées. Bref,  des fonctionnalités qui peuvent être très utiles dans un outil simple et puissant donc a mettre dans de bonnes mains.

Si le sujet vous tient à cœur et que vous souhaitez avoir un autre avis, je vous invite à regarder la future session de David et Jean Pierre sur ce sujet  : http://sqlsaturday.com/viewsession.aspx?sat=313&sessionid=21307

EDIT:  La session est passée vous pouvez consulter le compte rendu : http://blog.djeepy1.net/2014/07/02/retour-sur-le-sqlsaturday-rheinland/

Concernant le partage de requêtes, pour avoir des statistiques sur l’utilisation des requêtes il faut se connecter à Office 365, dans la section « Mes favoris -> Données ».
Favorites_data

My_Power_BI_DataCôté performance, pour avoir testé des requêtes qui ramènent des millions de lignes depuis un SQL Server : c’est bien performant. Mieux que SSIS ? Il faudrait tester davantage…

Pour finir il existe un onglet Avancé dans Power Query qui vous permettra de « coder » des transformations en M.
De la documentation sur M : http://office.microsoft.com/en-us/excel-help/learn-about-power-query-formulas-HA104003958.aspx Power_Query_M_Advanced_Editor Je laisse tout de même perplexe sur l’utilisation réelle de ce mode avancé pour des Power User, les développeurs par contre pourront s’intéresser mais encore faut il avoir un IDE adapté.

Une petite information bonne à savoir, on ne peut pas supprimer une requête partagée dans O365. La suppression de requête partagée est possible uniquement dans Excel.

Lancer Excel (vous devez être connecté avec votre compte Office 365) ->Power  Query -> Shared -> Sélectionner la requête partagée dans la liste et supprimer.

Power_QueryDelete_Share_Query

Power Pivot : On ne change pas une équipe qui…

Pas grand chose à dire si ce n’est qu’il est intégré dans Office 2013. Pas de grands changements depuis la version 2. Mais Power Pivot reste LA pièce maîtresse !

Power View : Du bon et du moins bons

Malgré des petits ajustements depuis son intégration à Excel 2013, et de belles nouveautés annoncées récemment , il reste tout de même pas mal de manque au niveau de la personnalisation principalement et l’exploration de données.

Cela serait bien qu’un jour on puisse autant personnaliser Power View que SSRS…Certes pas tout, mais au moins l’essentiel. Il n’est pas possible de modifier des libellés, d’ajouter un autre axe sur les graphiques, manipuler les échelles, utiliser du drill through, des liens entre le feuilles Excel et les feuilles Power View. L’espace de travail de la feuille Power View peut être mieux utiliser, on perd de l’espace et c’est dommage.

On regrettera également l’absence de l’export interactif en Power Point fonctionnalité que l’on trouve sur SharePoint. Bref passons la wishlist et parlons de ce qui existe et existera d’ici peu : les nouveautés annoncés au PASS BA.

Le Forecasting, on sera possible de faire de la prédiction directement sur les graphiques de Power View, en manipulant l’axe des temps et divers paramètres comme la saisonnalité et l’intervalle de confiance. A noter que cela est possible pour le future mais aussi le passé !

Power_BI_Power_View_Forcasting Plus de détails sur le forecasting : http://blogs.msdn.com/b/powerbi/archive/2014/05/08/introducing-new-forecasting-capabilities-in-power-view-for-office-365.aspx

Un nouveau composant : La threemap/Hitmaptreemappowerbi En espérant que MS va proposer ces nouveautés dans le cloud (Power Bi pour  Office 365) et On-Premise (Excel 2013) je pense notamment au dashboarding/KPI, un « Performance Point Power Viewé » aussi annoncé…Wait & See. KPIs En fonction du mode utilisé: application Windows 8, Silverlight ou HTLM 5 des fonctionnalités ne sont pas supportées. Essentiellement  le mode HTLML5 et l’application Windows 8 ne permettent pas encore :

  • Les fonds d’écran : HMTL 5 et Windows 8 app
  • Les images en mosaïque :  HMTL 5 et Win 8
  • Les agrandissement des graphiques
  • Le dynamisme du graphique Nuage de point dynamique / Scatter Plot  
  • La fonction mosaïque
  • Les cartes : uniquement l’application Windows 8

Un tableau qui récapitule bien les manques par « environnement » :  http://businessintelligist.com/2014/02/11/html5-support-in-power-view-and-power-bi/

EDIT : Pas plus tard que hier j’ai pu voir qu’il est désormais possible d’avoir un affichage et une interaction avec l’axe temps sauf que l’on a pas le bouton Play dans un scatter plot/Nuage de points.

HTML5_Scatter Plot

Les mosaïques fonctionnent correctement :

HTML5_Mosaic

Comment configurer son accès depuis l’application Windows 8 ?
Contrairement à ce qui est écrit  ici : http://office.microsoft.com/en-us/office365-sharepoint-online-enterprise-help/get-started-with-the-power-bi-windows-store-app-HA104095846.aspx#_Toc374114250.

Il faut se rendre dans Emplacement et  ajouter votre site SharePoint Online. Vu que certains composants ne fonctionnent pas (Bubble chart, mosaïque)  je vous conseille d’utiliser directement sur le portail web ! Vous gagnerez du temps et cela vous permettra de tester Q&A.Power_BI_App_Windows8

Power_BI_Power_View_Swipe Power_BI_Power_View_Scatter_Plot_Not_Working

Power_BI_Home

En espérant que MS va vite combler les manques et que la version iOS ne tarde pas trop à pointer son nez. Des »rumeurs » prédisent qu’on pourra faire du Power View directement dans O365. Mais la meilleure annonce concerne une autre fonctionnalité de Power BI pour Office 365 que je vais décrire plus loin.

Power Map : Plus que de la cartographie

Il faudra avoir une licence ProPlus et non (Professionnel Plus), pour profiter des nouvelles mises à jour de Power Map. Mais vu que la version Preview est toujours disponible, elle vous permettra tout de même de profiter des  fonctionnalités principales de  Power Map.

Par contre je n’ai rien vu sur le support de Power Map dans Office 365… doit on comprendre qu’il faudra impérativement faire des vidéos et l’uploader par la suite ?
En parlant de ces vidéos, Power Map est beaucoup plus qu’un outil de géolocalisation, en effet vous pourrez faire des montages assez rapidement, en intégrant des images/notes  : c’est le du début story telling plutôt convaincant sur le papier.

Mais pour exploiter ce joujou dans un but BI, il faudra s’armer de patience et être imaginatif pour bien faire les choses. L’utilisation classique de Power Map en tant qu’outil de navigation spacio-temporel dans Excel est quand même bien sympa. On aura plus tendance à contempler une carte du monde avec des données plutôt qu’à s’essayer de faire son propre film d’animation de données géolocalisées. Comme pour Power View il serait bien d’ajouter des fonctionnalités de personnalisation et d’exploration.

Power Map

Power BI pour Office 365

N’étant pas un habitué du cloud, c’est pour moi une nouvelle approche. Pour faire simple, Power BI pour Office 365 hébergera les les éléments de Power BI développés avec Excel dans un SharePoint Online. Ainsi on aura accès à  un site d’équipe, avec l’option Power BI qui offrira un espace dédié aux rapports. Bien évidemment il y a des interfaces d’administration pour gérer les accès et les permissions. Mais c’est plus qu’un portail on trouvera d’autres outils comme Q&A, la configuration des rafraîchissements etc.

Q&A : « Compiouteur ! Est-ce que vous pouvez… »

Mes premières impressions sont bonnes, après avoir fait un rapide Excel contenant des données, je l’ai uploadé dans le portail et après avoir l’ajouté dans Q&A j’ai pu jouer avec l’invite de questions. Add_To_Q&A

Miraculeusement Q&A a répondu rapidement et d’une manière assez précise dans son interprétation des questions. Et tout ça sans aucune optimisation particulière. A noter que l’on peut préparer des questions que l’on peut poser à Q&A. Q&A_Prepare_Your_Questions

Q&A : un sujet à creuser avec la nouvelle possibilité d’ajouter des synonymes, le support de la langue française ? Et trouver un scénario intéressant d’exploitation de cets gadget outil.

Data Management Gateway  : 1 hit 100 % DMG

Voilà le point que je trouve intéressant ! DMG !

Je me suis toujours dis, « la BI dans le cloud, pourquoi pas un jour mais je vois mal tout mettre dans le cloud, un data warehouse et un cube dans le cloud …Toute la Stack BI MS SQL Server ça sera pas demain la veille. » C’était il y a 3 ans…

Et ben oui je ne me suis pas trompé la stack BI traditionnelle dans le cloud ce n’est pas pour demain avec toute les fonctionnalités. Concernant les données j’étais loin de penser qu’aucune source de données allait être mise dans le cloud mais qu’il suffirait de synchroniser ce qu’on a chez nous (On-Premise) vers les rapports du cloud. C’est le rôle qu’assure DMG.

Data Management Gateway est à installer sur vos serveurs de données On-Premise.

Lien : http://www.microsoft.com/en-us/download/details.aspx?id=39717

L’installation est très simple, par la suite il faut configurer des passerelles dans l’Admin center de Office 365.  On pourra planifier la synchronisation vos données dans le cloud d’une manière sécurisée (certificat SSL / HTTPS).

DMG_Config_Manager_OnPremisse

DMG_Add_Gateway DMG_Download

Bien combiné avec la future possibilité d’héberger directement des rapports SSRS cela permettrait d’avoir un vrai portail de reporting. SSRS et DMG est selon moi la future doublette gagnante.

DMG fonctionne avec des sources SQL Server et Oracle mais on a la possibilité de créer des serveur liés pour accéder à d’autres sources.

DMG_Add_Data_sources

De nouvelles problématiques

Mais j’ai des gros fichiers

La taille des fichiers auront une grande importance surtout si l’on veut l’uploader dans Power BI pour Office 365.
On sera limité à 10 Mo si les données sont stockées dans les feuilles Excel et 250 Mo si les données sont dans le modèle (Power Pivot)

Des méthodes et conseils pour réduire la taille des fichiers :

Ici : http://office.microsoft.com/en-us/office-365-business/reduce-the-size-of-an-excel-report-on-a-power-bi-for-office-365-site-HA104139646.aspx?CTT=5&origin=HA104097290

et là : http://office.microsoft.com/en-us/office365-sharepoint-online-enterprise-help/reduce-the-file-size-of-a-workbook-HA104099033.aspx?CTT=5&origin=HA104099212

Il existe un add-in pour Excel portant le nom Workbook Size Optimizer Plus d’infos ici : http://office.microsoft.com/en-us/excel-help/data-model-specification-and-limits-HA102837464.aspx

Et Marco Russo l’a testé : http://sqlblog.com/blogs/marco_russo/archive/2013/04/30/powerpivot-workbook-size-optimizer-powerpivot-tabular.aspx

 Est-ce que c’est sécurisé ?

« Mes données sont sur le Cloud ! Tout le monde pourra les consulter !? « 

Effectivement c’est ce qu’on peut se poser comme question tout naturellement, vos données sont sur le Cloud, les personnes autorisées pourront les consulter mais il y a des moyens pour renforcer la sécurité comme la double authentification. Un simple login/mot de passe semble être léger comme sécurité, dans Office 365  on a la possibilité d’avoir une double authentification qui vous demandera d’entrer un code qui vous sera fourni soit par message, soit par un appel, ou soit par une application qui transformera votre téléphone portable en Token.

Cela limite (de beaucoup) les risques.

Lien de l’application : http://www.windowsphone.com/fr-fr/store/app/multi-factor-auth/0a9691de-c0a1-44ee-ab96-6807f8322bd1

Et ci-dessous un screenshot de l’application.

Muti-factor_Auth

Plus d’infos sur la double authentification : http://blogs.office.com/2014/02/10/multi-factor-authentication-for-office-365/

Conclusion

Power BI au complet est une solution qui se solidifie/solidifiera avec le temps. Les nouveautés prévues pour cet été sont encourageantes.
Globalement les outils de Power BI et la partie cloud sont correctes dans l’ensemble  malgré quelques manques.
Data Management Gateway et SSRS dans le cloud sont intéressants en terme d’architecture hybride, power query possède un réel potentiel, Power View, Map et Q&A pourront répondre à des besoins de visualisations nouvelles et rapides.

Techniquement tout semble perfectible mais la base est plutôt bonne. Sans compter que l’ensemble de la solution est mise à jour fréquemment par Microsoft, apportant fraîchement des fonctionnalités au fil de l’eau. Par exemple on compte depuis Juillet 2013 près de 6 mises à jour pour Power Query, 4 pour Power Map et la plate forme Power BI pour Office 365 connait également sont lot d’updates.

Fonctionnellement tout ne roulera pas tout seul, certains aspects/fonctionnalités peuvent paraître flous (licences, Code M, modélisation, requêtage),  et peuvent remettre en cause la définition d’un Power User et la limite de ce qu’il doit pouvoir faire, en tout cas ils ne doivent pas être seul dans Power BI, ils auront besoin de nous, l’IT.
Le Self-Services BI ressemble plus à un buffet bien organisé (vous savez ceux avec des petit drapeaux vous expliquant ce que vous avez sous le nez)  sous l’œil bien veillant des responsables techniques/développeurs. Et non pas un buffet à volonté de piètre qualité sur lequel les métiers vont se précipiter en pensant que cela va être bien.
Attirer les utilisateurs vers les outils est un premier objectif à atteindre, contrôler et accompagner cette nouvelle façon faire est un tout autre challenge. Cela peut être facilité par de la formation et des processus, des contrats de données et de gouvernance pour cadrer cette activité.

Affaire à suivre…

MDX – Division par 0,Null et fonction Divide()

Intro

De temps en temps je dois faire du MDX…
Et à chaque fois que je me lance dans cette aventure périlleuse d’écriture de requête multi dimensionelle, je me dis que j’aimerais prendre du temps pour vraiment tout connaitre sur ce langage. Et espérer qu’un jour je puisse le maîtriser.

C’est pourquoi je vais essayer de publier des posts (enfin) sur ce sujet.
Mon premier sujet la division par 0, Null et la fonction Divide()

Règle de base

La division par 0 n’est pas possible et quand on fait de l’informatique on a la valeur NULL qui vient semer le trouble. Selon le language, les fonctions il faut prévoir ces cas.

Comment le moteur OLAP fonctionne et comment gère t-on ce cas en MDX ?

Bonne question !

Premièrement règle d’or  0 = null  pour le moteur AS.

WITH MEMBER [Measures].[NullValue] AS Null
MEMBER [Measures].[ZeroValue] AS 0
MEMBER [Measures].[CheckZeroEqualToNull?] AS
IIF( [Measures].[ZeroValue] = [Measures].[NullValue], true, false) SELECT
{
[Measures].[NullValue],[Measures].[ZeroValue],
[Measures].[CheckZeroEqualToNull?]
} ON COLUMNS
FROM [MyKioub]

Résultat de la requête :

mdx_zero_null_true

Conclusion : AS considère les valeurs nulles comme une valeur à 0.

Par conséquent si il fallait vérifier le dénominateur d’une division il suffirait de vérifier le cas du 0 uniquement…

Application

Les requêtes ci-dessous présentent les différents cas que l’on peut rencontrer.
En sachant qu’avec SSAS 2008 les vérifications sont faites  avec des IF.
Tandis qu’avec SSAS 2012 on a une toute nouvelle fonction DIVIDE().

WITH MEMBER [Measures].[Value] AS 100
MEMBER [Measures].[NullValue] AS Null
MEMBER [Measures].[ZeroValue] AS 0
MEMBER [Measures].[100 / 0] AS
 [Measures].[Value]/[Measures].[ZeroValue] ,Format_String = '#.#0'
MEMBER [Measures].[100 / Null] AS
 [Measures].[Value]/[Measures].[NullValue] ,Format_String = '#.#0'
MEMBER [Measures].[Null / Null] AS
 [Measures].[NullValue]/[Measures].[NullValue] ,Format_String = '#.#0'
MEMBER [Measures].[0 / Null] AS
 [Measures].[ZeroValue]/[Measures].[NullValue] ,Format_String = '#.#0'
MEMBER [Measures].[Null / 0] AS
 [Measures].[NullValue]/[Measures].[ZeroValue] ,Format_String = '#.#0'
MEMBER [Measures].[0 / 0] AS
 [Measures].[ZeroValue]/[Measures].[ZeroValue] ,Format_String = '#.#0'
MEMBER [Measures].[0 / 100] AS
 [Measures].[ZeroValue]/[Measures].[Value], Format_String = '#.#0'
MEMBER [Measures].[Null / 100] AS
 [Measures].[NullValue]/[Measures].[Value], Format_String = '#.#0'
MEMBER [Measures].[Check 100 / 0] AS
 IIF([Measures].[ZeroValue] = 0, Null,  [Measures].[Value]/[Measures].[ZeroValue]),Format_String = '#.#0'
MEMBER [Measures].[Check 100 / NullEqual0] AS
 IIF([Measures].[Null] = 0, Null,  [Measures].[Value]/[Measures].[ZeroValue]),Format_String = '#.#0'
MEMBER [Measures].[Check 100 / Null] AS
 IIF(IsEmpty([Measures].[NullValue]), Null,  [Measures].[Value]/[Measures].[ZeroValue]),Format_String = '#.#0'
MEMBER [Measures].[DivFunct] AS
 DIVIDE([Measures].[NullValue],[Measures].[Value] )

SELECT {
 [Measures].[Value],
 [Measures].[NullValue],
 [Measures].[ZeroValue],
 [Measures].[Null / Null],
 [Measures].[0 / Null],  [Measures].[Null / 0],
 [Measures].[0 / 0],
 [Measures].[100 / 0],
 [Measures].[Check 100 / NullEqual0],
 [Measures].[100 / Null],
 [Measures].[Check 100 / 0],
 [Measures].[Check 100 / Null],
 [Measures].[0 / 100],
 [Measures].[Null / 100],
 [Measures].[DivFunct]} ON COLUMNS,
, [MyDim].[MyAttribute].&[MyMember] ON ROWS
FROM [MyKioub]

Résultats:

MDX_Test_Divide

La fonction DIVIDE()

Cette fonctione est disponible depuis la version 2012 de SQL SERVER, et possèdes 3 paramètres :
Divide (<numerator>, <denominator> [,<alternateresult>])

WITH MEMBER [Measures].[Value] AS 100
MEMBER [Measures].[NullValue] AS Null
MEMBER [Measures].[ZeroValue] AS 0
MEMBER [Measures].[100 / 0] AS
DIVIDE([Measures].[Value],[Measures].[ZeroValue]) ,Format_String = '#.#0'
MEMBER [Measures].[100 / Null] AS
DIVIDE([Measures].[Value],[Measures].[NullValue]) ,Format_String = '#.#0'
MEMBER [Measures].[Null / Null] AS
DIVIDE([Measures].[NullValue],[Measures].[NullValue]) ,Format_String = '#.#0'
MEMBER [Measures].[0 / Null] AS
DIVIDE([Measures].[ZeroValue],[Measures].[NullValue]) ,Format_String = '#.#0'
MEMBER [Measures].[Null / 0] AS
DIVIDE([Measures].[NullValue],[Measures].[ZeroValue]) ,Format_String = '#.#0'
MEMBER [Measures].[0 / 0] AS
DIVIDE([Measures].[ZeroValue],[Measures].[ZeroValue]) ,Format_String = '#.#0'
MEMBER [Measures].[0 / 100] AS
DIVIDE([Measures].[ZeroValue],[Measures].[Value]), Format_String = '#.#0'
MEMBER [Measures].[Null / 100] AS
DIVIDE([Measures].[NullValue],[Measures].[Value]), Format_String = '#.#0'

SELECT {[Measures].[Value],
[Measures].[NullValue],
[Measures].[ZeroValue],
[Measures].[Null / Null],
[Measures].[0 / Null],
[Measures].[Null / 0],
[Measures].[0 / 0],
[Measures].[100 / 0],
[Measures].[100 / Null],
[Measures].[0 / 100], [Measures].[Null / 100] } ON COLUMNS
, [MyDim].[MyAttribute].&[MyMember] ON ROWS
FROM [MyKioub]

Résultat :
DIVIDE_MDX

Si on ne spécifie pas de troisième argument  « alternateresult » dans la fonction DIVIDE() alors cette dernière retournera toujours « (null) ».
Vous pouvez donc remplacer ce comportement par défaut en spécifiant  une chaine de caractère ou un nombre positif.

Lien : FR – http://technet.microsoft.com/fr-fr/library/ms145626.aspx
EN – http://technet.microsoft.com/en-us/library/ms145626.aspx

Mosha wrote : http://sqlblog.com/blogs/mosha/archive/2007/01/28/performance-of-iif-function-in-mdx.aspx

CWebb wrote :http://cwebbbi.wordpress.com/2013/07/26/new-mdx-divide-function/

Retour Evènement – Les journées SQL Server 2013 (JSS 2013)

Un petit post pour remercier le GUSS, les sponsors et toute l’organisation de cet évènement.

Les JSS ont fêté leurs 3 ans d’existence en battant son record d’affluence :  365 professionnels ont assistés aux JSS 2013.

Quelques stats twitter : http://tweetbinder.com/rs/k3He8LfK9Yq.

Les phtotos : http://t.co/RI0keJizyI

Un petit clin d’oeil également à David Joubert  avec qui  j’ai eu le plaisir de préparer notre session sur SSIS.

On a voulu faire une petite session simple en montrant les principes de bases que l’on a dans SSIS.  Si cette session vous a plu on va pousser pour en faire une avec autre avec un niveau au dessus pour l’année prochaine.

Les webcasts sont bientôt disponibles.

Les slides : http://guss.pro/2013/12/07/slides-journees-sql-server-2013/

Il y a un sondage que vous pouvez remplir afin de nous faire remonter vos avis :  http://tinyurl.com/SondageJSS2013

JSS 2013 : Les Journées SQL Server 2013

La fin de l’année approche, le froid se fait ressentir, vos enfants commencent à découper des jouets dans les prospectus et les collent sur une feuille, vous pensez ce que vous allez faire pour ces fêtes…

Mais on n’échappe pas à une autre coutume les JSS, un évènement gratuit autour de SQL Server, cette édition 2013 se déroulera le 2 et 3 Décembre à Paris dans le centre de conférence de Microsoft.

JSS_2013

Avec David Joubert, nous animerons une session intitulée : SSIS – Design Patterns.

Demandez le programme !

planningJSS20131

Pour participez à l’évènement inscrivez-vous sur le site officiel : http://guss.pro/2013/12/02/journees-sql-server-2013/

Event – SQLSaturday à Paris 2013 : Samedi 14 Septembre

sqlsat251_web_thumb1Le SQLSaturday se déroulera pour la première fois à Paris le Samedi 14 Septembre 2013.

Au programme 3 parcours BI, DBA et Etudiant.

sans-titre

Et du beau monde en perspective …

Des sessions in english with famous people :

  • Jen Stirrup
  • Allan Mitchell
  • Hugo Kornelis

et nos compatriotes made in France :

  • Eiden Florian
  • Sauget Charles-Henri
  • Joubert David
  • Riehl Jean Pierre
  • Coutaud Romuald
  • Harel Patrice

et bien d’autre encore, un évènement à ne pas rater !

Inscription et plus d’infos :
http://guss.fr/
http://www.sqlsaturday.com/251/eventhome.aspx

SSRS – Répéter un élément d’une liste en tant qu’en-tête/pied de page

Le nom de cet article est peut être mal choisi mais il est difficile de donner un nom à ce genre de problème lié aux listes groupés, en-têtes/pied de page  (header/footer) et la répétition sur plusieurs pages.

Je vais essayer de vous l’expliquer.

Un petit rappel sur les listes dans SSRS.

Si on souhaite répéter un rapport sur plusieurs pages tout en étant libre de diposer des éléments on devra utiliser le composant List de SSRS.
Mais ce n’est pas tout, si on groupe cette liste par un champ/ID  on obtiendra des sous-ensembles de données qui vont être répétés au travers de la liste.
Et pour finir si on ajoute un Page Break sur ce fameux groupe (champs/ID) on aura comme résultat un ensemble de données par page.

Illustration

Pour illustrer rapidement, un petit exemple d’une fiche de renseignements d’une personne dans laquelle on afficherait également un tableau dans lequel on présenterait la liste de ses enfants.

Notre dataset renvoit un  jeu de données avec les informations liés à plusieurs personnes. Après avoir mis en place la liste, le groupement par numéro de sécurité social par exemple et le saut de page après chaque groupe on va obtenir  une seule fiche de renseignements par personne et par page.

De ce style :

Exemple

Bref tout va bien pour l’instant il n’y a rien de sorcier.

On peut tout de même se poser quelques questions.

« Si le tableau des enfants est trop grand ? Par exemple 10 enfants ? « 

Réponse :

« Il débordera sur la seconde page. Bien évidemment pour une meilleure lecture du tableau on pourra répéter les en-têtes de colonnes du tableau. »

Illustration :

Exemple2

Autre question.

« Mais si on souhaite que les  infos générales des parents s’affichent sur toutes les pages de la même manière que sur la première page ? Comme par exemple répéter le nom du parent au début de chaque page ? »

Illustration du résultat attendu :

Exemple3

Réponse :

« Haaa…Let me search :) ! »

Désormais ne cherchez plus ! Voici un moyen de répondre a ce type de demande.

L’astuce : Mode d’emploi

Il semblerait que cela fonctionne uniquement avec SSRS 2012, les tests sous SSRS 2008 ne donnent pas le même résultat.

Il existe une petite astuce qui vaut ce qu’elle vaut mais n’hésitez pas à laisser vos commentaires avec différentes pistes pour faire la même chose.

Pour parvenir a mes fins j’ai dû ajouter les champs dans la liste et les cacher (Propriété Hidden du groupe static ou de la ligne).  Par la suite j’ai ajouté un header au rapport dans lequel  je place des TextBoxes.

Grâce à des expressions j’appelle les valeurs de ces champs cachés de la liste via un ReportItems!NomTextbox.Value.
Un bon renommage des noms textbox cachés facilite l’utilisation de la collection ReportItems!.

Un conseil : Ajoutez les champs à utiliser dans le tableau dans une cellule vide de l’en-tête de colonnes ou ajoutant une ligne au dessus de l’en-tête du tableau. Cachez la ligne / les champs n’hésitez pas jouer sur la taille de la police dans certains cas pour ne pas perdre d’espace.

Pourquoi faire ceci ?  Pour le RepeatOnNewPage de l’en-tête de colonnes du tableau, les champs étant cachés dans une zone qui sera répétée sur les nouvelles pages, alors les Textboxs du Header étant eux aussi répétés automatiquement pourront à chaque page récupérer la valeur des champs. Si vous ne le faites pas les champs texte du header n’afficheront pas de valeurs.

ssrs_repeat_list_header

Résultat :

ssrs_header_list_demo

Autre comportement : si vous oubliez  de faire un saut de page dans le groupe alors les textbox du header afficheront les valeurs du dernier groupe de la page.

NOTE I :  On ne peut pas utiliser deux ReportItems  dans une expression.

NOTE II : Cela fonctionne aussi si l’on souhaite répéter dans le footer.

PS : Cela fait un petit moment que je n’ai pas publié d’articles. J’ai débuté une nouvelle expérience dans ma petite vie et j’ai du laissé de côté certaines choses. L’envie ne manquait (presque) pas le temps par contre…

Les Journées SQL Server 2012 alias JSS 2012

Oyé Oyé brave gens, qu’il est bon de retrouver mon vieux pti’ blog avec ce genre d’annonce.
Comme l’année dernière je participerai aux Journées SQL Server 2012 organisé par le GUSS. Les inscriptions sont ouvertes depuis quelques temps et le programme est disponible sur le site officiel :

http://jss2012.fr/2012/10/31/ouverture-des-inscriptions/

Je profite également de ce post pour annoncer mon retour en France. Et oui ! le Canada c’est terminé depuis deux mois (déjà le temps passe vite :) ).Vous comprenez donc pourquoi j’ai un peu disparu de la blogosphère.

Je reviendrai bientôt avec des idées de posts plein la tête…

Reporting avec SQL Server 2012 et SharePoint 2010: Excel, PowerPivot, PerformancePoint, PowerView et Analysis Services

Plus le temps passe et plus le nombre d’outils augmente avec chacun leurs spécalités et leurs exclusivités.

Le couple SQL Server 2012 et SharePoint 2010 offre une ribambelle d’outils et de services qui nous permettent de produire des rapports. Le dernier outil en date est PowerView, l’offre de reporting de Microsoft commence à avoir de l’allure et ce n’est que le début …
Cet article vous aidera à replacer Reporting services (SSRS), PerformancePoint Services (PPS), PowerPivot (Add-in For Excel et For SharePoint), Excel et Analysis Services dans tout ce monde tableaux et de graphiques.

Commençons simplement avec… Excel 2010, rien d’extraordinaire un « simple » tableur qui permet de se connecter à des sources de données. Excel est « limité » … mais reste un bon point d’entrée de consommation, de calculs et d’analyses de données. Alors pour pallier aux limitations d’Excel on peut ajouter PowerPivot un simple Add-In gratuit. Cet add-in nous permet de nous connecter à plusieurs sources de données en même temps, récupérer des millions de lignes et en plus on est capable de mettre en relation ces données d’horizon diverses dans un seul et même modèle.

On pourrait s’arréter à là si on souhaite faire de la BI personnel dans son coin.

Sauf que le partage de l’information est primordial. On peut donc publier son classeur Excel Power Pivot sur SharePoint. Pour mettre en place PowerPivot sur un serveur SharePoint il faut installer une instance de PowerPivot via l’installation de SQL Server. Donc vous l’aurez compris PowerPivot est à la base un add-In Excel gratuit qui possède son « équivalent » server nécessitant un SharePoint et un SQL Server.

Parlons de SharePoint, il est capable de contenir de la BI. Depuis la version 2010, l’outil de dashboarding Performance Point est disponible, et depuis ses anciennes versions on peut intégrer des rapports de SQL Server Reporting Services. Il faut compter aussi sur ReportBuilder qui est un SSRS pour power user.

Donc oui dans SharePoint on peut mettre du PowerPivot, du Dashboard de Performance Point et des rapports classiques de SSRS. Voilà un vite tour d’horizon de ce qui existe.

Et Analysis Services  dans tout ça ? Pourquoi en parler de SSAS ?

Tout simplement parce qu’il sera dificile de ne pas y penser naturellement avec SQL Server 2012. En effet avec les nouveautés de SSAS  (mode tabulaire) de nouvelles combinaisons sont dorénavants possibles dans l’élaboration d’une solution BI.

Une ébauche de solution BI basée sur Excel et PowerPivot bâti par un business user peut vite se transformer en un cube de données hébergé sur un server disponible par un grand nombre de personnes. Et sur lequel on pourra se baser pour faire des beaux rapports PowerView.

Et pour clarifier un peu les choses sur SSAS :

  • PowerPivot For SharePoint : créé une instance SSAS PowerPivot par défaut le nom est .\POWERPIVOT. On peut passer par Management Studio pour le voir et il y a également module de gestion des classeurs dans SharePoint.
  • PowerView est capable d’avoir comme source de données des sources de type tabulaire : soit un classeur PowerPivot soit un cube SSAS mode tabulaire de SQL Server 2012.
  • Un classeur peut être « converti » en un cube SSAS tabulaire.
  • PerformancePoint peut utiliser un classeur PowerPivot comme source de données multi dimensionnel, et peut aussi gérer les cubes SSAS mode tabulaire.

Le screensot ci-dessous  vous montre l’instance PowerPivot et l’instance de SSAS tabulaire dans Management Studio.

L’avenir…Office 2013 et SharePoint 2013

Avec l’arrivée de Office 2013, Excel devient encore davantage le point d’entrée BI avec PowerPivot et PowerView en natif. Quant à SharePoint 2013 il reste l’outil de collaboration dans lequel on va stocker les différents rapports/dashboard. En sachant que PerformancePoint Services a connu pas mal de petits changements. Affaire à suivre…

Plus d’infos sur Excel 2013, l’ article de  David : http://joubertd.blogspot.ca/2012/07/office-15-excel-2013-powerpivot-et.html

Pour finir un schéma explicatif des relations entre les outils/services :