Power Queryを使用していると、エラーによく遭遇したりします。初心者のうち、エラーが発生すると対処に困るものですが、エラーの種類について知っていれば冷静に対処できますので、事例を交えて対処法について記載してみようと思います。なお、頻出エラーについては下記公式ドキュメントをご参考ください。
エラーの種類
具体的な事例について紹介する前、まずはエラーの種類について知る必要があります。以下はそれらを簡単にまとめたものとなります(上記公式ドキュメントを引用)。
- ステップレベルエラー
特徴:クエリの評価が止まってしまう - セルレベルエラー
特徴:クエリの評価は止まらないことが多いが、データモデルへインポートした際やExcelワークシートへ出力しようとする際にエラーが発生する可能性あり
エラーの多くがステップレベルエラーとなりますが、主に以下のエラーが含まれます(各エラー及び対処法の詳細は別々に記載します)
ステップレベルエラーと似ていますが、セルレベルのエラーは以下の通り
- セルレベルエラー
- データ型設定時の値のエラー
- 操作エラー(計算エラー)
- データ型設定時の値のエラー
ステップレベルエラーとその対処事例
ソースデータエラー
ソースデータエラーはエラーメッセージを見ればすぐに判明できます。ソース先を変更すれば良く、非常にシンプルで悩むことは少ないと思います。ソースの変更はFolderパスであればそれを変更してあげるだけで良く、Power BIでもExcelでも以下のように行います。
- クエリエディタを立ち上げ、「データソース設定」から「ソースの変更」
- アドレスを正しい参照先へ変更
これだけでOKです。なお、このやり方が便利なところは、例えば以下のように、複数のクエリが全て同じファイルを参照していた場合、パラメータを使用することで、参照先を一気に変更できるところにあります。
◆ 複数のクエリが1つのExcelを参照している場合
①~② クエリエディタを開き、「データソース設定」>「ソースの変更」
③ 新しいパラメータをクリック
④ パラメータ名を指定し、⑤ 新しいパスを入力、⑥ OK
⑦ ファイルパスが指定されていることを確認し、⑧ OK
⑨ 全てのクエリの参照先がExcelPathになっていることを確認
これでクエリを1つずつ、参照先を変更することなく、一発で全てのクエリを変更できました。
Power BIからインポートした場合、上記やり方が通用しない?
ExcelのデータモデルやPower Query等をPower BIへインポートした場合、上記やり方が通用しないことがあります。Power BIにはインポートという機能があり、Excelで作ったPower Queryやデータモデルなどをインポートできます(下図)。
Power BI Desktopを立ち上げ、ファイル > ①インポートとクリックしていきます。
③ 開始をクリック
④ 「接続の保持」をクリック(「データコピー」については後述)
⑤ Excel.Workbook(中略){[Name] = "dGroup"]}[Data]というクエリが付属してきます。dGroupはExcel内のテーブルであり、そのテーブルを指定していることになります
{[Name] = "dGroup"]}[Data]の意味するところは、[Name]という列の中で、dGroupという名前のレコード、すなわち、ソース{[Name = "dGroup"]}がこれに該当し、そのレコード内の[Data]の中身を抽出せよ、となります。
ここで、先ほどと同じにように、「データソース設定」からソース先を変更してみようとすると・・・⑦の通り、なぜかボタンがグレイアウトの状態になり、選択できません。
最初にこの現象に遭遇した時は非常にショッキングでしたが、ステップを1つ追加してあげると対処できるようになります。
上記⑤のクエリを以下のように変更します。
すると、ソースは以下のように、Excelファイル内の各シートとテーブルが表示されます。
ここで、数式バーのfxをクリックし、ステップを追加します。
すると、数式バーには「=ソース」という数式が挿入されますが、これにカットしたM式をペーストします。Power Queryを日頃使っている方であれば見覚えがあると思いますが、「ナビゲーション」というステップが挿入されます(ここは面白いのですが、fxをクリックしただけではステップ名は「カスタム1」になりますが、{[Name = "dGroup"]}[Data]を下図のように入れると、自動的に「ナビゲーション」という名前に変更されます)。
これでdGourpというクエリに対しては処理が完了しました。これをその他の全てのクエリに対して行っていきます。
最後にもう一度「データソース設定」を開くと、先ほど選択できなかった「ソースの変更」が選べるようになりました。
この事例のポイントは2つ
- インポートを使用し、その際「接続の保持」を選択
- インポートされたデータは「ナビゲーション」というステップがなく、1つのステップで対象テーブルが抽出されている
上記2つの条件が揃っていた場合、データソースの変更が出来なくなってしまいます。Excelのワークシート上にステージングクエリ(商品マスタ、店舗マスタ、売上実績等)として使用するデータを格納している人で、最終的にPower BI Desktopにそれらも含めインポートしてBIレポートを作る人が影響を受けることになります。
ちなみに、インポート時に「データの保持」ではなく、「データコピー」を選択していた場合、dGroupクエリは以下のようにBinary扱いのテキストとして自動的に書き換えられます。
これは下図の「データの入力」と同じ扱いになります。
そのため、「データソース設定」を開いても、事例の3つのクエリのソース先を見ようとしても、下記の通り見つかりません。
長くなりますので、今回は「ソースデータエラー」の対処法及び派生パターンについて紹介しました。
まとめ
- Power Queryで発生するエラーは数種類あり、それぞれ特徴があるため、公式ドキュメントを読んで概要について理解しておくとGood
- ソースデータエラーはパスを変更すればよいというシンプルなものもあれば、Excelからインポートしてクエリステップを分けて記述しないと”パスの変更ができない”面倒なパターンも存在する