Power BI REST API を使ってデータフローの更新を仕掛ける

ついでに アプリのワークスペースに配置された データフロー についても更新を試みる。ただし、Power BI データフロー は 現在パブリックプレビューの段階だし、サポートする API も当然プレビュー。普段使いまでには至らないけどちょっとした小道具っぽく使えてよいかなと。

以前のポストでアプリのワークスペースに配置されたデータセットの更新を仕掛けてみた。
[Power BI REST API を使ってデータセットの更新を仕掛ける - Qiita](https://qiita.com/PowerBIxyz/items/4ba32fe47630673246e3)

# 情報
[Power BI データフロー用の開発者向けリソース (プレビュー) - Power BI | Microsoft Docs](https://docs.microsoft.com/ja-jp/power-bi/service-dataflows-developer-resources)
ここに Power BI データフロー REST API のリファレンスがあるのでよく読むなど。
今回利用するのは、

- Get All Dataflows (Preview)
- Refresh Dataflow (Preview)

の 2つだけど、Create Dataflow Reference to external storage (Preview) というのがあって面白そうです。API だけで操作するということでないはずだが、
>The Create Dataflow Reference operation creates a new dataflow artifact in the Power BI service that is referencing a dataflow hosted in an external storage. The external storage includes both the dataflow definition file and the dataflow data.

[Azure 統合 - Release Notes | Microsoft Docs](https://docs.microsoft.com/ja-jp/business-applications-release-notes/October18/intelligence-platform/power-bi-service/azure-integration)
Power BI データフロー で利用されるストレージは 用意されたAzure Data Lake Storage Gen2 なのだけど、これを持ち込みの Azure リソースを参照先とすることができるようになるっていうお話。

## Action
### Group
Groups - Get Groups をそのまま使う
### Dataflows
#### Get All Dataflows (Preview)
ワークスペースに配置された データフローの情報をGET

```text:HTTP
GET https://api.powerbi.com/v1.0/myorg/groups/{groupId}/dataflows
```

アプリのワークスペースを特定できる groupId が必須。
必要なAPIのアクセス許可 : Dataflow.Read.All 

#### Refresh Dataflow (Preview)

```text:HTTP
POST https://api.powerbi.com/v1.0/myorg/groups/{groupId}/dataflows/{dataflowId}/refreshes
```

必要なAPIのアクセス許可 : Dataflow.ReadWrite.All
リファレンスには Request Body の記述がなかったので、データセットと同じ Notify Option をPOSTしてみた。

# ひと通り動作まで
## 登録したアプリの更新
データセットの更新をサポートするカスタムコネクタがすでにあるので、API のアクセス許可(Dataflow.ReadWrite.All) のみ追加
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/bc6d5666-7305-f02c-eacc-cfe1113e83c6.png)


## Get All Dataflows (Preview)
### 3.定義 - GetAllDataflows
#### 全般
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/852ad600-c43d-cc8e-c17e-3872bd9f486f.png)
表示 : internal
#### 要求
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/2b52db25-125b-8fdb-65ba-43948febc27e.png)
[サンプルからインポート]押下
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/f58e501f-daea-bab5-2858-2c4d81209e51.png)
動詞 : GET
URL : https://api.powerbi.com/v1.0/myorg/groups/{groupId}/dataflows

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/a1b0e38f-1005-4b1c-919e-eeb1d39fc27b.png)

#### 要求 - パス - groupId
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/5739747b-eaa0-c6a8-3919-6dd76ac61797.png)

### 4.テスト - GetAllDataflows
#### 操作
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/0f5494ac-07f2-3f2a-e821-8188f2521c6f.png)
[テスト操作]押下
#### 応答
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/542de089-c02e-5b21-e6b5-eefd263ce7ad.png)
応答 - ボディをコピー
### 3.定義 - GetAllDataflows
#### 応答
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/762300f6-9972-5ab9-c7e6-f489ce6fd6a2.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/dfb2057c-56e3-37c6-170e-113f4a33b6d5.png)
[サンプルからインポート]押下
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/32dbe79f-936a-1bcf-e8f9-607db8a6ed9a.png)
テストでコピーした応答 - ボディをペースト [インポート]押下
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/c0b798ad-233a-221a-27f6-d0c2f67699be.png)

## Refresh Dataflow (Preview)
### 3.定義 - RefreshDataflow 
#### 全般
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/1f954390-8361-bd78-0d29-37567b2e696f.png)

#### 要求
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/3d3cb71b-b25a-2ee8-9362-cb13462d6a1d.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/f4114236-026e-62b1-38df-19696d616405.png)

#### 要求 - パス - groupId - パラメーター
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/abe36b69-7db9-6ceb-bf00-5fae2d35d2a3.png)

#### 要求 - パス - dataflowId - パラメーター
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/775a629a-53a1-fd53-75b4-946ef37d6194.png)

#### 要求 - 本文 - body - スキーマのプロパティ
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/2a6ea80e-ebcf-d046-3a50-49058d73686a.png)

# 試す
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/faa8220a-471d-69e1-46e2-116c8cc1d812.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/a6ab38e0-4763-19cc-5ccd-667e2d817693.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/6b5321d9-3e8b-bec4-61b0-af3aa882cbd9.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193509/ab3fa04d-6643-3226-8469-d28036eb5279.png)

# その他
- [Power BI 勉強会 - connpass](https://powerbi.connpass.com/)
- [Power BI Desktop を使い始めるには](http://qiita.com/PowerBIxyz/items/6c4735cb5b5712e70981)
- [Excel で Power Query を使い始めるには](http://qiita.com/PowerBIxyz/items/52e563037b855a099ca9)