Microsoft Power BI は、ビジネス インテリジェンスに重点を置いたインタラクティブなデータ視覚化ソフトウェアです。このツールと Fusion Operations API サービス(ドキュメントはこちらから入手可能)を組み合わせると、Power BI でデータを取得し、解析やダッシュボードを構築できるようになります。
この記事では、必要な手順について説明します。
Fusion Operations からデータを取得する
1. 新しい Power BI を開き、(1)「データを取得」、(2)[空のクエリー]をクリックします。
2. トップ メニューで、(1)[パラメータを管理]を選択し、新しいパラメータを作成します。
次のパラメータを作成します。
2.1. apiKey、タイプは「Text」で必須。このパラメータの値は、Autodesk Fusion Operations プロファイル(1)から取得できます。
2.2. apiSecret、タイプは「Text」で必須。このパラメータの値も、Autodesk Fusion Operations プロファイル(2)から取得することができます。
2.3. lastNDays、タイプは「Decimal Number」で必須。このパラメータは、Fusion Operations から取得するデータの日数を決定します。この値が大きいほど、ダッシュボードの更新にかかる時間が長くなることに注意してください。
2.4. retryAfter、タイプは「Decimal Number」で必須。このパラメータは、Fusion Operations の API への連続したリクエスト間のバッファ(秒単位)として使用されます。0.25 に設定します。
4 つのパラメータはすべて画面の左側に表示されます。
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. 以下のオプションを選択し、OK を押します。
3. (1)分岐する矢印アイコンをクリックしてリストを展開し、(2)[新しい行に展開]をクリックします。
4. (1)分岐する矢印アイコンを再度クリックしてレコードを展開し、(2)Power BI で処理する情報を選択し、(3)[元の列を接頭辞として使用]オプションを削除し、(4)OK をクリックします。
5. 展開に関連する列の分岐する矢印で(1)をクリックします。これは、実行する解析によって異なります。
この場合、(i)作業、(ii)作業者、(iii)数量、(iv)勤務時間、(v)開始時刻、(vi)終了時刻の列を展開します。各列の意味をより深く理解するために、[元の列を接頭辞として使用]オプションがアクティブになりました(チェック ポイント 4)。
6. 関連する各列について、ヘッダーの左側にある(1)をクリックし、データを正しいタイプに設定します。
この例では、operation.code と operation.product をテキストに設定する必要があり、worker.number を整数に設定する必要があり、数量を十進数に設定する必要があり、勤務時間をテキストに設定する必要があり(それを処理する必要があります)、開始時刻と終了時刻を日付/時刻/タイムゾーンに設定する必要があります。
7. 前述のとおり、Power BI では「00H00m16s」を期間フィールドに解析できないため、期間列を処理する必要があります。代わりに、この列の値を分に変換します。
7.1.(1)列を追加、および(2)[カスタム列]をクリックします。
7.2.このカスタム列に、(1) work-time-minutes という名前を付け、ボックス(2)に以下の式を貼り付けます。(3) [OK]をクリックして式を送信し、列を作成します。
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」を「10 進法」タイプで保存します。
8. また、フィールド start-time と end-time から 2 つの新しい列を追加します。これらのフィールドには、開始日と終了日の名前が付けられます。これらの 2 つの列は、最終ダッシュボードに役立ちます。
8.1. (1)列を選択し、(2)日付をクリックして、(3)日付のみを選択します。
8.2. (1)列の名前を「start-date」に変更します。
8.3. 終了時刻の列に対してこのプロセスを繰り返します。最後の列に「end-date」という名前を付けます。
9.(1) [ホーム]タブを選択し、(2) [閉じて適用]をクリックします。
簡単なダッシュボードを作成する
1. 次の画面で、(1)ダッシュボードのタイプを選択します。ここでは集合棒グラフを選択しますが、他のグラフも選択できます。次に、(2) productionRecordsList を展開します。
2. (1)データ フィールドをダッシュボード フィールドにドラッグします。
3. (1)をタップして、ダッシュボードをカスタマイズします。これらのオプションは、選択したダッシュボードのタイプによって異なります。
4. さらにデータやビジュアライゼーションを追加し、カスタム運用のダッシュボードを作成します。
上記のダッシュボードを作成するには、このドキュメントで説明されている手順に比べてかなり多くの手順が必要であることに注意してください([データ]メニューの右側を参照)。
エラーのトラブルシューティング
Fusion Operations から Power BI にデータを取得するときに、いくつかのエラーが返される場合があります。以下のリストとその解決方法をご覧ください。
1. Formula.Firewall: クエリー[allProductionRecords]は、一緒に使用できないプライバシー レベルを持つデータ ソースにアクセスしています。このデータの組み合わせを再構築してください。
このエラーを修正するには、次の手順に従います。
1.1 [データソースの設定]をクリックします。
1.2 (1)すべてのFusion Operations 関連のエントリを選択し、(2) [権限を編集]をクリックします
1.3.プライバシー レベルを[パブリック]に選択します。変更を保存することを忘れないでください。
2. [クエリー]でエラーが発生しました。DataSource.Error: Web.Contents オプションを指定した Web.Contents は、匿名で接続する場合にのみサポートされます。
詳細:
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 エキスパートがあなたに連絡するようにこちらからリクエストしてください。