データフローで SharePoint フォルダ内に存在する複数のファイルを取り込む 

# はじめに

例えば、あるシステムに対して、直接 Power BI や Dataverse のデータフロー、または、Power Apps や Power Automate のコネクターで接続ができない場合があるとします。

この場合、該当のシステムから一旦データを csv や Excel に対してエクスポートし、そのデータを活用する方法がございます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/6a80a497-8966-59d1-4231-347aca746e1d.png)

しかし、元のデータが定期的に更新される場合、その差分をどう取り込めば良いのか、毎回手動で取り込むのは大変といったことで悩むこともあると思います。例えば、上記の図のように、毎月、その月のデータのみ含んだ csv ファイルがエクスポートされるみたいなときです。

そのため、今回は、以下のような条件を満たしていることが前提ですが、こちらの作業を効率化する方法を、Power BI での例や Dataverse での例を元に紹介します。

* 該当のシステムから定期的に Excel や csv のファイルを別ファイルとしてエクスポートする
* その際、ファイル名は異なるもののデータの形式は同じ

# Power BI で　SharePoint のフォルダー内に存在する Excel ファイルを元にレポートを自動更新する

レポートの元となる Excel ファイルを SharePoint のフォルダーなどのクラウド上に置き、Power BI でスケジュール更新しようと思います。

:::note
Power Autoamte でリストにデータを取り込むフローを作成し、SharePoint リストのデータをマスターにする方法も考えられますが、毎回ファイルが異なることなどから、色々考慮して作り込む必要があります。また、データの行数が多い場合、API 要求数を気にする必要があり、処理に時間を要す可能性もあります。


もしくは、SharePoint リストには取り込まず、マスターとなる Excel ファイルをテーブル化しておき、そこに手動で行を追加し、データフローで同期するというアプローチも考えられますが、毎回 Excel ファイルを編集する必要があるため、少し効率悪いと思います。
:::

データを取得から、SharePoint フォルダーを選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/57ee6400-0ecb-c3c9-7b0f-aff2abfb8d45.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/773a8110-7db6-cb01-dab4-2cdee39fbc1c.png)

一旦、サイト内の全てのドキュメントライブラリ内のファイルが取り込まれるので、該当のファイルが含まれているフォルダーでフィルターをします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/c1d0959c-a330-207e-ed83-7721655be2d9.png)

その上で、ファイルを結合します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/da178ff2-c2bb-1691-725c-5d638c7d08b2.png)

必要に応じてモデリングをします。一旦、行数だけ表示させます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/8711c33f-baf9-a026-a209-a8678d11c156.png)


該当のSharePointフォルダーにファイルを追加します。データを更新すると、行数が増えています

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/a6c547b0-7788-7ef1-5285-568506cc888a.png)

# Dataverse のデータフローで SharePoint フォルダー内の csv ファイルを元にデータを自動更新する

先に、受け皿となるテーブルを作成しておきます。ChatGPT にテストデータを作成してもらい、Excel ファイルにしてアップロードしてサクッと作成しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/cdeb2253-6b07-4e97-c2e6-8738425b840f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/01745a95-86f9-0b25-c017-f84ace3a9f27.png)

SharePoint 側には、以下のようにいくつか csv ファイルを格納しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/50f1388d-6668-c58f-6b88-8d959c4cdc19.png)

それでは、データのインポートを行います。以下のように、データの種類で SharePoint フォルダーを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/69ae5d15-fd2e-37b8-b330-f1615f4e4a28.png)

最初は SharePoint サイト内の全てのファイルが表示されるため、フォルダーでフィルターをします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/339cdfc5-d18a-bea4-1013-e6410aebda50.png)

ファイルを結合します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/11a1b872-1f0a-d36a-c92e-776f8f78a56c.png)

今回は、特別加工はせずに先に進みます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/efc1ea42-6470-017d-0d6f-8f4944c619a3.png)

列のマッピングをして公開します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/4bef1990-4139-e0f0-b050-467290729b0a.png)

:::note warn
本当は複数テーブルが存在したり、キーを設定したりすると思いますが、今回はその辺は省きたいと思います。この辺については以下の記事も参考にしてください。
:::

https://qiita.com/Takashi_Masumori/items/3c59998123d5b820012b

最新の情報に更新し、データが取り込まれたことを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/89caf4cf-e546-2008-df5e-1b69f2bc7cb9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/023110ef-fe31-d898-709d-32990be13815.png)

SharePoint 側に csv ファイルを追加します。もう一度データフローを動かすと以下の 6 から 8 月分のデータが取り込まれる想定です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/5ac6b9be-9b8d-2e2c-2f84-35053244d163.png)

最新の情報に更新します。もちろん、自動によるスケジュール更新でも良いですし、コネクターのアクションで更新をすることも出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/adc70c0f-b4be-c9f0-3be1-b7872c356782.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/e396d99b-39b3-064e-bb99-4d40c3465db0.png)

フォーマットが同じ 6 から 8 月分の csv ファイルをフォルダーに格納しただけですが、自動でデータが取り込まれました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/b6ee7431-43ac-0f48-77dd-8bd21b6b1cda.png)

# まとめ

今回は、データフローで SharePoint フォルダ内に存在する複数のファイルを取り込む方法について紹介しました。

データの元に直接接続出来ることが望ましいですが、何らかの理由でそれが難しいものの、同じデータ形式のファイルを定期的にエクスポート出来る場合は、紹介した方法で少なからず効率化出来ると思いますので、参考にしていただけると幸いです。

なお、SharePoint のフォルダーにファイルを格納するまでについては、該当システムからの csv や Excel ファイルのダウンロード作業含めて RPA で自動化することをご検討いただくのが良いかと思います。