Election du GUSS : I need you (again) !

Si vous avez raté l’info, le GUSS, Groupe des Utilisateurs SQL Server, renouvelle son bureau en 2014. En effet, légalement le GUSS est une association comme une autre, avec ses statuts et son bureau, dont je faisais partie en 2013.

L’appel aux candidatures a eu lieu en janvier, vous retrouverez les copains par là, et maintenant vient le tour de voter (si possible pour moi :)). Pour rappel vous pouvez voter si vous avez été membre actif du GUSS en 2013, ce qui se résume plus ou moins à la création d’un compte sur GUSS.FR ou GUSS.PRO avant le 01/01/2014 (lors par exemple d’une inscription aux JSS2013, ou au SQLSaturday Paris)

Si c’est le cas, allez-y, c’est vous qui déciderez de l’avenir du GUSS en fonction du choix de son board !

Oui j'ai un programme!

Non mais en fait oui, j’ai bien un programme!

Je rappelle ici mon petit speech :

Pour moi le GUSS c’est plus que les JSS et les SQLSaturday. C’est une communauté de professionnels et d’étudiants, qui arrivent à mettre de côté leurs différences (BI vs dba, Flocon vs Etoile, Multidim vs Tabular…) pour contribuer à l’amélioration continue de tout l’écosystème. Et ça c’est beau !

De mon côté je suis consultant décisionnel, manageur d’une équipe de 15 consultants au talent reconnu (de manière impartiale par moi-même) et MVP SQL Server. Ma philosophie c’est d’éduquer, de transmettre le savoir autour de moi, que ce soit dans mon équipe, auprès de mes clients, directement par mail ou encore aux événements du GUSS. Mon idée c’est que si tous les datawarehouses fonctionnent bien chez tous, on pourra enfin faire du data-mining…

En 2014, j’œuvrerai principalement au GUSS pour sa pérennisation. A mon sens 2 sujets prioritaires: l’optimisation de nos processus internes et le renouvellement des bonnes volontés. Mon premier parce que le canard, il pédale sérieusement sous la ligne de flottaison pour arriver à livrer tous ces beaux événements, et il fatigue.  Mon second parce que pour grandir, il va nous falloir du sang neuf pour l’organisation et l’animation des événements à venir. Avis aux bonnes volontés !

Retour du MVP Summit, et des Journées SQL Server 2013 !

Me voilà enfin revenu du MVP Summit (après une escale d’une semaine à San Francisco) juste à temps pour participer aux JSS2013 qui ont eu lieu ces lundi et mardi.

Pour le MVP Summit, je ne peux malheureusement rien vous dire de concret, les rappels NDA ayant été assez violents. Cela dit, et par rapport aux évolutions importantes que subit l’offre décisionnelle de Microsoft en ce moment, je ne vous ferai pas le coup classique du « faites confiance à Microsoft ». D’abord parce que la confiance n’a rien à faire dans l’histoire, ensuite parce qu’on ne fait pas confiance à une entité mais à des individus.

Je vous dirais donc plutôt que les choix qui sont faits vis-à-vis des roadmaps des produits sont faits consciemment, en pesant les impacts qui en découlent sur l’offre globale et sur l’écosystème. Je vous dirais également que parmi les individus qui font ces choix, les Executives et Product Managers de Microsoft, il y a effectivement des gens brillants.

En dehors de ces considérations c’était vraiment un voyage génial. Visiter le campus de Microsoft, rencontrer les responsables et développeurs des produits qu’on utilise, rencontrer les MVP du monde entier, c’est une opportunité incroyable. Je remercie sincèrement tous les gens qui contribuent à ce programme.

Un burger à Seattle

Au moins les burgers ne sont pas sous NDA 😉

On revient en France avec les Journées SQL Server, qui se sont déroulées en ce début de semaine. Au final plus de 350 présents, un super feedback sur la qualité globale du contenu (y’a toujours des efforts à faire mais ça s’améliore chaque année), et une communauté SQL Server de plus en plus forte.

