Como a Microsoft esqueceu metade do mundo ou leu mensagens de erro


Não, este artigo não é sobre o que é um monstro enorme e maligno da Microsoft. E como ela novamente ofende os usuários. E sobre como corrigir a falha irritante que apareceu com a última atualização de agosto do Power BI Desktop com suporte ao Python habilitado, a saber, problemas de visualização em versões localizadas do PBI, em particular o matplotlib .

Nos dez primeiros dias de agosto, a Microsoft lançou o tão esperado e aguardado lançamento de seu produto de BI verdadeiramente notável, habilitado para Python . No momento da redação deste artigo, essa funcionalidade está na seção de recursos preliminares (ou seja, apenas uma versão beta).

Há muito tempo e com prazer, uso o Power BI em meu trabalho (tanto como analista de dados quanto como desenvolvedor de BI). Eu sempre tento experimentar novos recursos que são generosamente anunciados na seção de pré-lançamento. E, devemos prestar homenagem à equipe de desenvolvimento da Microsoft, essas são quase sempre versões sólidas e viáveis ​​de recursos, opções e visualizações.
A comunidade de BI esperava especialmente a inclusão do suporte ao Python no Power BI. Não que a funcionalidade interna do Power BI não tenha sido suficiente para implementar as tarefas mais complexas resolvidas pelos sistemas de BI. Cerca de 250 funções da linguagem de consulta DAX integrada e até mais de setecentas funções do Power Query tornaram possível resolver praticamente qualquer tarefa de BI, desde a obtenção de dados de uma ampla variedade de fontes, criando um modelo de dados e suportando visualizações e relatórios. No ano passado, foi adicionado suporte à linguagem R, que expandiu drasticamente os recursos do Power BI em termos de execução de cálculos científicos, novas visualizações e até aprendizado de máquina.
No entanto, não é segredo que hoje o líder no ambiente de ciência de dados entre linguagens de programação é o Python. E a inclusão desse idioma no ecossistema do Microsoft BI transforma o Power BI em uma espécie de faca suíça para a preparação, análise e apresentação final dos dados. Com suporte completo para quatro idiomas especializados (DAX, Power Query / M, R, Python) e limitado, dentro da funcionalidade necessária do SQL e MDX. Alguns geeks também estragam o JavaScript, mas esta é uma conversa separada.

Como desenvolvedor não praticante de Python, incluí ansiosamente o suporte experimental para o Python testar novos horizontes de abertura. Verifiquei o menu da versão mais recente do PBI e recarreguei o aplicativo. Leia mais sobre conexão e configuração no blog da Microsoft .

Eu já tinha uma versão anterior do Python instalada e decidi arriscar e não me preocupar em instalar um novo. Como resultado, um novo conector apareceu nas fontes de dados - “Pyton Script” e um novo ícone [ Py ] no painel de visualização.

No entanto, neste momento, o código Python não foi executado. Não descreverei todas as vicissitudes associadas à tentativa de executar Python não familiar (quase) em um ambiente familiar para mim e para o Power BI.
Problemas de visualização

Seja como for, mesmo uma instalação limpa do assembly Anaconda com um grande número de bibliotecas pré-instaladas, um gerenciador de pacotes avançado etc. praticamente não me levou às “imagens” queridas. Versões diferentes do Python deram diferentes mensagens de erro ao meu código de teste, e fiquei um pouco desanimado. Uma pesquisa no Google nessas postagens também não retornou resultados adequados. Recentemente, apareceu no portal, na comunidade do Power BI ( https://community.powerbi.com ), uma solicitação de um usuário dinamarquês sobre um problema semelhante levou a um pensamento de longo amadurecimento - não se trata da configuração do meu computador com uma mistura impressionante de software instalado (verifiquei diferentes carros, mas onde quer que estejam - mistura explosiva, apenas diferente). O ponto é localização.
Quando ficou claro para onde olhar, respostas mais sãs dos mecanismos de pesquisa começaram a aparecer em consultas refinadas. Mas o ponto era o mesmo em todo lugar: “Na versão atual do Power BI, você não pode usar o formato de números com um ponto decimal, mas apenas com um ponto decimal, junto com o Python. Aguarde a versão atualizada ou altere o formato da representação dos números ".

No Power BI, você pode alterar o formato do número em alguns segundos no menu, mas o que fazer com toneladas de relatórios prontos e dados de origem? A pele de carneiro claramente não valia o esforço.

Configuração do PBI Python

Nesse ponto, todos os "pítons sob o poder bi" atingidos foram divididos em dois campos: os americanos e os ingleses com um ponto decimal e todo o resto. Parte do "restante da versão atual" passou às pressas para o primeiro grupo, estabelecendo um ponto como separador padrão. O resto da ponura começou a esperar pelo lançamento corrigido. Mas desde Esta é uma versão beta e a tradução para a funcionalidade do produto pode levar dois meses e meio ano. Definitivamente, não valia a pena esperar pelas correções do dia a dia.

E naquele momento, decidi examinar mais de perto a mensagem de erro:

Erro

Mais de perto, porque o erro não estava relacionado ao meu código, que no Jypyter foi executado apenas sem erros e exibiu todos os elementos visuais sem problemas. O problema foi causado por código adicional que a Microsoft havia implementado para integrar o Python ao Power BI. Ou seja, com a chamada para a biblioteca matplotlib ( https://ru.wikipedia.org/wiki/Matplotlib ) e, especificamente, a função pyplot (arquivo pyplot.py).

Mas, para isso, e software de código aberto para colocar suas mãozinhas divertidas nele. Sem pensar duas vezes, abrindo um código de função de cento e trinta kilobytes no endereço fornecido no texto do erro, descobri que ocorre uma falha quando o figManager é inicializado.

No código-fonte da biblioteca, esse código Python se parece com o seguinte:

figManager = new_figure_manager(num, figsize=figsize, dpi=dpi, facecolor=facecolor, edgecolor=edgecolor, frameon=frameon, FigureClass=FigureClass, **kwargs) 

Respeitando uma biblioteca tão importante, acabei de comentar o código para chamar o parâmetro figsize do problema, para o qual a Microsoft passa quatro argumentos do Poiwer BI em vez de dois em versões localizadas e passou o tamanho de visualização padrão para esse parâmetro.

Agora esse código se parece com isso:

 figManager = new_figure_manager(num, figsize=rcParams['figure.figsize'], #figsize=figsize, dpi=dpi, facecolor=facecolor, edgecolor=edgecolor, frameon=frameon, FigureClass=FigureClass, **kwargs) 

Na montagem atual da Anaconda, essas são 542-549 linhas. Se você tem uma versão diferente da biblioteca, basta procurar a entrada “figManager”, fazer as alterações necessárias e salvar a biblioteca corrigida com o mesmo nome (para isso você precisará de direitos de administrador).

Depois disso, basta reiniciar o código de visualização para execução e aproveitar o resultado ... Bem, ou aguarde até que a montanha chegue a Mohammed, ou melhor, Microsoft a Python.

resultado

Yuri Kolmakov ( McCow )

Source: https://habr.com/ru/post/pt421659/


All Articles