ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Power BI:在查询编辑器中的多个表上使用Python

2019-09-29 19:59:47  阅读:686  来源: 互联网

标签:python powerbi


如何使用Python脚本创建一个新表,该脚本使用两个现有表作为输入?例如,使用pandas merge执行左连接?

一些细节:

使用Home>在Transform>下编辑可以使用Python的查询运行Python脚本.这将打开一个“运行Python脚本”对话框,告诉您“#dataset”包含此脚本的输入数据.如果您只需单击“确定”并查看公式栏,您就会找到相同的短语:

= Python.Execute(“#’dataset’保存此脚本的输入数据#(lf)”,[dataset =#“Changed Type”])

这也在Applied Steps下添加了一个名为Run Python脚本的新步骤,您可以通过单击右侧的齿轮符号来编辑Python脚本:

enter image description here

如何更改该设置以引用多个表?

样本数据

这是两个表,可以存储为CSV文件并使用Home>加载.获取数据>文/ CSV

表格1

Date,Value1
2108-10-12,1
2108-10-13,2
2108-10-14,3
2108-10-15,4
2108-10-16,5

表2

Date,Value2
2108-10-12,10
2108-10-13,11
2108-10-14,12
2108-10-15,13
2108-10-16,14

解决方法:

这与R脚本here描述的挑战相同.该设置也适用于Python.但是,我发现approcah有一个缺点:它将新的连接或计算表存储为以前表之一的编辑版本.以下建议将演示如何在不更改输入表的情况下生成全新的计算表(除了因为this而将Date列的数据类型从Date更改为Text).

简短回答:

在Power Query编辑器中,请按照下列步骤操作:

>将两列中Date列的数据类型更改为Text.
>单击“输入数据”.只需单击“确定”
>激活新的Table3并使用Transform>运行Python脚本.只需单击“确定”
>激活公式栏并用= Python.Execute(“#Python:”,[df1 = Table1,df2 = Table2])替换其中的内容.单击Enter.
>如果系统提示您这样做,请在下一步中单击“编辑权限”和“运行”.
>在“应用步骤”下,在名为“运行Python脚本”的新步骤中,单击齿轮图标以打开“运行Python脚本”编辑器.
>插入下面的代码段,然后单击“确定”.

码:

import pandas as pd
df3 = pd.merge(df1, df2, how = 'left', on = ['Date'])
df3['Value3'] = df1['Value1']*df2['Value2']

在df3旁边,单击Table,就是这样:

enter image description here

细节:

必须非常小心地遵循上面的列表才能使事情顺利进行.所以这里是所有肮脏的小细节:

1.使用“获取数据”将表格作为CSV文件加载到Power BI Desktop中.

2.单击“编辑查询”.

3.在表1中,单击“日期”列旁边的符号,选择“文本”,然后单击“替换当前”

enter image description here

4.对表2执行相同操作

5.在“主页”选项卡上,单击“输入数据”

6.在出现的框中,除了单击“确定”外,不执行任何操作.

enter image description here

7.这将在Queries下插入一个名为Table3的空表,这正是我们想要的:

enter image description here

8.转到Transform选项卡,然后单击Run Python Script:

enter image description here

9.这将打开Run Python Script编辑器.你可以在这里开始编写脚本,但这会在接下来的步骤中使事情变得不必要地复杂化.所以什么也不做,只需点击OK:

enter image description here

10.在公式栏中,您将看到公式= Python.Execute(“#’dataset’保存此脚本的输入数据#(lf)”,[dataset =#“Changed Type”]).请注意,您在Applied Steps下的一个名为Run Python Script的新步骤:

enter image description here

11.上面的屏幕截图中有几个有趣的细节,但首先我们要分解函数的参数= Python.Execute(“#’dataset’保存此脚本的输入数据#(lf)”,[ dataset =#“Changed Type”]).

“#’数据集’”部分包含此脚本的输入数据#(lf)“只需插入您可以在Python脚本编辑器中看到的注释.因此它并不重要,但您也不能将它留空.我喜欢使用像“#Python:”这样简短的东西.

part [dataset =#“Changed Type”]是指向处于Changed Type下的状态的空Table3的指针.因此,如果在插入Python脚本之前做的最后一件事情不是改变数据类型,那么这部分看起来会有所不同.然后使用数据集作为pandas数据框在python脚本中提供该表.考虑到这一点,我们可以对公式做出非常有用的修改:

12.将公式栏更改为= Python.Execute(“#Python:”,[df1 = Table1,df2 = Table2])并按Enter键.这将使您的Python脚本的Table1和Table2可用作分别名为df1和df2的两个pandas数据帧.

13.单击“应用步骤”下的“运行Python脚本”旁边的齿轮(或是花?)图标:

enter image description here

14.插入以下代码段:

码:

import pandas as pd
df3 = pd.merge(df1, df2, how = 'left', on = ['Date'])
df3['Value3'] = df1['Value1']*df2['Value2']

这将在Date列上连接df1和df2,并插入名为Value3的新计算列.不是太花哨,但通过这种设置,您可以在Power BI世界中使用Python的强大功能执行任何您想要的任何操作.

enter image description here

15.单击“确定”,然后执行以下操作:

enter image description here

您将在输入数据框df1和df2下的蓝色方块中看到df3.如果您已在Python脚本中将任何其他数据帧指定为计算步骤,则它们也将在此处列出.要将其转换为Power BI的可访问表,只需单击绿色箭头所示的表.

16.就是这样:

enter image description here

请注意,默认情况下,Date列的数据类型设置为Date,但您可以将其更改为Text,如前所述.

点击主页>关闭并应用以退出Power Query Editor并返回到Power BI Desktop中的所有位置.

标签:python,powerbi
来源: https://codeday.me/bug/20190929/1832847.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有