Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.
Check it out now!Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers. Get Fabric certified for FREE! Learn more
Power BI 数据流使您能够连接、转换、组合和分发数据以进行下游分析。一些用户希望监控数据流的刷新历史记录和状态,以便他们可以为使用这些数据流的数据集制定刷新计划。
在本文中,我将介绍三种获取 Power BI 数据流刷新历史记录的方法。
方法1
最简单的方法是查看数据流设置页面上的 刷新历史记录。
导航到 '设置' > '数据流' > '刷新历史记录'。您还可以在 '工作区' > '上下文菜单' (...) > '刷新历史记录'.
刷新历史记录提供了刷新的概述,包括运行时间、刷新类型、持续时间和运行状态。要以 CSV 文件的形式查看详细信息,你可以勾选需要查看的记录然后点击左上角的‘以CSV格式下载‘按钮。在此 CSV 文件中,有此数据流中包含的每个表(也称为实体)的详细刷新历史记录。如果刷新失败,它还包含表的错误消息。为了更好地理解 CSV 文件中的所有属性,请参阅了解和优化数据流刷新 - Power BI |Microsoft 文档。
方法 2
如果您拥有高级 Power Automate 许可证,则可以创建自动化云端流来记录数据流的刷新历史记录。这在官方文档中已经很好地介绍了数据流连接器的 Power Automate 模板 |Microsoft 文档。它引入了以下三个模板。
方法 3
第三种方法是使用 Power BI REST API 进行数据流。您可以使用数据流 - 获取数据流事务API 获取指定数据流的刷新事务列表。与前面的方法 2 类似,它返回整个数据流的刷新元数据,而不是数据流中的每个表的刷新元数据。它需要一个 GET 请求,如下所示。
GET
https://api.powerbi.com/v1.0/myorg/groups/{groupId}/dataflows/{dataflowId}/transactions
这种方法比其他两种方法更灵活。您可以将其与其他 Power BI REST API 结合使用,以根据您的需要获取数据。可以使用 Power Query 编辑器从这些 API 获取数据并转换返回的数据。然后,也可以使用它们创建自定义监控报告。
以下是有关如何获取新工作区中每个数据流的最新刷新历史记录的 M 代码示例。
1. 创建自定义函数 getRefreshHistory 以获取特定数据流的最新刷新记录。我向它添加了一个 duration 列。
(groupId as text, dataflowId as text) =>
let
Source = Json.Document(
Web.Contents(
"https://api.powerbi.com/v1.0/myorg/groups/" & groupId & "/dataflows/" & dataflowId & "/transactions",
[
Headers = [Authorization = "Bearer " & GetAccessToken()]
]
)
),
#"Converted to Table" = Record.ToTable(Source),
Value = #"Converted to Table"{1}[Value],
#"Converted to Table1" = Table.FromList(Value, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Expanded Column1" = Table.ExpandRecordColumn(
#"Converted to Table1",
"Column1",
{"id", "refreshType", "startTime", "endTime", "status"},
{"id", "refreshType", "startTime", "endTime", "status"}
),
#"Changed Type" = Table.TransformColumnTypes(
#"Expanded Column1",
{
{"id", type text},
{"refreshType", type text},
{"startTime", type datetime},
{"endTime", type datetime},
{"status", type text}
}
),
#"Added Custom" = Table.AddColumn(#"Changed Type", "duration", each [endTime] - [startTime]),
#"Changed Type1" = Table.TransformColumnTypes(#"Added Custom", {{"duration", type duration}}),
#"Filtered Rows" = Table.SelectRows(
#"Changed Type1", let latest = List.Max(#"Changed Type1"[startTime]) in each [startTime] = latest
)
in
#"Filtered Rows"
2. 使用数据流 - 获取数据流 API 获取工作区中的所有数据流,并调用函数 getRefreshHistory 以获取每个数据流的最新刷新历史记录。
let
groupId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
Source = Json.Document(
Web.Contents(
"https://api.powerbi.com/v1.0/myorg/groups/" & groupId & "/dataflows",
[
Headers = [Authorization = "Bearer " & GetAccessToken()]
]
)
),
#"Converted to Table" = Record.ToTable(Source),
Value = #"Converted to Table"{1}[Value],
#"Converted to Table1" = Table.FromList(Value, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Expanded Column1" = Table.ExpandRecordColumn(
#"Converted to Table1", "Column1", {"objectId", "name"}, {"objectId", "name"}
),
#"Renamed Columns" = Table.RenameColumns(
#"Expanded Column1", {{"objectId", "dataflowId"}, {"name", "dataflowName"}}
),
#"Changed Type" = Table.TransformColumnTypes(
#"Renamed Columns", {{"dataflowId", type text}, {"dataflowName", type text}}
),
#"Invoked Custom Function" = Table.AddColumn(
#"Changed Type", "refreshHistory", each getRefreshHistory(groupId, [dataflowId])
),
#"Expanded refreshHistory" = Table.ExpandTableColumn(
#"Invoked Custom Function",
"refreshHistory",
{"refreshType", "startTime", "endTime", "status", "duration"},
{"refreshType", "startTime", "endTime", "status", "duration"}
)
in
#"Expanded refreshHistory"
在这里,我使用自定义函数 GetAccessToken 从 Azure 服务获取访问令牌(不记名令牌)。下面的代码是实现此目的的一种方法。若要获取访问令牌,需要在 Azure 门户中注册 Azure Active Directory (Azure AD) 应用程序并为其授予相关权限。请参阅注册 Azure AD 应用程序以用于 Power BI - Power BI |Microsoft 文档。
() =>
let
apiUrl = "https://login.windows.net/common/oauth2/token",
body = [
grant_type = "password",
resource = "https://analysis.windows.net/powerbi/api",
username = "your power bi account",
password = "your power bi password",
client_id = "your client id for registered application",
client_secret = " your client secret for registered application"
],
Source = Json.Document(Web.Contents(apiUrl, [Content = Text.ToBinary(Uri.BuildQueryString(body))])),
access_token = Source[access_token]
in
access_token
结论
如果要大致了解租户或工作区中数据流的刷新历史记录,可以使用 Power Automate 模板或 Power BI REST API 获取刷新数据并基于其构建监控报告。有关刷新失败时进行故障排除的详细信息,您可以从“设置”页面上的“刷新历史记录”下载 CSV 文件。
作者:Jing Zhang
审核:Kerry Wang & Ula Huang
翻译:Xiaoxin Sheng
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.