OData #3 Intune データ ウェアハウスでデバイス管理のためのレポートを作成する

(2022年4月1日)

2022/03/27に配信されたPower BI Weekly Newsの中で話が合った、Intunesのデータウエアハウスでのデバイス管理について調べてみました。
<iframe width="560" height="315" src="https://www.youtube.com/embed/bNi-rzvVRz0?start=1619" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

　Microsoft Endpoint Manager admin centerでは、Intuneで管理された情報を見ることができますが、データを取得してPower BIでレポートをカスタマイズすることもできます。

# 1. Microsoft Endopoint Manager admin center

　まず、[Microsoft Endpoint Manager admin center](https://endpoint.microsoft.com/)を開き、「レポート」「データウエアハウス」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/063215eb-bc9a-ed9f-cd90-ecbf3246cc27.png)

　右側に「レポートサービス用のODataフィールド」という項目の中身をコピー、Power BIのODataデータソースとして使います。

```text:API URL構造
https://fef.{location}.manage.microsoft.com/ReportingService/DataWarehouseFEService/{entity-collection}?api-version={api-version}
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/73a2b305-8500-5c1e-2cd3-7f6ed84872b9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/0d17771f-f177-0457-4926-ea0a20216e98.png)

https://docs.microsoft.com/ja-jp/mem/intune/developer/reports-api-url

# 2. メタデータ

　どのようなデータが取れるのか、先ほどのURLからメタデータを取得します。下のURLの{location}を各自の環境に合わせて書き換えます。{entity-collection}の部分に$metadataと入れるのがポイントです。

```text:metadata
https://fef.{location}.manage.microsoft.com/ReportingService/DataWarehouseFEService/$metadata?api-version=v1.0
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/e1458c8f-954f-f8cb-42c7-6d6a15f031f6.png)

　この中で最後の方にある<EntitySet Name="mobileAppInstallStates"となっているところが、エンティティ名になります。
　それぞれのエンティティの中身は、以下のDOCSを参照してください。

https://docs.microsoft.com/ja-jp/mem/intune/developer/intune-data-warehouse-collections

# 3. ベータ版

　先ほどのURLは、api-version=v1.0になっていましたが、api-version=beta でベータ版を使用して最新の機能が試せます。

 ベータ版で取得できるデータの中で興味深いのが、applicationInventoriesです。デバイス上のアプリケーションの名前とバージョンが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/a31de296-dbbd-95ba-ac5b-fa8cca328455.png)

このデータを開くと、とても長い時間待たされ、結局タイムアウトしてしまうことが多いようです。DOCSを調べてみると、2022年2月に廃止になったと書かれています。他のブログを読むとベータ版に格下げされたようです。

https://docs.microsoft.com/en-us/mem/intune/developer/reports-changelog

https://community.powerbi.com/t5/Desktop/applicationInventories-missing-in-Fields/m-p/755449

　今後、このデータを取得するにはGraphAPIを使用するように書かれています。MAMで管理されるアプリケーションを見るだけなら、v1.0でも使えるmanApplicationInstancesを使えばいいでしょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/3e5e3035-e2aa-4785-aaf0-9990f1cbaac9.png)

# 4. それでもapplicationInventoriesを使いたい場合
　ODataの接続に、Microsoft Endopoint Manager admin centerからコピーしたURLをそのまま使うのではなく、直接applicationInventoriesのエンティティを開くように指定すると、若干早くなるようです。

```text:applicationInventories
https://fef.{location}.manage.microsoft.com/ReportingService/DataWarehouseFEService/applicationInventories?api-version=beta
```

　{location}の部分は、各自の環境に合わせて書き換えます。
　コピーしたURLをそのまま使った場合、メタデータを読み込んで全部のエンティティ名を取得したのち、指定されたエンティティを展開する動きをしているようです。メタデータをとらないことでデータ取得が若干早くなるのだと思います。他のエンティティに比べ、applicationInventoriesのデータ量は大きくなるので取得には時間がかかり、やっぱりタイムアウトしてしまうかもしれません。