代码之家  ›  专栏  ›  技术社区  ›  vestland

power bi:在查询编辑器中的多个表上使用python

  •  1
  • vestland  · 技术社区  · 7 年前

    如何使用使用使用两个现有表作为输入的python脚本创建新表?例如,通过执行 left join using pandas merge ?

    一些详细信息:

    使用 home>edit queries 可以在 transform>run python script 下使用python。这将打开一个“运行python脚本”对话框,其中告诉您,“数据集”保存了该脚本的输入数据。如果您只需单击 OK 并查看公式栏,就会找到相同的短语:

    =python.execute(“‘dataset’holds the input data for this script(lf)”,[dataset=“changed type”])

    这还添加了一个新步骤,位于 applied steps called run python script where you can edit the python script by click the gear symbol on the right:。

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


    样本数据

    以下是两个可以存储为csv文件并使用 home>get data>text/csv加载的表

    表1

    日期,值1
    210810-121,1
    2108~10-132
    210810-14.3
    2108~10-154
    210810-16.5
    < /代码> 
    
    

    表2

    日期,值2
    2108—10-12,10
    2108—10-13,11
    210810-14.12
    2108~10-1513
    210810-16.14
    < /代码> <?

    一些细节:

    使用Home > Edit queries你可以在下面使用pythonTransform > Run Python Script. 这打开了一个Run Python Script告诉您的对话框'#dataset' holds the input data for this script. 如果你只需点击OK看看公式栏:

    = Python.Execute("# 'dataset' holds the input data for this script#(lf)",[dataset=#"Changed Type"])

    这也增加了一个新的步骤Applied Steps打电话Run Python script在这里,您可以通过单击右侧的齿轮符号来编辑python脚本:

    enter image description here

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


    样本数据

    以下是两个可以存储为csv文件并使用Home > Get Data > Text/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
    
    2 回复  |  直到 7 年前
        1
  •  5
  •   vestland    7 年前

    这与为r脚本所描述的挑战相同 here 。这个设置也适用于python。但是,我发现appracah有一个缺点:它将新的联接或计算表存储为以前某个表的编辑版本。下面的建议将演示如何在不更改输入表的情况下生成一个全新的计算表(除了将日期列的数据类型从 date更改为 to text because of )。

    简短回答:

    power query editor 中,执行以下步骤:

    1. 将两列中的 日期列的数据类型更改为 文本。

    2. 单击“Enter data”(输入数据)。 仅限 单击 OK

    3. 激活新的 table3 并使用 transform>run python script 仅限 单击 OK

    4. 激活公式栏,并用 =python.execute(“python:”,[df1=table1,df2=table2])替换其中的内容。 。单击 Enter>

    5. 如果系统提示您执行此操作,请单击下一步中的 edit permission run

    6. 在“应用的步骤”下,在名为“运行python脚本”的新步骤中,单击齿轮图标打开“运行python脚本”图标。

    7. 在下面插入代码段,然后单击“确定”。

    代码:

    导入熊猫为pd df3=pd.merge(df1,df2,how='左',on=['日期']) df3['value3']=df1['value1']*df2['value2'] < /代码>

    df3 旁边,单击 table 即可:

    详细信息:

    为了使事情顺利进行,必须非常仔细地遵循上面的列表。下面是所有肮脏的小细节:

    1. 使用 get data将表格作为csv文件加载到power bi desktop中。

    2. 单击 编辑查询

    3. 表1中,单击 日期列旁边的符号 ,选择 text 并单击 replace current

    4. do the same for table2

    5. home tab上,单击 enter data

    6. 在“显示”框中,只需单击 OK即可。

    7. 这将插入一个名为 table3的空表。 querys ,这正是我们想要的:

    8. 转到 transform tab并单击 run python script :。

    9. 这将打开运行python脚本的 editor。您可以在这里开始编写脚本,但这会使接下来的步骤变得不必要的复杂。因此,只需单击“OK”(确定)。

    10. 在公式栏中,您将使用公式 =python.execute(“‘dataset’holds the input data for this script(lf)”,[dataset=“changed type”]) 。注意,在名为 run python script的应用步骤下,您已经有了一个新步骤。

    11. 上面的屏幕截图中有几个有趣的细节,但首先我们要分解函数的参数 =python.execute(“dataset”holds the input data for this script(lf)”,[dataset=“changed type”])

    部分 “‘dataset'”保留此脚本的输入数据(lf)”. 只需插入您可以在 python script editor中看到的注释即可。所以这并不重要,但你也不能只留下空白。我喜欢使用一些较短的工具,如 “python:”.

    零件 [dataset=“changed type”] 是指向空的 表3的指针 in the state that it is under changed type 。因此,如果在插入Python脚本之前所做的最后一件事不是更改数据类型,那么这部分看起来会有所不同。然后,可以在python脚本中使用 dataset 作为熊猫数据帧来使用该表。考虑到这一点,我们可以对公式进行非常有用的修改:

    12. 将公式栏更改为 =python.execute(“python:”,[df1=table1,df2=table2]) and hit enter. 。这将使您的python脚本分别作为名为 df1的两个熊猫数据帧提供 df2和 df2。

    13. 单击齿轮(或它是花?) run python script under applied steps :旁边的图标

    14. 插入以下代码段:

    代码:

    导入熊猫为pd df3=pd.merge(df1,df2,how='左',on=['日期']) df3['value3']=df1['value1']*df2['value2'] < /代码>

    这将在 日期列上连接 df2,并插入一个名为 value3的新计算列。不算太花哨,但使用此设置,您可以对Power BI和Python的Power中的数据执行任何操作。

    15. 单击 OK. 然后您将看到:

    在蓝色方块中,您将看到输入数据框下列出的 df3 。如果您在python脚本中指定了任何其他数据帧作为计算步骤,那么它们也将在这里列出。要将其转换为Power BI的可访问表,只需单击绿色箭头所示的 table

    16. 就这样:

    请注意, 日期列的数据类型被设置为 日期,但您可以将其更改为 文本,如前所述。

    单击“ home>close&apply”(关闭并应用) 退出“Power Query Editor”(电源查询编辑器),然后返回到Power BI桌面中所有启动位置。

    . 这个设置也适用于python。但是,我发现appracah有一个缺点:它将新的联接或计算表存储为以前某个表的编辑版本。下面的建议将演示如何在不更改输入表的情况下生成一个全新的计算表(更改日期列的数据类型除外) Date Text 因为 this )

    简短回答:

    Power Query editor ,请执行以下步骤:

    1. 更改的数据类型 Date columns 在两列中 文本 .

    2. 点击 Enter Data . 只有 点击 OK .

    3. 激活新的 Table3 使用 Transform > Run Python Script . 只有 点击 好啊 .

    4. 激活编辑栏并用替换其中的内容 = Python.Execute("# Python:",[df1=Table1, df2=Table2]) . 点击 Enter .

    5. 如果系统提示您这样做,请单击 Edit Permission Run 下一步。

    6. Applied Steps ,在名为的新步骤中 Run Python Script ,单击齿轮图标打开 运行python脚本 编辑。

    7. 在下面插入代码段并单击 好啊 .

    代码:

    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。 在Power BI桌面中使用 Get Data .

    2。 点击 Edit Queries .

    三。 Table1 ,单击 Date column 选择 文本 然后点击 Replace Current

    enter image description here

    4。 做同样的事情 Table2

    5。 Home 选项卡,单击 输入数据

    6。 在显示框中,只需单击 好啊 .

    enter image description here

    7。 这将插入一个名为 表3 在下面 Queries 这正是我们想要的:

    enter image description here

    8。 Transform 选项卡并单击 运行python脚本 :

    enter image description here

    9。 这打开了 运行python脚本 编辑。你呢 可以 在这里开始编写脚本,但这会使接下来的步骤变得不必要的复杂。所以除了点击什么都不做 好啊 :

    enter image description here

    10。 在公式栏中,您将使用公式 = Python.Execute("# 'dataset' holds the input data for this script#(lf)",[dataset=#"Changed Type"]) . 注意,在名为 运行python脚本 :

    enter image description here

    11。 在上面的屏幕截图中有几个有趣的细节,但是首先我们将分解函数的参数 .

    部分 "# 'dataset'" holds the input data for this script#(lf)" 只需插入您在 Python Script Editor . 所以这并不重要,但你也不能只留下空白。我喜欢用短一点的,像 "# Python:" .

    部分 [dataset=#"Changed Type"] 是指向空的指针 表3 在它所处的状态下 Changed Type . 因此,如果在插入Python脚本之前所做的最后一件事不是更改数据类型,那么这部分看起来会有所不同。然后,可以在python脚本中使用 dataset 作为熊猫数据帧。考虑到这一点,我们可以对公式进行非常有用的修改:

    12。 将公式栏更改为 =python.execute(“python:“,[df1=table1,df2=table2]) 击中 进入 . 这将使 表1 表2 可作为名为 df1 df2 ,分别。

    13。 点击齿轮(或者它是花?)旁边的图标 Run Python script 在下面 应用步骤 :

    enter image description here

    14。 插入以下代码段:

    代码:

    将熊猫作为PD导入
    df3=pd.merge(df1,df2,how='左',on=['日期'])
    df3['value3']=df1['value1']*df2['value2']
    

    这将加入 DF1 DF2 日期栏 ,然后插入名为 Value3 . 不算太花哨,但有了这个装置你就可以了 任何东西 您需要使用Power BI和Python的强大功能中的数据。

    enter image description here

    15。 点击 好啊 你会发现:

    enter image description here

    你会看到 DF3 在输入数据框下列出 DF1 DF2 在蓝色的广场上。如果您在python脚本中指定了任何其他数据帧作为计算的一个步骤,那么它们也将在这里列出。要将其转换为Power BI的可访问表,只需单击 如绿色箭头所示。

    16。 就是这样:

    enter image description here

    请注意 日期栏 设置为 日期 默认情况下,但您可以将其更改为 文本 如前所述。

    点击 Home > Close&Apply 退出 Power Query Editor 回到它在Power BI桌面上的起点。

        2
  •  1
  •   Vitalijs Arkulinskis    7 年前

    可以在高级编辑器中创建空白查询并替换其内容:

    let
        Source = Python.Execute("# Python:#(lf)",[df1=Table1, df2=Table2])
    in
        Source
    

    在您可以单击源代码旁边的齿轮添加您的python代码之后,您可以在其中使用df1和df2。