[Power BI] 「データを取得」時の工夫🤩 軽いデータでレポート作り→公開時は全件データ

# はじめに

レコード数の多いデータをインポートしてレポートを作成しなければいけないとき、こんな風にしてみるのはいかがでしょうか。

## やりたいこと

- レポートを作成するときは一部のデータで行いたい
- Power BI Serviceで公開するレポートは全件表示したい

## ホームタブの「データを取得」は全件取得

「データを取得」し始めるときにPower BI Desktopの **ホームタブにある「データを取得」** から開始すると、データソースや、その資格情報を入力し終えて「取込」ボタンを押すと、**全件取得** が開始します😃

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/f3b687b4-4cfb-fc71-56a8-d715fd40a9af.png)

データ量があらかじめわかっていて、少ない量だったらそれでもいいのですが、日々更新される売上データなど何億行もあるデータの場合はそうもいきません。取込に1時間以上かかる場合だってあるし、1時間待ったのに最後エラーを吐いて終了している・・ことだって起こりえます。ですので、大きいデータはデータ量を制限して取り込む必要があります。

## Power Query Editorの「データを取得」

こういった場合、「データを取得」は **Power Query Editor** から行いましょう😁
ホームタブの**データの変換** をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/ab92fd41-217d-71b3-c5e7-8f5ba1e26ca7.png)

Power Query Editorが別ウィンドウで開いたら、**新しいクエリ** からデータを取得していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/9452a037-2038-e45a-f945-e6011f473e36.png)

Power Query Editorから読込むと**上位1,000行のプレビュー表示** となります。
ですので、データの読込は**サクッ**と終わり、ETL作業に入ることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/99672a2f-e644-5709-2db8-acba69742be2.png)

## 上位の行を保持

このまま「閉じて適用」を押してしまうと、結局**全件取得**に😥

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/484f2deb-f061-3a19-0699-08cb16997115.png)

いろいろ方法は考えられますが、今回は「上位の行を保持」を試してみましょう。
テーブル左上にあるボタンをクリックしメニューを出し、**「上位の行を保持」** を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/c5daa98a-ad5e-ff10-6bca-265797624e07.png)

例えば、上位10,000行などを設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/bb74c979-0996-8dcf-02cd-5e4d47941991.png)

この状態で「閉じて適用」をクリックすると、10,000行のデータで作業を開始することができます。

:::note warn
「下位の行を保持」を選択すると、行数を絞ることになり結果は一緒になりますが、テーブルデータ全体をスキャンする必要があるため処理が重くなる可能性があります。
:::

## パラメーターを作成😉

上記のように行数を絞ってレポートを作成すると、Power BI Serviceに発行するとその10,000行のデータしか入っていないレポートになります。

そこで、まずはパラメーターを作成しましょう。
Power Query Editorの **「パラメーターの管理」** をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/6e486346-d942-1556-37d7-146c9b922c80.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/967f6168-64e1-636d-619e-f74c5004fafc.png)

## パラメーターを「上位の行数を保持」に適用

作成したパラメーターを、「上位の行数を保持」に適用します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/c0dad9a6-bb48-eef4-a673-57138a916753.png)

ここまで行ったら「閉じて適用」をクリックします。結果は先ほどまでと同じように、上位の行10,000行のみが取得されており、軽いデータでビジュアライズ作業を行うことができます。

## ビジュアルを作成して、PowerBI Serviceへ発行

Power BI Desktopでこのようなビジュアルを作成します。行数を数えるだけの簡単なメジャーと、カードビジュアルを表に出しています。
当然、Power BI DesktopとPower BI Serviceでは同じ行数が表示されています。

**Power BI Desktop**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/ab338c68-2e13-a611-81cf-1ac981081118.png)

**Power BI Service**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/72900248-b64d-3ee7-e820-6fdf10e6eede.png)

## Power BI Serviceでパラメーターの値を変更する😊

Power BI Serviceにアップしてあるデータだけ全件取得を行いたいので、パラメーターの値をService上で変更します。データセットの三点リーダーをクリックし、設定画面にいきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/c8f36d2f-4e41-9c42-eab5-9f0ef22ae6c3.png)

設定画面に行くと、**「パラメーター」** という項目があるので、そこの数値を任意の値に変更します。全件データを取得したいときは絶対に超えない大きい数字に変更するといいでしょう。
今回も1300万件ほどのデータですが、適当に**100000000000**と設定しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/a4db9f30-4794-c167-de1a-e9537fc011a7.png)

## データセットを更新

ここまで作業をしたら、あとはPower BI Service上でデータセットを更新するだけです😁
リフレッシュをしてしばらくまつと、全件取得できていることがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/9fd31494-87db-4a10-6e38-d1eb8a5bc69e.png)

無事、最初にやりたかったことはできました。

- レポートを作成するときは一部のデータで行いたい
- Power BI Serviceで公開するレポートは全件表示したい

# まとめ

大きなデータを扱うときはデータの準備、レポートの作成時、発行後と、いろいろと考えないといけないことが多くなってくる。パラメーターやデプロイパイプラインなどをうまく使いながらデータの荒波を乗り越えたい🐋

## 参考URL

https://docs.microsoft.com/ja-jp/power-bi/connect-data/service-parameters