【Power BI】データを1000行以上エクスポートする方法

Power BIで1000行以上のデータをエクスポートする

以下の記事で、Power BIのデータをエクスポートするボタンを作成しました!

しかし、この方法では、1000行以上あるデータをエクスポートすることはできません。

今回の記事では1000行以上のデータでもエクスポートできる方法をご紹介します!

パパ
パパ

では、早速やっていきましょう!

※すでに上記の記事を見ている方は「エクスポートするデータの設定(最難関)」からご覧ください。

通常のエクスポート方法の場合

レポートの閲覧者はグラフ右上の「・・・」から「データのエクスポート」をクリックすると該当のデータをダウンロードできます。

レポートの右上から「データのエクスポート」を選択する

しかし、この方法では1000行までのデータしかエクスポートできません。

これを解決するためにはPower Auotmateと連携する必要があります

設定には少し知識が必要ですが、わかりやすく解説していきます!

1000行以上のデータをエクスポートする場合

作業の流れは以下のようになります。

Power AutomateをPower BIから起動

Power Automateのフローを作成

DAXクエリという記法を用いてエクスポートするデータの設定をします。

エクスポートボタンの設定

また、Power BI Desktopを利用の方は事前にレポートをクラウドに発行した状態にしてください。

Power Automateを起動する

Power BIからPower Automateを利用するためには、画面右側の「視覚化」の中にあるPower Automateのアイコンをクリックします。

「視覚化」の項目からPower Automateのアイコンを選択

Desktop版から編集する場合には「挿入」タブからも選択できます。

デスクトップ版の場合のPower Automateの挿入場所

以下の画面がレポートに挿入されればOKです!

レポートに挿入されたPower Automateの画面

次からPower Automateのフローを作成してきます。

フローの編集画面の起動

フローの編集画面にいくには、挿入されたPower Automateの画面右上の「・・・」から「編集」をクリックします。

Power Automateのフローの編集画面へ行く方法

すると、Power Automateの編集が画面になるので、「Power BIからExcelテーブルを更新する」を選択してください。

テンプレートのフローを選択

表示されたフローのうち、最初のアクション以外を削除したら準備は完了です。

新しいステップをクリックしてフローを追加していきます。

エクスポートするデータの設定(最難関)

この記事で一番難しい手順です。

画像を使いながら丁寧にゆっくり説明していきますね!

まず、「データセットに対してクエリを実行する」を追加してください。

それぞれの項目には以下の情報を入力します。

  • ワークスペース ⇒ レポートを発行している場所
  • データセット ⇒ 作成したレポートのデータセット
  • クエリテキスト ⇒ 取り出すデータを指定するクエリ(これが難しい…)

「クエリ」とは何かを厳密性ガン無視で表現すると「データベースに対してデータを要求すること」です。

「クエリ」の概念図

今回のデータベースに当たるのはBIレポートのデータセットということになります。

どんなデータが欲しいかをテキストで記述する必要がありますが、このときの記法を「DAXクエリ」といいます。

ポイントのおさらい

・「クエリ」とはデータベースに対してデータを要求すること

・ 「DAXクエリ」という記法を用いてデータの内容を記述する

DAXクエリについては以下の公式ページも参考にしてください。

DAX関数はいきなりゼロから書くのは難しいので、BIレポートから取得する方法をご紹介します。

BIレポートからDAXクエリを取得する

Power BI Desktopでレポートを開き、「表示」タブの「パフォーマンスアナライザー」を選択し、「記録の開始」をクリックします。

パフォーマンスアナライザーで「記録の開始」をクリックする

次に、「ホーム」タブから「更新」からクリックします。

するとパフォーマンスアナライザーの欄にレポートに表示されているオブジェクト(グラフや図形など)が表示されます。データをエクスポートしたいグラフのオブジェクトを選択し、「クエリのコピー」をクリックします。

コピーしたクエリを先ほどのフローの「クエリのテキスト」にペーストしてみます。

DAXクエリの全文

このままだと何が書かれているかさっぱりなので少し解説します。

まず、今回のクエリを4つに分けてみます。

クエリを1~4に分割

それぞれについて解説します。

  1. データの項目(列)を定義
  2. ①のデータの上から501行のみを取り出す
  3. 最終的に取り出すデータ(テーブル)を指定
  4. データの順番をソートする

この中の必須項目は③にあるEVALUATEの構文のみですが、その他の部分で詳しい設定や絞り込みを行っています。

まず、①で「SUMMARIZECOLUMNS」という関数を使っていますが、この関数で最初にデータに必要な列を指定してデータのベースを作っています。さらに、これを「_DS0Core」という変数で定義しています。

①によって以下のようなテーブルができているイメージです。

SUMMARIZECOLUMNSで作成されたテーブル「_DS0Core」のイメージ図

②では①で定義したテーブルを上から501行だけ取り出して「__DS0PrimaryWindowed」という変数にしていますね。

しかし、今回は1000行以上のすべてのデータが欲しいので、この項目は削除します。

③で最終的に取り出すテーブルをEVALUATEで決定します。

ペーストした状態では、501行だけ取り出した「__DS0PrimaryWindowed」になっているので、これを①の「_DS0Core」に変更します。

④はテーブルを氏名でソートしているだけなのでそのままにしておきます。

最終的なクエリテキストは以下のようになりました。

最終的なクエリテキスト

次に「CSV テーブルの作成」のアクションで取得したテーブルをCSVに変換します。

「CSV テーブルの作成」のアクションを追加

「開始」の欄には動的なコンテンツから「最初のテーブルの行」を選択します。

動的なコンテンツから「最初のテーブルの行」を選択

作成したCSVテーブルをシェアポイント上にCSVファイルとして保存します。

「ファイルの作成」で先ほど作成したCSVをファイルコンテンツに指定してファイルを作成します。

ファイルを作成するアクション

CSVファイルに日本語が混ざっている場合には「decodeUriComponent(‘%EF%BB%BF’)」を挿入しましょう。

詳しく知りたい方は前回の記事を確認してみてくださいね!

作成したファイルを確認してみましょう!

エクスポートされたCSVファイルの結果

問題なく、1000行以上のデータがエクスポートできていますね!

今回の内容はこれで終了です!最後までご覧いただきありがとございました!