- 开放式 API
- Automation Hub API 简介
- API 参考
- 从 Automation Hub 生成令牌
- 输出字典
- Automation Hub 开放式 API Power Query 数据解析
Automation Hub 开放式 API Power Query 数据解析
事实证明,解析来自 Automation Hub API 的数据有时十分具有挑战性,尤其是在合并非常复杂的报告时。
在此页面中,我们将提供一些提示和技巧,以用于改进整体数据解析流程。该页面包含:
- 参考开放式 API 和 Power Query 文档的步骤。
- 一个示例文件,您可以在其中直接在 Power Query 中练习这些步骤。
使用以下步骤设置主查询:
- 转到 Power BI 或 Excel,然后按“获取数据”- 然后选择“来自网页”。
- 在新窗口中,按“高级”。
- 在这里,您需要为连接添加相应的开放 API 数据。
- 首先添加端点(例如 GET 自动化管道)。
- 然后是标头
- 在标头中,添加身份验证令牌。
- 在插入令牌的值之前,请务必添加“持有者”一词。
- 按“连接”。
现在,您应该可以从 Power BI 中的开放式 API 获取 JSON 响应。此外,您需要使用以下步骤在保存表格之前深入研究数据:
- 展开数据对象。
- 然后展开流程的对象。
- 现在,您可以将数据转换为表格,这将产生包含所有记录的单个列。
- 展开该列以获取 JSON 文件中的所有可用记录 - 您可以选择获取所有记录或仅获取部分记录。
- 完成展开后,请务必检查所有列,因为其中一些列具有您需要展开的嵌套记录。
- 遍历每一列,直到确保数据正常。您还可以根据需要设置某些列的格式。
- 如果您的数据正常,请按“保存并关闭”,然后等待数据加载。
- 您现在可以开始构建仪表板/报告。
从不使用任何限制参数的简单查询开始,默认情况下,您将获得默认项目数 (20) 的响应,然后继续执行以下步骤:
- 向下钻取到“总页数”字段。
- 单击“函数”按钮,您的公式应更改为 =totalPages。
- 插入以下公式
=List.Numbers(1,totalPages,1)
。 - 系统将生成一个列表,其中包含 API 响应中所有可用的页码。
此列表是动态的,具体取决于从响应中获取的页数。因此,如果您要刷新 API 查询,并且有新数据(新页面),它将自动将其添加到列表中。继续进行以下步骤:
- 将列表转换为表格。
- 将该列重命名为“Page”,并将数据类型更改为“文本”。
- 创建自定义列。
- 在列公式中添加以下查询:
let
Source = Json.Document(Web.Contents(" https://{yourDomain}/automationhub_/api/v1/openapi/automationpipeline?pre=all&page="&[Page], [Headers=[#"Content-Type"="application/json", #"x-ah-openapi-app-key"="test", #"x-ah-openapi-auth"="openapi-token", Authorization="Bearer xxxxxx"]])),
data = Source[data],
processes = data[processes]
in
processes
let
Source = Json.Document(Web.Contents(" https://{yourDomain}/automationhub_/api/v1/openapi/automationpipeline?pre=all&page="&[Page], [Headers=[#"Content-Type"="application/json", #"x-ah-openapi-app-key"="test", #"x-ah-openapi-auth"="openapi-token", Authorization="Bearer xxxxxx"]])),
data = Source[data],
processes = data[processes]
in
processes
上述查询从自动化管道获取数据,并使用页面参数(我们在列表中动态获取)获取所有可用页面的内容。5. 单击“确定”,并展开列。现在,无论 API 返回多少页,您都拥有响应中的所有可用项目。
应用程序解析(以逗号分隔)使用以下步骤完成:
- 在查询编辑器中,转到包含应用程序的列,然后按“展开至新行”。
- 再次按“展开”,然后选择要提取的应用程序元数据,例如应用程序名称。
- 在“主页选项卡/功能区”中,单击“分组依据”。
-
在分组依据窗口中,选择:
- 由于 ID 是唯一的,因此按“流程 ID”列进行分组。
- 新的列名称应类似于“应用程序聚合”。
- 操作:Sum
- 列:您为应用程序展开的列(在上面的示例中,它是 Column.1applications.applications_name)。
- 按“确定”后,您将收到错误消息,因为 Sum 函数无法处理文本条目。
- 转到公式栏,并将 List.Sum 替换为 Text.Combine 作为函数
-
此外,在公式中的应用程序列名称后,为文本条目添加分隔符,例如“, ”
这是公式在更改前后的样子:
变更前
变更后
= Table.Group(#"Expanded Column1.applications1", {"Column1.process_id
= Table.Group(#"Expanded Column1.applications1", {"Column1.process_id
- 按“保存”并查看列条目:
步骤与说明相同,但由于说明是一个文本字段,我们需要在其中分隔不同的段落,因此我们将在公式“#(lf)”中使用不同的分隔符。
变更前 |
变更后 |
---|---|
|
|
从一个新的 GET 自动化查询开始(您可以使用上面显示的分页),然后按照以下步骤操作:
-
展开以下列:
- 流程 ID
- 高级信息或高级评估(两者的工作方式相同,但在本教程中,我们将使用高级信息)
- 再次展开以获取问题字段。
-
再次展开并获取以下字段。
- 问题_文本
- 答案_文本
- 问题_响应_答案
- 展开“问题_响应_答案”并提取“响应_选择_文本”。
- 使用以下公式将“答案文本”列和“响应_选择_文本”列合并为一个列
if [AnswerText] is null then [AnswerChoice.response_choice_text] else [AnswerText]
。
这始终适用,因为您可以选择文本答案或响应选项(绝不可以同时选择两者)。使用以下步骤继续该过程:
- 检查并删除“问题”列中的所有空条目。
- 使用透视列将“问题”列和“答案”列中的所有当前数据转置为行。
- 选择“问题”列,然后从“转换”菜单中单击“透视”列。
- 选择答案列作为值列
- 选择“不作为聚合值函数聚合”,然后单击“确定”。
现在,所有概念都有一个相应的列,表示自定义问题及其相应的值。
要将两个不同的查询合并到 Power BI 中,请查看在 Power Query 中通常如何完成此操作。然后,您可以从自动化管道查询开始,并将其与 Get 自动化查询合并。
- 通过这种方式,您可以使用“Get 自动化”中的列展开“Get 自动化管道”中的可用列。
- 您需要使用流程 ID 来合并查询,因为它既是所有查询之间的唯一标识符,又是公共密钥。
在下面,您可以观看本文中描述的步骤的视频演示。
在此视频中:
00:00 - 设置主查询(用于 GET 自动化管道)
03:27 - 使用分页从任何开放式 API 请求动态获取所有项目
07:18 - 解析其他查询(GET 自动化)以提取“说明”和“应用程序”字段
14:16 - 解析其他查询(GET 自动化)以提取自定义问题/高级评估问题
26:35 - 将查询(来自 GET 自动化)合并到主查询(GET 自动化管道)
可从此处下载视频中使用的示例文件。