Encore une fois merci aux sponsors, qui contribuent juste à 100% du budget de la chose vu que le GUSS est une association quasiment sans liquidité. Et merci également à tous les copains qui ont participé à l’organisation. On a bossé comme des fous les soirs et les week-ends depuis 6 mois pour monter tout ça, et c’est une vraie satisfaction de voir le résultat obtenu. Spéciale dédicace à David Joubert et Aurélien Koppel, qui ont assuré le caramel pendant que les MVPs se la coulaient douce à Seattle!

Du côté de ma session je suis vraiment content d’avoir invité Jordan Mootoosamy et Thomas Morisson à partager le temps de parole. Je les ai trouvé très bons tous les deux, tant sur le fond que sur la forme. A refaire!

Jordan présente aux JSS2013

Quelle classe ce Jordan!

Pour cette session je voulais remercier Steven Currie de Varigence, qui nous a fourni les licences Mist pour nos tests et qui a essayé de nous envoyer des jolis t-shirts à vous distribuer (un petit couac de ma faute avec la douane et ils sont repartis directement aux USA). Et également merci à Cédric, le contributeur principal de NBi, pour ses réponses à mes questions de newbie sur son outil…

Au niveau de l’audience la salle était pleine, soit autour de 60 personnes. J’en profite pour remercier tous ceux qui sont venus. C’est sincèrement super satisfaisant de voir que les sujets traités intéressent autant de monde ! Si vous étiez là, n’hésitez pas à nous faire votre retour dans les commentaires.

Enfin, je mets à votre disposition les slides de cette session Pratiques et Outils pour la BI Agile. (MàJ : le webcast est maintenant dispo). Les présentations des autres sessions des JSS devraient bientôt arriver sur le site du GUSS, et également les vidéos, puisque tout a été enregistré.

Les Journées SQL Server 2013 : à ne surtout pas rater!

Alors ok, vous connaissez la rengaine, on est reparti pour la promotion du prochain événement du Groupe des Utilisateurs SQL Server, le GUSS, ALORS OUI MAIS NON !

Parce que pardonnez-moi le ton mais… honnêtement cette année on déchire comme jamais au niveau du contenu!

Les JSS2013 ça déchire

Jugez vous-même :

Agenda des JSS2013PS : Oui vous pouvez cliquer dessus si c’est trop petit 🙂

Sur chacune des 2 journées vous retrouverez 2 thèmes, qui sont instanciés côté moteur (dba/SQL) et côté BI :

  • Jour 1, le lundi 2 décembre, on causera des nouveautés SQL 2014 d’une part, et de l’infrastructure et du cloud de l’autre, avec par exemple :
    • Un deep dive sur Hekaton, le in-memory OLTP de SQL Server
    • Une présentation sur PDW v2, la nouvelle solution pour les méga DataWarehouse de Microsoft (miam miam des PetaBytes !)
    • Une bonne grosse tranche de Power BI, pour être certain d’être bien à jour sur la nouvelle vague d’outils BI de notre éditeur favori
    • Un retour sur l’infrastructure, avec comment bien monter son hard pour SQL Server, que ce soit par la BI ou plus globalement avec une vision datacenter
  • Jour 2, le mardi 3 décembre, on causera Usages et Outils d’une part, et on creusera les sujets en mode Perfectionnement de l’autre, avec entre autres :
    • Un panorama exhaustif de tous les sujets à maîtriser pour un dba SQL Server : les stats, les locks, la haute dispo…
    • Toujours pour les dba et aussi pour les développeurs SQL, des choses un peu plus originales comme une session dédiée à vous expliquer les langages bizarres du décisionnel, des astuces pour bien gérer SQL Server pour SharePoint, ou encore un focus sur l’Agilité et son impact sur les bases de données
    • Côté BI on a MARCO RUSSO !!!!! Est-ce que j’ai besoin d’en dire plus ? Bon ok : du SSAS et du SSIS côté perfectionnement, et côté usages et outils, une matinée Big Data et une après-midi BI Agile. Je vais revenir sur la BI Agile parce que je fais partie de la track, mais honnêtement ça me fait rêver : TDD, Tests automatiques, BIML… On s’équipe enfin côté BI !

Ajoutez à ça des tables rondes sur la gestion de carrière, sur l’agilité, et surtout avec les Girls in Tech, ça va bien le faire.

