Microsoft如何忘记世界的一半或阅读错误消息


不,本文不是关于微软是什么邪恶的怪物。 以及她又如何冒犯了用户。 以及有关如何解决在启用了Python支持的Power BI Desktop的最后八月更新中出现的烦人漏洞的问题,即PBI本地化版本(尤其是matplotlib)中的可视化问题。

在8月的前十天,微软发布了人们期待已久且热切期待的其真正出色的基于Python的 BI产品。 在撰写本文时,此功能位于“初步功能”部分(即,仅是Beta版)。

很长时间以来,我一直在工作中使用Power BI(既是数据分析师又是BI开发人员)。 我总是尝试尝试在预发布部分中慷慨宣布的新功能。 而且,我们必须向Microsoft开发团队致敬,它们几乎始终是功能,选项和可视化的可靠且可行的版本。
BI社区特别希望Power BI中包含Python支持。 并不是说Power BI的内置功能不足以实现BI系统解决的最复杂的任务。 内置DAX查询语言的大约250种功能以及Power Query的700多种功能,使得从几乎所有来源获取数据,建立数据模型以及支持可视化和报告,几乎可以解决任何BI任务。 去年,增加了对R语言的支持,这在执行科学计算,新的可视化甚至机器学习方面大大扩展了Power BI的功能。
但是,众所周知,当今在编程语言中数据科学环境中的领导者是Python。 并将这种语言包含在Microsoft BI生态系统中,使Power BI成为一种用于准备,分析和最终呈现数据的瑞士刀。 在SQL和MDX的必要功能内,完全支持四种有限的专用语言(DAX,Power Query / M,R,Python)。 有些极客也搞砸了JavaScript,但这是一个单独的对话。

作为一名非实践的Python开发人员,我热切地提供了对Python的实验性支持,以测试新的开放视野。 我检查了最新PBI版本的菜单,然后重新加载了该应用程序。 在Microsoft博客上阅读有关连接和配置的更多信息。

我已经安装了以前的Python版本,因此我决定抓住机会,不花心思安装新的Python。 结果,新的连接器出现在数据源中-“ Pyton脚本”和可视化面板中的新[ Py ]图标。

但是,此时尚未执行Python代码。 我不会描述与在我和Power BI熟悉的环境中运行不熟悉(几乎)Python的尝试相关的所有沧桑。
可视化问题

即便如此,即使干净安装了Anaconda程序集并带有大量预安装的库,高级软件包管理器等,也几乎没有把我吸引到珍爱的“图片”中。 不同版本的Python给我的测试代码提供了不同的错误消息,我有些灰心。 Google对这些帖子的搜索也没有返回足够的结果。 最近出现在门户网站上的Power BI社区( https://community.powerbi.com )中,丹麦用户对类似问题的请求导致了长期思考-这与我的计算机配置与安装的软件混杂在一起有关(我检查了不同的汽车,但无处不在-爆炸性混合物,只有不同)。 重点是本地化。
当弄清楚该看哪种方法时,来自搜索引擎的更多理智的答案开始出现在经过改进的查询中。 但是,到处都是相同的:“在Power BI的当前版本中,不能将数字格式带小数点,只能与Python一起使用小数点。 等待更新版本或更改数字表示的格式。”

在Power BI中,您可以通过菜单在几秒钟内更改数字格式,但是如何处理大量现成的报告和源数据呢? 羊皮显然不值得付出努力。

PBI Python设置

在这一点上,所有受苦的“在bi底下的巨蟒”都被分成两个阵营:美国人和带小数点的英语,其余所有阵营。 一部分“当前版本的其余部分”匆忙越过了第一组,将一个点设置为标准分隔符。 ponura的其余部分开始等待正确的释放。 但是因为 这是一个Beta版本,转换成产品功能可能需要两个月半的时间,所以绝对不值得每天等待更正。

在那一刻,我决定仔细看看错误消息:

失误

更紧密地讲,因为错误与我的代码无关,所以在Jypyter中执行该代码时不会出现任何错误,并且显示了所有可视元素而没有任何问题。 该问题是由Microsoft实施的将Python与Power BI集成在一起的其他代码引起的。 即,通过调用matplotlib库( https://ru.wikipedia.org/wiki/Matplotlib ),尤其是调用pyplot函数(pyplot.py文件)。

但是为此,开源软件可以将他顽皮的小手插进去。 不用三思而后行,在错误文本中指定的地址处打开一百三十千字节的功能代码,我发现初始化figManager时发生故障。

在库源代码中,此Python代码如下所示:

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

尊重如此重要的库,我只是注释掉了调用问题figsize参数的代码,Microsoft从Poiwer BI传递了四个参数,而不是本地化版本中的两个参数,并将默认的可视化尺寸传递给该参数。

现在这段代码看起来像这样:

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

在当前的Anaconda装配中,这些是542-549行。 如果您使用的是其他版本的库,则只需查找条目“ figManager”并进行必要的更改,然后将更正的库以相同的名称保存(为此,您将需要管理员权限)。

在那之后,只需重新启动可视化代码以执行并享受结果即可……好吧,或者等到Mohammed登顶,或者是Microsoft来到Python。

结果

尤里·科尔马科夫( McCow

Source: https://habr.com/ru/post/zh-CN421659/


All Articles