社内ではPower BIでSharePointに保管されているファイル(SharePointフォルダ)をデータソースにすることが多々あるのですが、SharePointサイトに保管される必要なファイルのデータだけ取得する方法について悩んだことがありましたので、自分への備忘録兼ねてTipsを書いてみました。
私が悩んでいたこと
・SharePointフォルダコネクタを使用していると、SharePointサイトに保管されている全てのファイルがみえてくるが、必要なファイルだけをフィルターしたい
・Power BIデスクトップのPower Query EditorのGUIで列をフィルターしようとしても、全てのデータが表示されていないので十分にフィルターできない
というわけでTips
Power BIでSharePointフォルダコネクタを利用してデータをもってくると、Power Query Editorにて自動的に以下のようなQuery stepが作成されると思います。
2番目のFiltered Rowsのステップを少し編集するだけで、読み込みたいファイルを柔軟に変更することができそうです。
・特定のフォルダ(下図の例だとdataフォルダ)に保管されているファイルを読み込みたい場合
Table.SelectRows関数を使い、SharePointフォルダに格納されているファイルを読み込んだ時に自動的に作成されたテーブルのフォルダパスの列([Folder Path])に対して特定のSharePointフォルダパスを指定し、このフォルダに保管されているファイルだけに絞り込みます。
= Table.SelectRows(Source, each ([Folder Path] = "https://xxxx.sharepoint.com/sites/xxxx/Shared Documents/xxxx/xxxx/data/"))
・ファイル名で絞り込みたい場合
SharePointフォルダに格納されているファイルを読み込んだ時に自動的に作成されたテーブルのファイル名の列([Name])に対してText.Contains関数を使い、特定の文字列のファイルだけを絞り込むようにすればよさそうです。
= Table.SelectRows(Source, each Text.Contains([Name], "xxxxx"))
GUIでポチポチ設定するのもいいですが、Power QueryのM関数を知っているとできることが広がるな、と思うきっかけになりました。
以上。