跳转到主要内容
所有收藏高级配置和常见问题解答高级配置
将 Fusion Operations 连接到 Power BI
将 Fusion Operations 连接到 Power BI

了解如何在 Power BI 中获取数据以构建仪表板

David Andrade avatar
作者:David Andrade
超过 3 个月前更新

Microsoft Power BI 是一款交互式数据可视化软件,主要专注于业务智能。将此工具与 Fusion Operations API 服务(文档位于此处)结合使用,您可以在 Power BI 中获取数据、构建分析和仪表板。

在本文中,我们将介绍所需的步骤。

从 Fusion Operations 检索数据

1.打开一个新的 Power BI,单击 (1)“获取数据”和 (2)“空查询”。

2.在顶部菜单中,选择 (1)“管理参数”,然后创建新参数。

创建以下参数:

2.1. apiKey,类型设置为“文本”且为必填项。此参数的值可从 Autodesk ProdSmart 配置文件 (1) 中获得。

2.2. apiSecret,类型设置为“文本”且为必填项。此参数的值也可从 Autodesk ProdSmart 配置文件 (2) 中获得。

2.3. lastNDays,类型设置为“十进制数”且为必填项。此参数将确定从 Fusion Operations 中检索多少天的数据。请注意,此数字越大,仪表板刷新时间就越长。

2.4. retryAfter,类型设置为“十进制数”且为必填项。此参数将用作向 Fusion Operations 的 API 发出的连续请求之间的缓冲(以秒为单位)。将其设置为 0.25。

所有四个参数都将显示在屏幕的左侧。

3.选择“新建源”,然后选择“空查询”。

4.在左侧菜单中,双击查询 (1),将其重命名为“getProductionRecords”,然后单击“高级编辑器”(2)。

5.复制下面的文本并将其粘贴到高级编辑器,以在 Power BI 中创建函数。

