■タイトル

Power AutomateCSVデータをSQLクエリで処理する方法

 

■概要

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

 

SQLを使用するための準備

 @「Schema.ini」の作成

日付,商品名,数量,売上

2024-01-01,もも,12,2400

2024-01-01,りんご,20,3000

2024-01-02,ぶどう,20,6000

2024-01-02,もも,1,200

2024-01-02,りんご,19,2850

2024-01-02,りんご,11,1650

2024-01-03,もも,12,2400

2024-01-03,もも,5,1000

2024-01-03,もも,15,3000

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

図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ファイルの設定で各行は以下の通りです。

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

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

 

 A「Schema.ini」ファイルの保存場所

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

 

 BPADのアクションを設定

アクションペインの「データベース」カテゴリ内のアクションを使用します。

各アクションの順番と設定値は以下の通りです。

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%)を指定することで接続を閉じることができます。

 

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

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

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

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

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

 

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

 <SQLを使用する場合>

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

 

 

SQLを使用しない場合>

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

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

 

■まとめ

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