体验Translytical TasksFlow,PowerBI数据回写保姆级教程
Power BI 新推出的Translytical Tasks Flow功能,使用户能够直接从 Power BI 报告中自动化操作,从而简化操作流程,用户无需离开报告界面即可立即触发任务流。
Translytical task flow 由 Fabric 用户数据函数驱动,可实现多种自动化任务。用户现在可以根据报告中提供的筛选上下文和输入,以编程方式修改实现数据回写、动态通知等工作。
本文带你来体验一下Translytical任务流,详细介绍如何在 Power BI 中使用该功能实现数据回写并自动更新(基于官方示例数据集为产品添加新的描述)。
准备工作
在开始之前,你需要:
- 有一个PowerBI国际版账户,免费的也可以,并开启Fabric 试用。
- 安装最新版的Power BI Desktop,并启用“Translytical Tasks Flow"和"文本切片器"预览功能。
下面进入操作步骤:
创建 SQL 数据库
在Fabric中创建一个新的 SQL 数据库,并加载 AdventureWorksLT 样本数据集。
登录PowerBI服务(app.powerbi.com),进入一个工作区,点击左上角的"新建项"。
在弹出的窗口中,下拉在存储数据中选择SQL database。
输入一个数据库名称。
点击创建,稍等片刻数据库就建好了。
这个步骤可能会提醒你升级到免费的Fabric试用版,点击升级即可。
建好数据库后,点击"示例数据",将官方的 AdventureWorksLT 示例数据加载到新建的空数据库中。
加载完成后,就能看到数据库中的每个表。
创建用户数据函数
用户数据函数是实现自动任务流的核心组件,它允许 Power BI 调用 Python 代码执行任务。本步骤将创建一个数据回写 的函数,用于将用户输入的产品描述写入 AdventureWorksLT 数据库的表中。
返回到同一个工作区中,再次点击左上角的“新建项”,下拉在开发数据中点击“用户数据函数”。
输入一个函数名:
然后就能看到函数编辑窗口。
连接到 SQL 数据库
点击代码编辑框上方的“manageConnection”按钮,选择之前创建的 SQL 数据库,然后选择 “连接”,就能看到如下的界面。
创建连接时,会自动为连接创建别名。 记下 别名 值(上图中的第一项demosql),以便在后续步骤中使用。
添加函数代码
在用户数据函数中添加代码,以便将数据写入 SQL 数据库的表中。
复制下面的代码:
import fabric.functions as fn
import uuid
udf = fn.UserDataFunctions()
@udf.connection(argName="sqlDB",alias="<REPLACE_WITH_CONNECTION_ALIAS>")
@udf.function()
# Take a product description and product model ID as input parameters and write them back to the SQL database
# Users will provide these parameters in the PowerBI report
def write_one_to_sql_db(sqlDB: fn.FabricSqlConnection, productDescription: str, productModelId:int) -> str:
# Error handling to ensure product description doesn't go above 200 characters
if(len(productDescription) > 200):
raise fn.UserThrownError("Descriptions have a 200 character limit. Please shorten your description.", {"Description:": productDescription})
# Establish a connection to the SQL database
connection = sqlDB.connect()
cursor = connection.cursor()
# Insert data into the ProductDescription table
insert_description_query = "INSERT INTO [SalesLT].[ProductDescription] (Description) OUTPUT INSERTED.ProductDescriptionID VALUES (?)"
cursor.execute(insert_description_query, productDescription)
# Get the result from the previous query
results = cursor.fetchall()
# In real-world cases, call an API to retrieve the cultureId
# For this example, generate a random Id instead
cultureId = str(uuid.uuid4())
# Insert data into the ProductModelProductDescription table
insert_model_description_query = "INSERT INTO [SalesLT].[ProductModelProductDescription] (ProductModelID, ProductDescriptionID, Culture) VALUES (?, ?, ?);"
cursor.execute(insert_model_description_query, (productModelId, results[0][0], cultureId[:6]))
# Commit the transaction
connection.commit()
cursor.close()
connection.close()
return "Product description was added"
粘贴替换代码编辑框中原有示例代码。
并将代码中的"<
REPLACE_WITH_CONNECTION_ALIAS>"替换为你创建的数据库别名,如上图。
运行测试函数
点击“publish”发布函数。
发布函数后,将鼠标悬停在函数资源管理器菜单上的write_one_to_sql_db函数上,然后选择“运行”图标。
在运行界面上,输入两个必需的参数,第一个框可以是任意文本(不超过200个字符),第二个框中填写1至127的任意整数。
点击运行按钮测试,没有报错,说明上面创建函数成功,关闭“运行”页,至此PowerBI服务端操作完成。
PowerBI desktop中连接数据库
以 DirectQuery 模式连接到 SQL 数据库。
打开最新版的PowerBI desktop,登录与前面相同的账户,然后选择 OneLake 目录>SQL database。
在 OneLake 目录 窗口中,选择前面创建的SQL数据库。
成功连接到数据库后,将打开 导航器 窗口。 选择下表,然后选择“ 加载”:
- SalesLT.ProductDescription
- SalesLT.ProductModel
- SalesLT.ProductModelProductDescription
连接模式选择"DirectQuery"
这样,就把云端创建的SQL数据库中的这几张表加载到PowerBI模型中了:
PowerBI desktop中创建报表
创建一个交互式报告,包含产品选择表格、文本输入框和触发回写的按钮。
首先在PowerBI中利用加载的表,制作两个表格:
然后在画布上插入一个文本切片器,并设置文本切片器的标题:
在画布上再插入一个空白的按钮:
按钮的操作属性打开,类型选择“数据函数”。
注:如果你没有看到数据函数,可能你的版本不是最新版,或者预览功能中没有勾选“Translytical Tasks Flow” 。
然后按下图选择该按钮操作的各个属性,都是前面已经创建好的工作区名称、函数名称以及文本切片器名称。
其中最后一项fx条件格式的设置如下图,选择SalesLT.ProductModel表中的ProductModelID字段,摘要为最大值。
然后对按钮做一下美化,主要是设置"默认"状态和"正在加载"状态的文本:
至此,报表创建完成,整个制作流程结束。
下面可以在测试一下回写效果。
还可以将这个报告继续发布到PowerBI服务中,发布后工作区打开这个报告,如果无法显示内容,提示缺少凭据:
可以请找到这个报告的语义模型的数据源设置,点击编辑凭据:
然后选择适当的身份验证方法(Basic 采用用户名和密码, OAuth2 支持使用当前帐户进行单一登录,选OAuth2更简单)。
这样工作区的报告就可以正常显示了,数据回写的效果与上面看到的一样。
通过本教程,就实现了Power BI 报告利用 Translytical 任务流实现数据回写。你可以选择产品、输入一段文字描述并将其保存到 SQL 数据库,实时查看更新结果,这种方法非常适合需要交互式数据注释的场景。
这种方式要比之前分享的利用Power Apps实现数据回写更简单更丝滑。
Translytical task flows 弥合了分析洞察与运营执行之间的鸿沟,将 Power BI 从一个纯粹的报告单向查看工具转变为一个双向的分析和互动平台,以后我们也会分享它的更多用法。
PowerBI星球的最新2024版内容合辑,值得你收藏学习:
「PowerBI星球」内容合集「链接」
.