(page as number) =>let    Source = Json.Document(Web.Contents("https://fusionoperations.autodesk.com/api/authorization",        [Headers=                [#"Content-Type"="application/json",                Authorization="Basic " & Binary.ToText(Text.ToBinary(apiKey & ":" & apiSecret), 0),                #"Accept"="*/*"],            Content = Json.FromValue([scopes = {"productions_write"},                random=Number.Random()])        ])),    access_token= Record.ToTable(Source){2}[Value],    endpointUrl = "https://fusionoperations.autodesk.com/api/productions",    startTime =        Number.ToText(Date.Year(Date.AddDays(DateTime.FixedLocalNow(),-lastNDays))) & "-" &        Number.ToText(Date.Month(Date.AddDays(DateTime.FixedLocalNow(),-lastNDays))) & "-" &        Number.ToText(Date.Day(Date.AddDays(DateTime.FixedLocalNow(),-lastNDays))),    Origin = Json.Document(Web.Contents(endpointUrl,        [Query=[access_token = access_token,            #"start-time-after" = startTime,            #"worker-name" = "true",            page = Number.ToText(page)]]))in    Origin

6.重复步骤 3 和 4,但将新函数重命名为“allProductionRecords”。如果您尝试通过 API 获取除生产记录外的数据,请相应地更改查询名称和“endpointUrl”。

7.重复步骤 5,但复制并粘贴下面的内容。

let    Query = List.Generate(()=>[Result = if List.IsEmpty(getProductionRecords(1)) then null else    getProductionRecords(1), page=1],each [Result]<>null,each [MidRes = Function.InvokeAfter(()=>getProductionRecords([page]+1),        #duration(0,0,0,retryAfter)),    Result = if List.IsEmpty(MidRes) then null else        MidRes,page=[page]+1],each [Result])in    Query

8.您应该可以开始了!现在,Fusion Operations 应返回一个包含数据的列表。

处理数据

1.若要处理数据(采用 JSON 格式),请单击 (1)“到表格”。

2.选择下面的选项,然后按“确定”。

3.单击 (1) 分岔箭头图标以展开列表,然后单击 (2)“展开到新行”。

4.再次单击 (1) 分岔箭头图标以展开记录,选择 (2) 要在 Power BI 上处理的信息,取消选中 (3)“使用原始列作为前缀”选项,然后单击 (4)“确定”。

5.单击 (1) 要展开的相关列的分岔箭头,具体取决于要执行的分析。

在本例中,我们将展开 (i) operation、(ii) worker、(iii) quantity、(iv) work-time、(v) start-time 和 (vi) end-time 列。为了更好地理解每列是什么意思,“使用原始列作为前缀”选项现在应处于活动状态(请查看第 4 步)。

6.对于每个相关列,单击标题左侧的 (1),然后将数据设置为正确的类型。

在本例中,operation.code 和 operation.product 应设置为文本,worker.number 应设置为整数,quantity 应设置为十进制数,work-time 应设置为文本(我们必须对其进行处理),start-time 和 end-time 应设置为日期/时间/时区。

7.如前所述,应处理持续时间列,因为 Power BI 无法将“00H00m16s”解析为持续时间字段。相反,我们将此列中的值转换为分钟。

7.1.单击 (1)“添加列”和 (2)“自定义列”。

7.2.在此自定义列中,将其命名为 (1) work-time-minutes,然后将下面的公式粘贴到框 (2) 中。单击 (3)“确定”以提交公式并创建列。

Number.From(Text.Start([#"work-time"],Text.Length([#"work-time"])-7))*60 +Number.From(Text.Middle([#"work-time"],Text.Length([#"work-time"])-6,2)) +Number.From(Text.Middle([#"work-time"],Text.Length([#"work-time"])-3,2))/60

7.3.保存类型为“十进制数”的“work-time-minutes”列。

8.我们还将从 start-time 和 end-time 字段添加两个新列。这些字段将命名为 start-day 和 end-day。这两列对最终仪表板非常有用。

8.1.选择 (1) 列,单击 (2)“日期”,然后选取 (3)“仅日期”。

8.2.将 (1) 列重命名为“start-date”。

8.3.对 end-time 列重复上述过程。将最后一列命名为“end-date”。

9.选择 (1)“主页”选项卡,然后单击 (2)“关闭并应用”。

构建简单的仪表板

1.在下面的屏幕中,选择 (1) 仪表板类型。我们将选择簇状条形图,但可以选择其他任何类型。然后,展开 (2) productionRecordsList。

2.将 (1) 数据字段拖动到仪表板字段。

3.点击 (1) 以自定义仪表板。这些选项将取决于选定仪表板的类型。

4.添加更多数据和可视化图表,创建您的自定义生产仪表板!

请注意,与本文档中介绍的步骤相比,创建上述仪表板所需的步骤要多得多(如您在图像右侧的“数据”菜单下所见)。

解决错误

将数据从 Fusion Operations 传送到 Power BI 时,可能会返回一些错误。下面列出了一些错误,并说明了如何解决:

1.Formula.Firewall: Query 'allProductionRecords' is accessing data sources that have privacy levels which cannot be used together.Please rebuild this data combination.

要修复此错误,请按照以下步骤进行操作:

1.1 单击“数据源设置”。

1.2 选择 (1) 与 Fusion Operations 相关的所有条目,然后单击 (2)“编辑权限”。

1.3.将隐私级别选为“公开”。不要忘记保存更改。

2.An error occurred in the ‘’ query.DataSource.Error: Web.Contents with the Content option is only supported when connecting anonymously.
Details:
DataSourceKind=Web
DataSourcePath=https://fusionoperations.autodesk.com/api/authorization

要修复此错误,请按照以下步骤进行操作:

2.1 单击“数据源设置”。

2.2 选择“https://fusionoperations.autodesk.com/api/authorization”,然后单击“编辑权限”

2.3 在“凭据”下,选择“编辑...”。

2.4 在左侧菜单中,选择 (1)“匿名”。不要忘记 (2) 保存更改。

如果您仍有一些疑问,请随时通过我们的实时聊天功能与我们联系。

需要帮助吗?您可以在此处请求 Fusion Operations 专家与您联系。

这是否解答了您的问题?