Non, cet article n'est pas sur ce qu'est un monstre énorme et diabolique Microsoft. Et comment elle offense à nouveau les utilisateurs. Et sur la façon de corriger la faille gênante qui est apparue avec la dernière mise à jour d'août de
Power BI Desktop avec prise en charge de
Python activée, à savoir les problèmes de visualisation dans les versions localisées de PBI, en particulier
matplotlib .
Au cours des dix premiers jours du mois d'août, Microsoft a publié la version tant attendue et très attendue de son produit de BI compatible
Python vraiment remarquable. Au moment de la rédaction, cette fonctionnalité se trouve dans la section des fonctionnalités préliminaires (c'est-à-dire, juste une version bêta).
Depuis longtemps et avec plaisir, j'utilise Power BI dans mon travail (à la fois en tant qu'analyste de données et en tant que développeur BI). J'essaie toujours d'essayer de nouvelles fonctionnalités qui sont généreusement annoncées dans la section pré-version. Et, nous devons rendre hommage à l'équipe de développement de Microsoft, ce sont presque toujours des versions solides et exploitables de fonctionnalités, d'options et de visualisations.
La communauté BI attendait particulièrement l'inclusion de la prise en charge Python dans Power BI. Non pas que la fonctionnalité intégrée de Power BI n'était pas suffisante pour implémenter les tâches les plus complexes résolues par les systèmes BI. Environ 250 fonctions du langage de requête
DAX intégré et même plus de sept cents fonctions de Power Query ont permis de résoudre presque toutes les tâches de BI, depuis l'obtention de données à partir d'une grande variété de sources, la construction d'un modèle de données et la prise en charge des visualisations et des rapports. L'année dernière, la prise en charge du langage R a été ajoutée, ce qui a considérablement étendu les capacités de Power BI en termes de calculs scientifiques, de nouvelles visualisations et même d'apprentissage automatique.
Cependant, ce n'est un secret pour personne qu'aujourd'hui, le leader de l'environnement Data Science parmi les langages de programmation est Python. Et l'inclusion de ce langage dans l'écosystème Microsoft BI fait de Power BI une sorte de couteau suisse pour la préparation, l'analyse et la présentation finale des données. Avec prise en charge complète de quatre langages spécialisés (DAX, Power Query / M, R, Python) et limité, dans les fonctionnalités nécessaires de SQL et MDX. Certains geeks vissent également JavaScript, mais il s'agit d'une conversation distincte.
En tant que développeur Python non pratiquant, j'ai inclus avec impatience le support expérimental de Python pour tester de nouveaux horizons ouverts. J'ai vérifié le menu de la dernière version de PBI et rechargé l'application. En savoir plus sur la connexion et la configuration
sur le blog Microsoft .
J'avais déjà installé une version précédente de Python et j'ai décidé de tenter ma chance et de ne pas prendre la peine d'en installer une nouvelle. En conséquence, un nouveau connecteur est apparu dans les sources de données - «Pyton Script», et une nouvelle icône [
Py ] dans le panneau de visualisation.
Cependant, à ce stade, le code Python n'a pas été exécuté. Je ne décrirai pas toutes les vicissitudes associées à la tentative d'exécuter (presque) Python inconnu dans un environnement que je connais et Power BI.
Quoi qu'il en soit, même une installation propre de l'assemblage Anaconda avec un grand nombre de bibliothèques préinstallées, un gestionnaire de paquets avancé, etc. ne m'a pratiquement pas poussé vers les «images» chères. Différentes versions de Python ont donné différents messages d'erreur à mon code de test, et j'étais un peu découragé. Une recherche Google sur ces messages n'a pas non plus renvoyé de résultats adéquats. Récemment apparue sur le portail, dans la communauté Power BI (
https://community.powerbi.com ), une demande d'un utilisateur danois sur un problème similaire a conduit à une longue réflexion - il ne s'agit pas de ma configuration informatique avec un mélange houleux de logiciels installés (j'ai vérifié sur différents voitures, mais partout où ils sont - mélange explosif, seulement différent). Le point est la localisation.
Quand il est devenu clair de quel côté regarder, des réponses plus sensées des moteurs de recherche ont commencé à rencontrer des requêtes raffinées. Mais le point était le même partout: «Dans la version actuelle de Power BI, vous ne pouvez pas utiliser le format des nombres avec un point décimal, mais uniquement avec un point décimal, avec Python. Attendez la version mise à jour ou modifiez le format de la représentation des nombres. "
Dans Power BI, vous pouvez modifier le format numérique en quelques secondes via le menu, mais que faire avec des tonnes de rapports prêts à l'emploi et de données source? La peau de mouton ne valait clairement pas l'effort.
À ce stade, tous les «pythons affligés sous le pouvoir bi» étaient divisés en deux camps: les Américains et les Anglais avec un point décimal et tout le reste. Une partie du «reste à la mer de la version actuelle» est passée à la hâte au premier groupe, définissant un point comme séparateur standard. Le reste de la ponura a commencé à attendre la libération corrigée. Mais depuis il s'agit d'une version bêta et la traduction en fonctionnalités du produit peut prendre deux mois et demi, cela ne valait vraiment pas la peine d'attendre des corrections au jour le jour.
Et à ce moment, j'ai décidé d'examiner de plus près le message d'erreur:
De plus près, car l'erreur n'était pas liée à mon code, qui dans
Jypyter a été exécuté juste sans erreurs et a affiché tous les éléments visuels sans aucun problème. Le problème était dû au code supplémentaire que Microsoft avait implémenté pour intégrer Python à Power BI. A savoir, avec l'appel à la bibliothèque matplotlib (
https://ru.wikipedia.org/wiki/Matplotlib ) et plus précisément la fonction pyplot (fichier pyplot.py).
Mais pour cela, et un logiciel open source pour y mettre ses petites mains ludiques. Sans y réfléchir à deux fois, en ouvrant un code de fonction de cent trente kilo-octets à l'adresse indiquée dans le texte d'erreur, j'ai découvert qu'un échec se produit lorsque figManager est initialisé.
Dans le code source de la bibliothèque, ce code Python ressemble à ceci:
figManager = new_figure_manager(num, figsize=figsize, dpi=dpi, facecolor=facecolor, edgecolor=edgecolor, frameon=frameon, FigureClass=FigureClass, **kwargs)
En respectant une bibliothèque aussi importante, je viens de commenter le code pour appeler le paramètre
figsize du problème, auquel Microsoft transmet quatre arguments de Poiwer BI au lieu de deux dans les versions localisées, et transmis la taille de visualisation par défaut à ce paramètre.
Maintenant, ce code ressemble à ceci:
figManager = new_figure_manager(num, figsize=rcParams['figure.figsize'],
Dans l'assemblage Anaconda actuel, il s'agit de 542 à 549 lignes. Si vous avez une version différente de la bibliothèque, recherchez simplement l'entrée «figManager» et apportez les modifications nécessaires et enregistrez la bibliothèque corrigée sous le même nom (pour cela, vous aurez besoin des droits d'administrateur).
Après cela, redémarrez simplement le code de visualisation pour l'exécution et profitez du résultat ... Eh bien, ou attendez que la montagne vienne à Mohammed, ou plutôt Microsoft à Python.
Yuri Kolmakov (
McCow )