Et puis niveau sponsor on a du lourd cette année, ils seront tous présents dans la zone d’exposition, donc que vous cherchiez un prestataire ou un futur employeur, vous êtes obligé de trouver !

Comme d’habitude les inscriptions sont gratuites, ce sera les lundi 2 et mardi 3 décembre, dans le centre de conférence de Microsoft à Issy-Les-Moulineaux (Paris), alors venez – et faîtes passer le mot 😉

Journées SQL Server 2013

Edito : l’avenir de la BI Microsoft, ma liste de courses au Père Redmond

Lorsqu’il était devenu clair que la BI Self-Service devenait le cheval de bataille de notre éditeur préféré, mes camarades et moi-même avions eu une réflexion sur l’avenir de la Business Intelligence dans l’écosystème Microsoft.

Je me prête à l’exercice à nouveau, alors que SQL Server 2014 a été annoncé, sans aucune mention d’une quelconque nouveauté côté décisionnel.

Cher Microsoft, voici les 3 outils que j’aimerais vraiment vraiment que tu nous sortes, pour réellement améliorer mon quotidien de consultant et de définitivement faire de SQL Server la plateforme décisionnelle n°1.

SQL Server amélioré

  • Power SSRS 2014. Je rêve d’une vraie refonte de SSRS, qui quand on y pense n’a pas reçu d’évolution majeure depuis 2005. Parce que si Reporting Services reste aujourd’hui une offre viable pour le reporting de masse, c’est uniquement parce que les concurrents ne sont pas beaucoup plus beaux, et qu’en plus ils coutent un bras (plus un œil pour MicroStrategy). Alors voilà, moi je veux un SSRS 2014, en HTML5 (pour tous ces iPhones et iPad), intégré à Azure (pour un roulement continu de mises à jours, vive les technos web !), qui utiliserait le Data Management Gateway de Power BI pour accéder à ses sources, avec un designer de top niveau (pourquoi pas dans le browser, comme QlikView.Next) qui respecteraient les bonnes pratiques de la data-viz la Tableau). I want to believe !
  • Un Data Model « mixte » dans Excel 2013. Par là j’entends la possibilité d’intégrer les tables de SSAS Tabular directement dans le Data Model de Power Pivot, sans rapatriement des données. Une propriété de table, qui dirait que les données peuvent rester sur Tabular. On aurait les performances d’un mode serveur, avec la souplesse d’un Power Pivot (définition de mesures en DAX, possibilité de définir des relations et des tables liées directement dans Excel). Parce que pour le moment le scénario d’upgrade de Power Pivot vers SSAS Tabular n’est pas aussi lisse qu’il devrait l’être, sans la possibilité de rebrancher un dashboard du Data Model vers SSAS Tabular dans Excel 2013 (obligation de redev), et sans la conservation de l’aspect self-service (ajout de données locales, création de mesures à la volée) quand on passe de Power Pivot à SSAS Tabular.
  • Un outil de statistiques, d’analyse prédictive et de data-mining. Pas besoin d’en raconter des tonnes de ce côté: le DMX sur SSAS multidimensionnel ça sent clairement le sapin. Il est plus que temps de remplacer la chose par quelque chose de moderne, qui utilise les nouveaux moteurs, pourquoi pas à base de R.

Parce que oui, on a un des meilleurs ETL du monde, SSIS, et que la relève arrive gentiment à travers Power Query, et que ça sent bon. Et que oui, on a un des meilleurs moteurs SQL du marché, SQL Server, sans discussion possible.

Mais on perd inexorablement du terrain sur le reporting de masse, cas d’usage qui n’est définitivement pas remplacé par le self-service. Et que les cas d’usages sur le moteur VertiPaq / X-Velocity se doivent d’être infaillibles s’il doit crédiblement remplacer SSAS Multidimensionnel, un papy aux fonctionnalités bien rodées.

Microsoft, donne-nous les produits, et on te les trouvera les clients…

On vous les trouvera les clients...

Et vous alors ? Y’a quoi sur votre liste de courses ? 🙂

Un peu de MDX de bon matin…

Je pique exceptionnellement le flambeau à François pour moi aussi vous causer MDX. Évidemment ça ne sera pas aussi pointu (voir piquant) que lui, mais pour une fois j’ai quelque chose à dire sur ce sujet…

