【Power Automate】CSVデータをSQLクエリで処理する方法

デスクトップ版Power Automate(以下、PAD)でCSVファイルから目的のデータを抽出する際、多くの場合はCSVファイルを読み込んだ後、Ifアクションなどを使った条件を設定し、抽出する方法が一般的です。しかし、SQLを使用することでフローを簡素化し、処理速度を向上させることができます。本コラムでは、その設定方法を紹介します。

■SQLを使用するための準備

①「Schema.ini」の作成
CSVファイル内のデータをSQLで抽出する際には「Schema.ini」という設定ファイルが必要です。データベースとして扱いたいCSVファイル内の項目を「Schema.ini」ファイル内で定義します。

日付,商品名,数量,売上
2024-01-01,もも,12,2400
2024-01-01,りんご,20,3000
2024-01-02,ぶどう,20,6000
2024-01-02,もも,1,200

図1:テストデータ(ファイル名:果物年間売上データ.csv)

[果物年間売上データ.csv]
Format=CSVDelimited
ColNameHeader=True
MaxScanRow=0
Character=ANSI
Col1=日付 Date
Col2=商品名 Text
Col3=数量 Long
Col4=売上 Long

図2:Schema.iniファイル記述例

図1は果物の年間売上データを想定したテストデータの先頭を表示しています。項目は日付、商品名、数量、売上の4種類の構成としています。
図2はテストデータに基づくSchema.iniファイルの設定で各行は以下の通りです。

表1:Schema.iniファイル設定項目一覧

6行目以降の項目名とデータ型の設定はCSVファイル内のデータから判断し、設定を行います。日付であればDate型、数値であればLong型というように任意に設定を行ってください。

②「Schema.ini」ファイルの保存場所
「Schema.ini」ファイルは対象のテストデータと同じフォルダ内に保存します。

③PADのアクションを設定
アクションペインの「データベース」カテゴリ内のアクションを使用します。
各アクションの順番と設定値は以下の通りです。

1「SQL接続を開く」
→データベース(今回だと果物年間売上データ.csv)と接続を行います。

図3:「SQL接続を開く」アクション設定例

接続文字列に以下を設定します。

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\work\コラム;Extended Properties=”text;HDR=Yes;FMT=Delimited”;

図4:接続文字列設定例

図4内の「Source=」には「果物年間売上データ.csv」と「Schema.ini」ファイルが保存されたフォルダパスを指定します。

2「SQLステートメントの実行」
→①で接続したデータベースから任意で条件を指定し、データを抽出します。

図5:「SQLステートメントの実行」アクション設定例

SQLステートメントには必要な条件に応じてSQL文を設定します。

SELECT * FROM [果物年間売上データ.csv]

図6: SQLステートメント設定例

図6は果物年間売上データ.csvからすべてデータを抽出するSQLステートメントとなります。(SQL構文の詳細については割愛します。)

3「SQL接続を閉じる」
→データベースとの接続を閉じます。

図7:「SQL接続を閉じる」アクション設定例

1「SQL接続を開く」アクションで作成された変数(%SQLConnection%)を指定することで接続を閉じることができます。

■りんごの売上合計を算出してみる

SQLステートメントに条件を設定し、果物年間売上データ.csvからりんごの売上合計を算出してみます。

SELECT SUM([売上]) As [総売上] FROM [果物年間売上データ.csv] WHERE 商品名=’りんご’

図8: りんごの売上合計抽出のSQL設定例

このように、SQLステートメントの条件を変更するだけで算出が可能です。合計のほか平均、最大値及び最小値や日付ごとに算出することも可能です。

■アクション数を比較してみる

<SQLを使用する場合>

図9:SQLを使用した場合のアクション数(3)

<SQLを使用しない場合>

図10:SQLを使用しない場合のアクション数(7)

SQLを使用するとアクション数が半分以下になり、処理速度の向上が期待できます。

SQLを使用したデータの抽出方法を紹介させていただきました。PADではCSVファイルのほかにもExcel、Microsoft Office Access、MySQLなど様々なデータソースに対してSQLを使用できるため環境に応じた最適な手法を選択してください。

cropped-logo-1.png

技術とノウハウでデジタルシフトをサポート
中小企業の頼れるパートナー

執筆者: 村瀬 俊昭(株式会社クロスディーズ システム技術統括エンジニア)

前職では社内システムの運用、サーバーの監視、システム運用業務の構築、システム開発業務といった業務に幅広く携わる。2021年より株式会社佐々木総研にてロボットの設計・開発、社内SEとして従事している。釣りが趣味で、大のビール好き。