Comme vous le savez, quand vous construisez un modèle Power BI, vous avez un choix à faire : import ou connexion directe (Live Connection)
Je ne vais pas revenir sur les différences entre les modes, juste rappeler que dans le mode de connexion directe, vous pouvez vous connecter à un modèle existant dans le service Power BI.
Ce point est très intéressant puisque cela vous permet de séparer le modèle de données des rapports.
C’est une bonne pratique que je recommande. Surtout quand un modèle a vocation à être utilisé intensément par les collaborateurs d’un espace de travail (workspace).
Il est toutefois difficile d’anticiper cela dans le feu de l’action (ie. dans la phase de développement). Et moi le premier je me retrouve avec mes rapports dans le même PBIX que le modèle.
Et comme vous, ça m’ennuie de refaire la DataViz sur laquelle j’ai passé des heures (jours) à tout caler au pixel près.
L’astuce que je présente ici vous permet de faire cette séparation modèle/rapports à posteriori.
ATTENTION : cette technique reste du bricolage et n’est pas supportée.
(En tout cas, ne dites pas que je l’ai écrit sur mon blog si vous devez faire un ticket au support )
Mode opératoire
Et voila.
Reste à voir comment déplacer tout cela entre 2 workspaces. Car si vous avez fait cette manipulation dans votre espace personnel et que vous déplacez votre modèle dans un autre workspace, vous ne pourrez pas vous rebrancher sur ce modèle… La suite au prochain numéro.
–
Je me dis qu’en fin d’année, on est plus au calme et on se pose des questions sur son prochain challenge… J’ai une piste pour vous
L’équipe Data & AI d’AZEO que je manage recrute fortement des profils Data, de tous niveaux et de toute origine (je parle de techno évidemment).
La seule contrainte que nous exigeons : l’œil du tigre, la passion de la Data, l’envie de partager et de travailler en équipe.
Voici 3 descriptifs de poste, si vous vous y retrouvez en totalité ou partiellement, contactez moi > jean-pierre.riehl[at]azeo.com
Auprès de nos clients, au contact des métiers, vous comprenez leurs besoins d’analyse et de reporting et vous concevez des solutions décisionnelles y répondant.
Vous étudiez les données disponibles et identifiez les données ou processus manquants. Vous spécifiez les mesures, les calculs et les axes d’analyse.
Compétences
Technologies
Vous évoluerez dans un environnement professionnel challenging, entourés des Talents d’AZEO. Votre créativité sera sollicitée en permanence et vous apprendrez tous les jours.
Vous aurez l’occasion de passer des certifications sur les technologies manipulées.
Votre job : construire des plates-formes de données modernes pour nos clients.
Vous implémenterez les patterns « Data Lake », « Lambda », « Kappa », etc. et construirez les pipelines de données pour les alimenter.
Vous préparez les données pour les Data Scientists, les Data Analysts et vous les accompagnez sur l’ensemble des processus de Data Science ou d’analyse.
Vous mettez en œuvre et industrialisez des modèles prédictifs pour enrichir des applications avec de l’intelligence artificielle.
Compétences
Technologies
Maitre Jedi ou seulement Padawan, vous évoluerez dans un environnement professionnel challenging, entourés des Talents d’AZEO. Votre créativité sera sollicitée en permanence et vous apprendrez tous les jours.
Vous aurez l’occasion de passer des certifications sur les technologies manipulées.
Votre job : construire des solutions décisionnelles modernes pour nos clients.
Entouré d’experts des technologies Data vous organisez l’équipe projet pour définir et construire des modèles et des tableaux de bord. Vous serez le principal interlocuteur du client et des métiers et coordonnerez les efforts de développement.
Compétences
Technologies
Vous évoluerez dans un environnement professionnel très challenging, entourés des Talents d’AZEO. Votre créativité sera sollicitée en permanence et vous apprendrez tous les jours.
Vous aurez l’occasion de passer des certifications sur les technologies manipulées.
–
]]>Une nouvelle semaine, un nouvel article sur mes sessions à MS Experiences. Cette fois-ci, c’est un retour sur la session que j’ai pu animer sur Power BI.
Cette session est en fait un retour d’expérience d’un projet que j’ai mené avec notre client Edenred.
Comment le contrôle de gestion améliore le pilotage de l’entreprise avec Power BI chez Edenred
https://experiences17.microsoft.fr/session/3d4386e8-3b58-e711-80c2-000d3a21081a
Le contrôle de gestion de Edenred, leader des services prépayés aux entreprises, a mis en œuvre des tableaux de bord de pilotage pour mieux suivre les chiffres clés et aider les différentes fonctions de la société.
Au travers d’un retour d’expérience, découvrez comment Power BI peut être un outil puissant de reporting, d’analyse et de pilotage de la performance. L’objectif de cette session est de revenir sur les points clés de la mise en œuvre, de la réalisation des indicateurs, à la gouvernance de la solution en passant par la coopération avec les services informatiques.
Réutilisation de l’existant décisionnel, solution hybride entre le cloud et le système d’information d’Edenred, DataViz adaptée aux utilisateurs et aux usages, indicateurs simples et calculs complexes, explorons toutes les facettes de ce projet métier.
La session revient sur le projet et tente de répondre à la question : Power BI a-t-il améliorer le pilotage de Edenred ?
Sans suspens, la réponse est oui. Cédric François, responsable du pôle contrôle de gestion revenus d’Edenred, et moi-même avons tenté de préciser comment.
La session traite des points importants du projet, vu par le client. Nous sommes revenus sur le besoin. Nous avons discuté de DataViz à propos du P&L. Cédric a pu présenter le P&L en live (avec des données anonymisées) et expliquer que le ROI du projet est déjà acquis grâce aux actions prises à la suite de l’analyse des coûts de transports (qu’il a pu démontrer directement en session).
Comme pour la session IronSkipper, mon retour complet sur cette session est disponible sur le blog AZEO
REX Power BI – Contrôle de gestion Edenred
Les slides sont disponibles sur mon SlideShare :
–
La session porte le nom de code en interne de IronSkipper. C’est quoi ? C’est en fait un projet d’innovation que je drive chez AZEO qui comporte les axes suivants :
L’objectif est de mettre toute l’innovation technologique d’AZEO et la geekitude des Azeotees au service d’un projet d’entreprise : participer gagner la Route du Rhum 2018 où notre DAF est skipper.
Pour poursuivre mon teaser, voici quelques points intéressants sur chacun des axes technologiques
L’objectif est de fournir des indicateurs et les infos les plus pertinentes possibles à notre Skipper. En analysant les données du bateau, on peut ressortir une vraie mine d’infos qui servent à Maxime à se préparer, comme n’importe quel sportif moderne.
Par exemple, le rapport ci-dessous a permis à Maxime de voir qu’il a un problème de code (si vous êtes marin, vous trouverez).
Je ne code pas pour HoloLens. Mais mes collègues oui ; et je les aide du mieux que je peux. L’objectif est de contextualiser les indicateurs dans l’environnement du skipper (à-la IronMan). C’est le domaine de l’ergonomie de l’information et là, c’est l’un de mes sujets (DataViz !).
Le challenge qu’on a tenté de relever pour MS Experiences est de faire une démo de Power BI projeté en 3D dans Unity. Et nous l’avons fait (enfin, surtout Hubert des collègues de Bordeaux ;)).
Evidemment, dans le projet IronSkipper, on fait beaucoup plus de choses avec HoloLens et je vous invite à lire l’article en entier (lien plus bas).
Globalement, le challenge qu’on souhaite relever est de détecter les bascules de vent pour anticiper les manœuvres sur le bateau. Et on s’est dit que la réponse était dans les nuages (pas le Cloud, les vrais nuages).
Alors on a sorti l’artillerie : Deep Learning, réseaux neuronaux convolutifs, Machine Learning, Cognitive Services, etc. L’équipe Data Science déroule sa méthodologie et notre premier retour est que le sujet est très complexe (mais on s’en doutait). On a appris beaucoup de choses sur les phénomènes météorologiques et on a une première étape avec un service de reconnaissance de nuages.
Voila, j’espère que ça vous donne envie d’en savoir plus et de lire mon article complet sur cette session sur le blog AZEO.
Dans l’exemple ci-dessous, on affiche la dernière valeur de la KPI (%) MoM Messages sur l’axe Mois ainsi que la tendance, toujours sur cette axe (sur les mois précédents).
Le problème est que la notion de dernière valeur de la KPI (on pourrait dire valeur « courante ») dépend de l’ordre utilisé sur le visuel.
Et vous l’aurez vu, le visuel KPI n’offre pas la possibilité de configurer le tri…
On peut donc se retrouver avec le problème suivant : la valeur affichée n’est pas la bonne et la tendance n’est pas dans le bon ordre non plus.
Comme dans le screenshot ci-dessous, où devrait être affiché 69% (valeur du dernier mois)
Pour afficher l’option de tri des données, on peut changer le visuel et repasser sur une table par exemple. Le problème est qu’une fois qu’on a manipulé un peu le composant KPI, il garde sa configuration et donc ne reprend pas le bon tri.
La solution est de toujours configurer votre visuel avec une table au préalable. Et seulement après de passer sur un composant KPI.
Espérons que les prochaines évolutions du composant KPI permettront de configurer l’ordre de la tendance
J’ai créé une idea à ce sujet : https://ideas.powerbi.com/forums/265200-power-bi-ideas/suggestions/31807513-sort-trend-axis-in-kpi
–
]]>La cas d’usage typique est une dimension de Type I (au sens Kimball, cf. https://en.wikipedia.org/wiki/Slowly_changing_dimension#Type_1:_overwrite).
Prenons l’exemple d’une table Groupe dans laquelle le nom du groupe peut changer dans le temps. On ne souhaite garder que la dernière valeur.
Comme pour la dimension de Type 2 (cf. SCD avec Power BI), il nous faut une clé ainsi qu’un autre critère qui définit la dernière valeur, ie. la dernière ligne, celle que l’on doit garder
Le principe que l’on va utiliser est de faire une auto-jointure sur la table, avec un regroupement par l’identifiant de ligne.
On commence par référencer notre requête de base et on applique un GROUP BY qui récupère ce qui va être le second critère de la clé (ie. de la sélection). Ici, on prend la date maximale car on veut la dernière valeur en date.
Ensuite, on référence une seconde fois notre requête de base et on aaplique une jointure (Fusionner les requêtes) avec la requête précédente sur la double clé (ici GroupId et LastUpdate).
La jointure est interne (INNER JOIN) car on veut justement filtrer sur la bonne ligne.
Cela nous donne 3 requêtes pour arriver au résultat final (on ne charge que la dernière évidemment).
On peut tout mettre dans la même requête M mais il faudra le faire manuellement.
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("…", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [GroupId = _t, Group = _t, LastUpdate = _t]) LastUpdate = Table.Group(Source, {"GroupId"}, {{"LastUpdate", each List.Max([LastUpdate]), type date}}), JointureAvecLastUpdate = Table.NestedJoin(Source,{"GroupId", "LastUpdate"}, LastUpdate, {"GroupId", "LastUpdate"},"LastUpdateJoin",JoinKind.Inner), SuppressionColonneInutile = Table.RemoveColumns(JointureAvecLastUpdate, {"LastUpdateJoin"}) in SuppressionColonneInutile
Le problème avec la fonctionnalité « Supprimer les doublons » appliquée sur la colonne de clé, c’est qu’elle garde bien une seule ligne mais le choix est arbitraire. En fait, la fonction Table.Distinct ne garde que la première ligne qu’il trouve.
Alors, on pourrait se dire qu’il suffit d’ordonner la table selon le second critère et le tour est joué.
Mais quand on manipule de la donnée depuis un moment, on sait que les fonctions de SORT et les jeux de données ne sont pas bons amis.
Et surtout, il se peut que vous ayez des résultats incohérents en fonction de votre source.
La faute au Query Folding, sorte d’optimiseur de requête, qui peut décider de faire le tri après le DISTINCT.
Heureusement, il y a une option dans le langage M (Power Query) pour contraindre l’optimiseur de requête : la fonction Table.Buffer()
Table.Buffer permet de mettre un résultat intermédiaire en mémoire et donc de forcer l’exécution à une étape particulière. En faisant : SORT + BUFFER + DISTINCT, on force l’ordre des étapes et notre technique fonctionne.
let Source = #"Groups (raw)", #"Lignes triées" = Table.Sort(Source,{{"GroupId",Order.Ascending},{"LastUpdate", Order.Descending}}), LoadInMemory = Table.Buffer( #"Lignes triées" ), #"Doublons supprimés" = Table.Distinct(LoadInMemory, {"GroupId"}) in #"Doublons supprimés"
Attention : la contrainte est que le jeu de données doit tenir en mémoire, c’est le principe. Mais en règle générale, si vous êtes dans Power BI, vous êtes plutôt en mode self-service et je ne pense pas que vous récupériez tout votre Data Warehouse.
–
]]>https://experiences17.microsoft.fr/
J’aime vraiment cette conférence, quel que soit son format. On y retrouve tout notre écosystème : partenaires, MVP, Microsoftees, clients, communautés…
Depuis 10 ans, j’ai la chance d’y être conférencier. Cette année, j’ai eu le privilège de présenter ou d’animer 4 sessions :
Je reviendrai sur ces sessions dans des articles dédiés pour partager le contenu et mon feedback. Dans ce post, je vais plutôt me concentrer sur la conférence en elle-même.
Comme l’an dernier, la conférence se déroulait sur 2 jours, une journée plutôt business et une journée plus technique. Et autant dire que l’une et l’autre de ces 2 journées ont été très riches avec beaucoup de monde.
J’ai passé la plus grande partie au stand AZEO pour discuter avec des clients autour des sujets portés par ma Practice (Data) mais également tous les sujets d’innovation que nous portons.
J’ai beaucoup échangé autour de Power BI qui est très présent dans les esprits des entreprises, petites ou grandes. Mais également autour de la Data Science, des Cognitive Services ou encore des nouvelles expériences utilisateur (comme la Mixed Reality par exemple).
Avec AZEO, cette année, nous avions à cœur de présenter notre projet d’entreprise. Les 200 collaborateurs du groupe s’alignent derrière notre DAF, Maxime Cauwe, qui s’est engagé comme Skipper pour la prochaine Route du Rhum qui aura lieu en novembre 2018.
De nombreuses initiatives ont été lancées en interne et forcément, quand la tagline de l’entreprise est « Talents & Technology« , l’innovation est au rendez-vous. Nous avons ainsi présenté sur le stand les prémices des travaux en cours.
J’ai hâte de pouvoir vous en dire un peu plus. Je drive quelques unes de ces initiatives et j’aurai de nombreuses occasions d’en parler et même de faire quelques sessions. Affaire à suivre.
–
]]>Pour ma part, j’ai eu le privilège de présenter une session à Paris sur Azure Data Lake. J’avais déjà donné cette session au SQLSaturday de Montréal le mois dernier. J’étais cette fois-ci brillamment secondé par Fabien Adato, MVP Data Platform.
Avec Fabien, nous avons également animé un Lab de 2 heures sur Azure Data Factory et Power BI Embedded.
Azure Data Lake est LA technologie « big data » maison de Microsoft. En provenance de MS Research (nom de code Cosmos), elle est utilisée en interne par les équipes X-Box, Bing, O365 depuis quelques années déjà. Cette technologie est disponible depuis l’été dernier dans Azure et s’enrichit mois après mois.
ADL, concrètement, c’est quoi ? C’est la possibilité de stocker et analyser une quantité illimitée de données et de requêter avec un nouveau langage : le U-SQL
Dans cette session, vous découvrirez Azure Data Lake et toutes les possibilités qui s’ouvrent à vous
Vous pouvez retrouver les slides de notre session sur mon Slideshare. Si vous voulez récupérer les sources (requêtes U-SQL), contactez-moi directement (@Djeepy1)
En fin de session, nous avons eu les questions suivantes auxquelles nous n’avons pas répondu totalement. Je les retranscris ici, avec les réponses évidemment.
Azure Data Lake Store (ADLS) est-il géo-redondant ?
ADLS ne dispose pas de redondance géographique entre différentes régions Azure contrairement au stockage Azure Blob. ADLS est uniquement « Locally-redudant« , c’est à dire qu’il y a de multiples copies des données dans une région Azure.
Plus d’infos : https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-comparison-with-blob-storage
Quelle est la version de HDFS pour ADLS ?
Plus précisément, Azure Data Lake Store est compatible WebHDFS (API REST), ce qui lui permet d’être utilisé dans un cluster HADOOP HDInsight. La version de l’API est la 2.7.2.
Plus d’infos : https://docs.microsoft.com/fr-fr/rest/api/datalakestore/webhdfs-filesystem-apis
A la mise à jour d’un classeur Excel contenant un modèle Power Pivot, dans certains cas on obtient ce message d’erreur :
Une exception de type ‘Microsoft.AnalysisServices.BackEnd.PQDataSourceAnnotationByPPException’ a été levée.
Cette erreur arrive quand le modèle Power Pivot utilise directement une connexion Power Query du classeur.
Cette façon de faire est un contournement de la limitation de Power Query que l’on rencontre dans Office 2010. A l’époque, on devait passer par une feuille Excel (limite à 1M de ligne) en sortie de Power Query puis ensuite charger cette feuille dans le modèle Power Pivot. La solution de contournement est décrite dans cet article de Fabien Adato : http://fadata-blog.com/2016/01/19/liaison-directe-entre-power-query-et-power-pivot-avec-excel-2010-2
Quand on a utilisé cette astuce, on se retrouve avec cette erreur en migrant le classeur sur Excel 2016.
Il y a moyen de contourner la problématique en 2 étapes :
Si cette seconde étape n’est pas réalisée, quand on modifie(ra) la requête Power Query, la connexion sera recréée et la table Power Pivot supprimée (donc fort risque de perdre tout le modèle).
Il faut donc prévoir un sas de remédiation avec Excel 2013 (ainsi qu’une procédure documentée pour les utilisateurs).
–
]]>5 mois d’organisation du MS Cloud Summit, très intense vers la fin. Puis plus d’un mois pour dépiler tous mes sujets Business. Je sors enfin la tête de l’eau.
Enfin…Pour ceux qui me connaissent, c’est pour repartir sur de nouveaux challenges. Mais ce n’est pas le sujet de ce post.
Je voulais vous faire un retour sur le MS Cloud Summit.
Pour commencer, voici les liens à bookmarker (y’a des gens qui bookmarkent encore des liens ?)
Le site web officiel où vous pouvez retrouver les speakers, l’agenda, les sponsors
Le site avec toutes les ressources de l’événement :
https://docs.com/ms-cloud-summit-paris-2017
Comme d’habitude, pour rester informé, suivez Twitter en premier lieu mais on essaye de relayer sur les autres canaux : LinkedIn, facebook… et la fameuse newsletter du GUSS.
Avec ces liens, vous avez presque tout. Mais revenons un peu sur l’organisation et l’événement.
Le MS Cloud Summit, c’est :
C’est mon 10ème événement depuis 2011 et je suis content de voir le chemin parcouru.
Mais je suis encore plus satisfait d’observer cette chose intangible qu’on appelle Communauté (oui, c’est vous) se mobiliser, partager et se passionner pour les technologies qu’elle représente.
Malgré toute la pression qui est montée en se rapprochant de l’événement, on espérait la récompense à la fin : voir 600 personnes réunies autour de la même passion que la nôtre.
Merci! Je vous remercie du fond du cœur car vous avez été au-delà de nos espérances.
J’ai depuis toujours la conviction que la Communauté est une force inépuisable qui partage une ressource qui ne se déprécie pas : la connaissance. Le MS Cloud Summit 2017 me conforte dans ma vision.
La première constatation, c’est que notre expérience (aOS et GUSS) a contribué énormément à monter un événement de cette taille. Toutefois, le changement d’échelle et le travail en commun avec les autres communautés a été un challenge à relever. Mission réussie !
Je remercie Estelle pour son GROS travail mais également Jean-Luc et tout le board de AZUG FR.
Je remercie Jean-François de la toute récente communauté CMD d’avoir rejoint l’aventure.
Je remercie Maxime pour son travail efficace tout au long de l’organisation.
Évidemment, un grand bravo à Isabelle, mon binôme à la tête du GUSS (elle dirait Partner-in-crime), pour son investissement.
Et pour finir, une immense ovation à Patrick. J’ai trouvé mon alter ego dans les communautés. De l’idée d’origine à la conclusion de cet événement, son engagement à été sans faille. Merci Patrick, j’ai hâte de bosser à nouveau avec toi.
Ca a été super de travailler avec vous tous !
Patrick a fait une session de retour d’expérience (REX) sur l’organisation du MS Cloud Summit qui est disponible ici. La conclusion est que nous avons trop, beaucoup trop, abusivement, exagérément, utilisé l’email comme outil de travail.
Je me suis lancé avec le GUSS dans l’organisation du prochain événement avec une règle :
J’en reparlerai plus tard pour vous dire si ça fonctionne. Pour l’instant c’est pas mal.
]]>