A la base mon besoin était assez simple : créer un graph dans SSRS avec une date de départ et une date de fin fixées par des attributs de dimension de SSAS.

Typiquement : j’ai une dimension projet, dans cette dimension j’ai un attribut date de départ théorique (DDT), et un attribut date de fin théorique (DFT). Je veux que peu importent mes faits, mon graph couvre cette période théorique :

MDX - Le Besoin

A mon sens la grande méthode pour faire ça c’est de créer un set de dates allant de la DTD à la DTF. Ce set doit évidemment être composé d’éléments de la dimension Temps utilisée dans le groupe de mesure concerné, il va donc falloir passer des attributs de la dimension projet ([Projet].[DDT].&[…] et [Projet].[DDF].&[…]) à la dimension temps ([Temps].[Date].&[…]).

Le MDX étant un langage particulièrement efficace en termes de manipulation de chaînes de caractères (hur hur), ça va être un bonheur… Trêve de sarcasme, on peut utiliser quelques fonctions VBA en MDX qui vont ici nous sauver la mise (à adapter en fonction des formats de vos dates):

MDX - La requête qui en cast!

Ce n’est pas ultra élégant, mais ça marche… pas !

Le message d’erreur :  La fonction Axis1 attend une expression d’ensemble de tuples pour l’argument . Une expression de chaîne ou numérique a été utilisée.

Notez que la manipulation de projection des dates sur la dimension Temps marche, elle. C’est autre chose qui coince.

Le problème c’est qu’au moment où TimeSet est évalué, on n’a pas de CURRENTMEMBER sur la dimension Projet. En effet, en même temps (ON 1) qu’on essaye de résoudre TimeSet, on parcourt la dimension Projet, le CURRENTMEMBER n’est donc pas figé. On reçoit donc ALL dans le MEMBER_VALUE, que le STRTOMEMBER n’arrive pas à mapper correctement sur la dimension Temps. C’est le drame.

 

Tout ça parce que comme en SQL, en MDX le moteur interprète la requête dans un certain ordre. En faisant un gros raccourci, ici il commence par le FROM, puis le WHERE (slicer), puis les axes en itérant sur le 1 pour résoudre le 0. Dans une étape, tous les éléments sont interprétés en même temps : ça coince effectivement sur le TimeSet.

J’ai du mal à trouver des articles intéressants sur ce sujet, n’hésitez pas à soumettre les vôtres.

Pour comprendre le problème, on peut repartir d’une requête MDX plus simple, et basée sur AdventureWorks (je ne caste plus ma Start Date sur la dimension temps, je veux juste la faire apparaître en ON 1 comme dans mon cas réel):

WITH

    MEMBER Test1 AS [Product].[Start Date].CURRENTMEMBER.MEMBER_UNIQUE_NAME

 

SELECT

        [Measures].[Order Count] ON 0,

        STRTOMEMBER(Test1)

        *

        [Product].[Product].[Product].MEMBERS ON 1

 

FROM    [Adventure Works]

Le résultat, ma date est remplacée par ALL (« Tous les Produits ») dans le STRTOMEMBER(Test1) :

Mauvaise pioche

Si maintenant je filtre mon produit en slicer (typiquement l’endroit où on mettra le paramètre du rapport pour SSRS), la requête devient valide :

WITH

    MEMBER Test1 AS [Product].[Start Date].CURRENTMEMBER.MEMBER_UNIQUE_NAME

 

SELECT

        [Measures].[Order Count] ON 0,

        STRTOMEMBER(Test1) ON 1

       — *

       — [Product].[Product].[Product].MEMBERS ON 1

 

FROM    [Adventure Works]

WHERE    [Product].[Product].&[447]

La c'est bon!

Ici il existe un CURRENTMEMBER au moment où on évalue Test1, tout roule. La solution est trouvée pour mon rapport, à moi de placer mon STRTOMEMBER(@Parameter) dans le WHERE.

Mais oui mais vous voulez itérer en même temps sur le TimeSet/Test1 et les projets/produits ? Il va falloir siouxer et passer l’attribut dans une mesure.

WITH

    MEMBER [Measures].Test1 AS [Product].[Start Date].CURRENTMEMBER.MEMBER_UNIQUE_NAME

 

