Analysis Services dans Azure!

Je suis sûr que vous avez noté l’arrivée récente de SSAS Tabular en mode PaaS dans Azure. Je voulais rapidement revenir dessus parce que ça faisait au moins 2 ans qu’on le sentait venir, et que finalement ça valait le coup d’attendre.

aas_1.png

Rappel : je bosse chez Microsoft maintenant. Même si ceux qui me connaissent savent que ça ne changera pas grand-chose à mon avis sur les produits, je préfère le rappeler pour être 100% transparent 😉

Azure Analysis Services c’est tout simplement la possibilité de déployer ses modèles SSAS Tabular dans le cloud sans se soucier du tout de l’installation ou de la configuration d’un serveur. Si on ajoute à ça le fait qu’il est désormais possible de développer un modèle Tabular dans SSDT en mode intégré (sans disposer d’une instance workspace), on peut donc aller du prototype à la production sans jamais toucher une ISO d’installation de SQL Server. Cool 😉

« Oui mais moi j’aime mieux Multidim ! » dirons certains. J’y répondrais qu’il n’est pas écarté qu’on voit les cubes rejoindre Tabular dans le service (le flou est maintenu dans l’annonce : « Support for multidimensional models will be considered for a future release, based on customer demand ». Mais surtout je dirais que SSAS Tabular est devenu vraiment solide avec SQL Server 2016, et qu’il est urgent de lui donner une deuxième chance (performance, support du many-to-many, nouvelles fonctions DAX…).

Je vous fais un petit tour d’horizon de comment c’est génial, en montant un datamart et le cube associé en moins de 30 minutes.

  • Au programme:
    • Création d’une base SQL Azure pour notre datamart
    • Création d’une instance Azure Analysis Services
    • Création d’un modèle SSAS Tabular dans Visual Studio (SSDT)
    • Déploiement du modèle dans Azure Analysis Services
    • Accès au modèle avec Power BI, Excel et SSMS

Tout commence dans le nouveau portail Azure : https://portal.azure.com. Si vous n’avez pas de compte Azure pas de problème, vous pouvez tout essayer gratuitement

  • Première étape : Création de la base de données sur Azure SQL Database pour mon datamart, histoire de tout faire en PaaS

Pour un DWH de taille respectable on devrait plutôt utiliser Azure SQL Data Warehouse, mais pour s’amuser une SQL Database suffit:

aas_2.png

Je vais la pré-remplir d’un sample: AdventureWorksLT v12. Notez que c’est une option à la création de la base, parfait quand on veut juste jouer avec le produit:

aas_3

Je valide, et on peut laisser tourner et passer à la suite en attendant 😉

  • Deuxième étape : la création de notre instance Azure Analysis Services

Cette fois-ci on regarde du côté Intelligence + Analytics:

aas_4.png

Ne vous embêtez pas pour le pricing tier, D1 suffit pour notre petit test. Idéalement on devrait mettre la base SQL et Analysis Services dans le même groupe de ressources, et donc la même location. Par grave pour notre test si ce n’est pas le cas:

aas_5.png

Là encore je valide et on laisse tourner.

  • Troisième étape: dans SSDT (SQL Server Data Tools, les templates data/BI pour Visual Studio) on va créer un nouveau projet SSAS Tabular

Pas de panique si vous n’avez pas SSDT, il est désormais disponible en download direct et gratuit, tout comme SSMS d’ailleurs. N’hésitez pas à télécharger la version la plus récente, elle se base sur Visual Studio 2015, et est capable de gérer des projets SSAS/SSIS/SSRS de SQL Server 2012 à 2016

New Project > BI > Analysis Services > AS Tabular:

aas_6

Profitez du mode intégré, c’est tellement plus pratique:

aas_7

De là on va pouvoir se connecter à notre datamart : Model > Import From Data Source:

aas_66

aas_8

Un petit guide pour savoir comment configurer la connexion:

aas_9

On passe sur l’impersonation pour le moment avec une option par défaut:

aas_91

On veut ensuite choisir nos tables:

aas_92

De quoi construire un petit modèle, avec 2 tables de fait et 4 dimensions :

aas_93

Ça charge, et on peut valider que le modèle ressemble bien à quelque chose grâce à la vue en diagramme:

aas_94

On peut ajouter des mesures, changer la direction du filtre en bidirectionnel entre les 2 tables de fait… Ou s’en passer 😉

La partie marrante c’est le déploiement. Dans les propriétés du modèle:

aas_95

On configure la destination du déploiement. Retenez le nom du serveur (asazure://…) c’est celle qu’on utilisera plus tard pour se connecter à SSAS avec Excel ou Power BI :

aas_96

Et lorsqu’on déploie:

aas_97

Après une demande de credentials pour le processing du cube post déploiement:

aas_98

On obtient un cube déployé dans les nuages !

  • Quatrième et dernière étape: on va se connecter à notre cube avec SSMS, Power BI ou encore Excel

Le nom du serveur on l’a déjà, c’est celui qu’on a utilisé plus tôt au moment du déploiement (asazure://…).

Power BI: Get Data > SSAS

aas_991

Excel: Get External Data > SSAS

aas_992

Notez qu’il faut choisir l’option User Name / Password, et utiliser le compte Azure qui vient de créer le service (c’est juste pour le test, évidemment il est possible de créer toute une liste d’utilisateurs via Azure AD):

aas_993

Enfin, avec SSMS, si vous êtes intégré avec Azure Active Directory ça marchera tout seul, sinon voir cet article (c’est simple):

aas_994

Magique non ? 😉

Si ça vous plait, je vous encourage à l’essayer ainsi qu’à suivre le compte Twitter @Azure_AS pour être mis au courant de toutes les nouveautés.

S’ouvrir l’esprit

C’est en lisant l’article tout récent de Troy Hunt que j’ai mis des mots sur une sensation ressentie dernièrement:

There’s this odd thing that tends to happen in many peoples’ careers and I suggest it’s particularly prevalent in technology: you get really, really good at something and then it hits you – you have to stop it. Well actually, you could continue doing it, but not if you want to “progress” against traditional measures such as seniority and income.

En français dans le texte:

Il y a cette chose étrange qui se produit dans la carrière de beaucoup, et qui je crois est prévalent dans la technologie: lorsqu’on devient vraiment, vraiment bon dans son domaine, l’évidence se fait: on doit arrêter. En fait rien n’empêche de continuer, mais cela va à l’encontre d’une progression sur des métriques comme la séniorité et le salaire.

C’est d’ailleurs une idée qui se marie très bien avec certaines théories dont on a déjà parlé ensemble, particulièrement le fait que les sur-performeurs ont tendance à rester coincés sur le poste qu’ils occupent (pourquoi les promouvoir, ils sont tellement bons là où ils sont!). Une autre problématique c’est que plus le gap est important entre son niveau d’expertise et repartir à 0 dans un nouveau domaine, plus le cerveau fuit la possibilité: ça fait trop mal à l’égo. Et tout un tas d’autres raisons.

Bien évidemment, rien de dramatique de mon côté: j’aime la BI sur SQL Server et cela reste mon gagne pain principal. Cependant je prends conscience de certains faits: le sujet n’est plus qu’une part minime de ma veille technologique, et au final, les projets excitants qui se dessinent à l’horizon concernent des technologies différentes.

Quels sont justement les sujets sur lesquels je creuse en ce moment? J’en ai déjà parlé:

  • Le Machine Learning, via le parcours Data Science de l’Université John Hopkins sur Coursera.
  • R, le langage de manipulation de données, via le même parcours
  • Python, un langage objet avec une syntaxe simple, pour me remettre gentiment dans le bain du « vrai » développement. L’excellent tutorial pour Python c’est Learn Python the Hard Way
  • L’intégration de données moderne, via des lectures et vidéos dont je vous reparlerai plus tard, à transposer sur Azure avec entre autres Event Hub et Stream Analytics

Evidemment ça fait beaucoup de front, alors j’alterne sur des cycles de 2/3 mois: Coursera, Intégration, Python… Et tant qu’à causer logistique, je me suis équipé de Coach.me, qui permet de rester motiver dans la durée grâce au principe des chaînes/streaks. L’autre nouvelle habitude c’est de pousser mes développements perso sur Github, comme ça je m’améliore aussi sur la partie ALM. L’avantage d’avoir commencé par Coursera c’est qu’une partie des premiers cours était dédiée à Github et au Markdown.

Franchement je m’éclate. L’ensemble débloque des scénarios d’usage vraiment sexy, genre « Internet of Things » (marketing power!), avec par exemple: la mise en place d’un dashboard web qui affiche en temps réel la température de la pièce. Rigolo non?

Pour ça on mélange un tas de technos et c’est ça qui est top:

  • Une board Arduino Yun
    • Jouer avec les composants électroniques pour cabler le capteur
    • La logique embarquée (du pseudo C) pour relever la température chaque seconde
    • Le module wifi pour envoyer le relevé vers Azure, auquel en accède en Python en y intégrant le SDK Azure
  • Côté Azure
    • Paramétrer l’Event Hub en PowerShell
    • Implémenter la logique d’agrégation dans Stream Analytics via du pseudo SQL et une logique de streaming
    • Finalement écrire les résultats dans Power BI avec l’API Rest

Et je vous avoue que voir la courbe de température évoluer en temps réel quand on réchauffe le capteur en le touchant, c’est bête mais ça provoque de la vraie joie!

Tout ça pour dire que je vous dois une série d’articles sur tout ça, et que je m’y mets de ce pas! En attendant, n’hésitez pas à vous y mettre de votre côté. Oui ça peut faire peur toutes ces technos étranges, mais en persévérant ça finit par rentrer 😉

Un sauteur de haie qui oublie de sauter, mais qui finit quand même la course!

SQLRally Nordic : Construire une plateforme BI moderne en PaaS avec Azure

Si vous vous demandiez ce qui a expliqué ce long silence hivernal, voici l’une des principales raisons!

En effet j’ai été invité début mars à présenter une session au SQLRally Nordic 2015 à Copenhague. Pour ceux qui ne la connaissent pas, c’est une belle petite conférence sur 2 jours (4 tracks), payante, et si vous allez voir la liste des speakers vous verrez que le niveau est assez sympathique.

Tant qu’à me mettre en risque j’ai joué le tout pour le tout, en choisissant un sujet novateur et un peu provocateur. Parce que oui, faire de la BI en PaaS dans le Cloud, c’est provocateur!

Gif animé de Loki, personnage Marvel

Faîtes moi confiance, ça passe dans le Cloud, sans aucun problème!

Bon je ne m’attendais pas non plus à déclencher une bagarre générale dans la salle, mais j’ai quand même eu un peu d’appréhension que cela dégénère en un débat sur la théorie fondamentale du datawarehousing, dans la langue de Shakespeare. Rien de tout ça, la session s’est bien déroulée, la preuve en vidéo (oui je dois travailler sur mon accent… et ma démo!) :

Les idées que j’expose dans ce talk me parlent beaucoup en ce moment (architectures lamba/kappa, software containers, micro-services), si vous avez un peu de temps je pense que ça vaut le coup d’oeil. Par ailleurs j’ai proposé cette même session au PASS Summit 2015 (oui je suis un malade, mais ça n’est pas non plus un grand risque vu le peu de chance d’être sélectionné), et je vais globalement travailler dessus pour l’améliorer et pourquoi pas la présenter en France avant la fin de l’année.

Dans l’attente, les slides et les références que je conseille très vivement, avec une mention spéciale à Martin Kleppmann et son talk « Turning the database inside out« , juste exceptionnel:

Y’a un truc qui m’intrigue à Redmond…

Lors de la keynote du PASS Summit 2014, le mois dernier à Seattle, nous avions eu droit à la présentation de la nouvelle organisation de l’équipe Data Platform de Microsoft, par son leadership flambant neuf:

Des visages sur des noms

Trois patrons pour trois lignes de produit, alignées comme indiqué sur ce schéma (désolé pour la qualité patate):

L'organisation MS 2014 pour la Data en image

Si on repart du fond de la stack:

  1. Capture + Manage : T.K. « Ranga » Rengarajan, patron de Data Platform, Cloud & Entreprise. A comprendre : SQL Server, Azure SQL Database, Azure HDInsight, Azure DocumentDB, Azure Search and Analytics Platform System
  2. Transform + Analyze : Joseph Sirosh, patron de l’Information Management & Machine Learning. A comprendre : Tous les services Azure Data
  3. Visualize + Decide : James Phillips, patron de Power BI, tout du moins la partie sur O365 (dashboards, Q&A, Mobile…)

Là dessus je me fais les remarques suivantes:

  • Ranga ancien SAP, Joseph ancien Amazon, James co-fondateur de Couchbase, les 3 ont moins de 2 ans d’ancienneté chez MS, ça sent l’air frais, c’est plutôt bon signe
  • Ranga et Joseph sont CVP (haut gradés), James n’est « que » General Manager, bizarre cette différence de traitement…
  • Vis à vis des périmètres de chacun:
    • Pour Ranga on a une ligne claire de produits, énoncée dans sa fiche speaker, pas de doute possible
    • Pour Joseph, il fallait être là en scéance mais ont été nommés : Azure Data Factory, Azure Stream Analytics et Azure Machine Learning. On en reparle plus bas.
    • Pour James c’est moins clair. Power BI ça veut tout et rien dire, et si on s’en réfère au slide ci-dessus on note l’absence de la partie add-ins intégrée à Excel (soit à mon sens la plus importante), qui on le sait est retombée dans l’équipe Office. Bon il en parle quand même pendant la session, mais manifestement ça n’est pas dans son scope. Notons qu’il nous a parlé également de 2/3 autres trucs mignons qui arrivent et sont eux dans son scope : les Dashboards Power BI et l’amélioration du refresh on-premise/Power BI (genre SSAS et scheduling)

On en revient à Joseph, en reprennant le slide et en essayant de matcher les produits qu’on connaît en face:

  1. Orchestration -> Azure Data Factory
  2. Information Management -> ?
  3. Complex Event Processing -> Azure Stream Analytics
  4. Modeling -> ?
  5. Machine Learning -> Azure Machine Learning

Hum… Y’a des trous! Et si on observe le pattern, ça sent les services Azure managés, pour de l’Information Management et du Modeling! Wait, what?

Je ne sais pas vous, mais moi ça m’intrigue définitivement 😉

J'ai hâte!!

Ma première analyse Machine Learning avec Azure ML – Slides et Webcast de la session aux JSS2014

Voici le webcast et les slides de la session Ma première analyse Machine Learning avec Azure ML à cette 4ème édition des Journées SQL Server.

Florian avec la bouche ouverte...

Petite anecdote rigolote pour ceux qui n’étaient pas là: Azure ML offline au moment de la démo. LOL comme disent les jeunes… -_-

Un bel exemple de fail par un chat

Et ça c’est la puissance du Cloud!

Je vous rassure, finalement la bête est remontée au bout de 5 minutes, et tout se termine plus ou moins bien 😉

On notera que le son n’est pas très bon jusqu’à environ la 4ème minute, où je change de micro:

En terme de ressources on a:

Amusez vous bien 😉

Ça bosse dur chez Microsoft en ce moment: Azure Stream Analytics et Azure Data Factory

Juste un petit mot avant mon départ pour Seattle pour vous parler de 2 services Azure qui viennent tout juste d’être annoncés, et qui rejoignent le petit groupe de mes services Azure préférés (avec Machine Learning, HDInsight et le concept même de Blob Azure).

Mon premier c’est Azure Stream Analytics

Introduit par ici et par , déjà documenté, pour faire simple c’est un moteur de traitement d’événements temps réel, digne concurrent de Storm quoi (qui existe d’ailleurs aussi dans Azure maintenant!)…

Chaîne d'alimentation temps réel et outils associés

Ça en fait des outils…

Des messages sont émis en continu par des producteurs (capteurs, applications, machines…), collectés dans des queues, et doivent ensuite être traités pour l’analyse. Stream Analytics sert justement à cette partie. Son énorme avantage: sa syntaxe c’est du pseudo SQL! C’est pas beau ça?

Notez la syntaxe TumblingWindow pour gérer la fenêtre temporelle

Notez la syntaxe TumblingWindow pour gérer la fenêtre temporelle

Mon second c’est Azure Data Factory

Annoncé par et également déjà documenté, y compris un tutorial étape par étape.

Là c’est carrément un petit ordonnanceur qui débarque sur Azure, et qui permet de gérer ses pipelines de donnée de bout en bout. Evidemment la preview est plutôt humble en terme de features et composants, mais ça promet du lourd!

Capture d'écran d'Azure Data Factory - Tutorial par Microsoft

A nous les pipelines bien rangés et automatisés!

Il ne reste plus qu’à trouver du temps pour jouer avec tout ça… 😉