Microsoft Fabric Community Conference 2025, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount.
Register nowGet certified as a Fabric Data Engineer: Check your eligibility for a 50% exam voucher offer and join us for free live learning sessions to get prepared for Exam DP-700. Get started
场景:
在 Power BI 中,当我们想要处理复杂和无序的数据时,使用 Power Query 添加许多步骤可能无法获得预期的结果。众所周知,Power Query不能使用正则表达式。如果我们能够调用Python脚本并使用正则表达式来处理数据,事情会变得简单起来。
使用的表格:
如上图所示,如果数据已导入到 Power BI 中,此时我们无法使用 Power Query 有效地处理数据,比如直接拆分出一个字段里包含的两种不同信息。在这种情况下,我们可以调用 Python 的 re 模块的正则表达式。
前提:
如果要在 Power BI Desktop 中运行 Python 脚本,需要在本地计算机上安装 Python 和两个 Python 包(pandas 和 matplotlib)。有关详细信息,请参阅此文档:在 Power BI Desktop 中运行 Python 脚本。
操作:
将数据导入 Power BI Desktop 后,我们可以在 IDE 中运行 python 脚本,并在确认脚本能够正常运行后将其复制到 pbi 查询编辑器中的 python 脚本编辑器中。
import re
import json
# 自定义函数以获取电子邮件地址
def get_find_emails(text):
emails = re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+", text)
emails = ';'.join(emails)
return emails
# 自定义函数以获取电话号码
def get_find_mobiles(text):
mobiles = re.findall(r"[1-9][0-9]{4,}", text)
mobiles = ';'.join(mobiles)
return mobiles
email_list = []
tele_list = []
for i in range(len(dataset)):
text = dataset.iat[i, 1]
email = get_find_emails(text)
email_list.append(email)
tele = get_find_mobiles(text)
tele_list.append(tele)
dataset['email'] = email_list
dataset['tele'] = tele_list
这段代码定义了两个函数:
get_ find_ Email(用于获取电子邮件地址的自定义函数)和 get_ find_ Mobile(用于获取电话号码的自定义函数),将对应的结果存储为两个列表形式,并添加到数据表中。
另外,我们可以在线搜索更多有关于正则表达式的使用方式。
单击“确定”以返回结果:
展开表格后,额外的email和tele列分别是我们想要获取的电话号码和电子邮件地址。
有关详细信息,请查看附件。
作者: 陆良
指导: Ula & Kerry
翻译:王雅洁
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.