SELECT

      {[Measures].[Order Count],Test1} ON 0,   

        [Product].[Product].[Product].MEMBERS ON 1

 

FROM   [Adventure Works]

Ce qui donne:

Mouais

Si ça marche pour le cas simple, on perd le cas d’application premier avec le TimeSet. Je n’ai malheureusement pas de solution à l’instant T. Si ça me vient je compléterai.

On a donc vu deux choses : comment passer d’un attribut d’une dimension à une autre grâce aux commandes VBA, et l’ordre d’exécution d’une requête MDX et comment il peut casser vos jolies sets et membres calculés. J’aimerai en rajouter une troisième, la propagation des contraintes sur les attributs dans les dimensions. François en avait parlé aux derniers JSS, j’en remets rapidement une couche ici.

Si quand vous passez votre filtre en WHERE vous utilisez la clef de la dimension, ça marche :

WITH

    MEMBER Test1 AS [Product].[Start Date].CURRENTMEMBER.MEMBER_UNIQUE_NAME

 

SELECT

        [Measures].[Order Count] ON 0,

        STRTOMEMBER(Test1) ON 1

 

FROM    [Adventure Works]

WHERE    [Product].[Product].&[447]

Ca marche!

Par contre si vous utilisez un attribut de plus haut niveau, ça ne marchera pas :

WITH

    MEMBER Test1 AS [Product].[Start Date].CURRENTMEMBER.MEMBER_UNIQUE_NAME

 

SELECT

        [Measures].[Order Count] ON 0,

        STRTOMEMBER(Test1) ON 1

 

FROM    [Adventure Works]

WHERE    [Product].[Model Name].&[Cable Lock]

Ca ne marche plus :/

En effet, si on affiche les relations entre les attributs de la dimension (via SSDT BI), on verra que le Model Name ne contraint pas la Start Date, puisque si les contraintes peuvent remonter l’arbre (Model Name vers Product), elles ne le redescendent pas à partir de là (Product vers Start Date).

La classe ce SSDT BI 2012!A vous d’utiliser les bons attributs, et de bien construire vos cubes, pour que les requêtes fonctionnent bien.

Utilisation du VBA, ordre de résolution des requêtes, propagation des contraintes sur les attributs… Pfiou, c’était du lourd tout ça ! Heureusement que le DAX arrive pour simplifier tout ça (hur hur).

Spéciale dédicace à Jordan Mootoosamy, qui a bien souffert avec moi sur cette requête 😉

SQLSaturday 251 : Retour et slides de la Saisie de données pour la BI

Rapide retour sur l’événement qui a eu lieu samedi 14/09/13, et qui a mon gout a été un vrai succès !

SQLSaturday 251 - L'arrivée

Je n’ai pas les chiffres exacts mais il me semble qu’une centaine de personnes ont répondu présent. Les sponsors étaient là, un grand merci à Fusion-io (vous n’avez plus le droit de ne pas les connaître !), Azeo et D-Cube.

Le PASS était également présent en la personne de Niko Neugebauer (un personnage vraiment sympathique), et en fait toute la communauté du GUSS était là :

SQLSaturday 251 - La communauté

Mais surtout, vous étiez là ! (Bon ok, la première séance le matin c’était un peu dur 🙂 )

SQL Saturday 251 - Reveil Difficile

Concernant notre session sur la saisie de données pour la BI, j’avoue que je suis plutôt satisfait de mon compère David et moi-même. Une seule démo qui plante (désolé mais sans Wizard moi je sais pas faire du Access ;)), à mon sens un bon rythme, en tout cas un bon feeling. N’hésitez d’ailleurs pas à me faire vos retours en commentaire !

SQL Saturday 251 - Session saisie de données!

Enfin, si vous voulez les supports, c’est par là. Vous trouverez toutes les infos sur le licensing lié aux solutions qu’on vous a proposées, et tout un tas de liens pour vous aider à mettre en œuvre les techniques qu’on vous a présenté.

Le webcast arrivera quand il arrivera, mais en attendant n’hésitez pas à lancer Visual Studio et aller vous éclater avec LightSwitch (tous les liens nécessaires dans les slides).