
この記事では、[CSV データ更新]工程において SQL の集計関数を活用し、CSV 内の数値データを効率的に集計・活用する方法を解説します。基本的な集計関数の使い方に加え、1つのクエリで複数の集計結果を算出し、それぞれを個別の数値型データ項目へ保存する設定例も紹介します。
また、生成 AI を利用してのクエリ作成やトラブルシューティングのヒントを「付録」として末尾に記載しています。
[CSV データ更新]関連記事:
- [CSV データ更新]でデータ加工を自動化する
- [CSV データ更新]で様々なデータの入出力に対応する
- [CSV データ更新]でデータ集計を自動化する
- [CSV データ更新]で選択肢マスタを構成する(近日公開予定)
1. 集計関数について
SQL の集計関数を利用することで、CSV データの合計や平均などを算出できます。[CSV データ更新]では、CSV 上の数値は文字列として扱われます。そのため、計算を行う場合は、クエリ内で CAST 関数を用いて数値型(integer)に変換するのがポイントです。
- SUM: 合計
- AVG: 平均
- MAX / MIN: 最大値 / 最小値
SELECT
SUM(CAST("売上" as integer))
FROM "売上表"2. データを集計する
2-1. 日別の売上金額を集計する
「売上表」データから、日付ごとの売上金額を集計します。
設定例
出力オプション
- [C4: クエリ結果の保存方法]で「テーブル全体を CSV / TSV 形式で1つのデータ項目に保存する」を選択します
- [C4b: 保存する際のデータ形式]の[ヘッダの有無]で「ヘッダあり(1行目:カラム名、2行目からデータ)」を指定します
クエリ例
[C1b: クエリからアクセスする際のテーブル名]が「売上表」のデータから、「売上」列の値を数値として扱い、同一日付ごとに合計して日付順に並べる。
SELECT
"日付",
SUM(CAST("売上" as integer)) AS "売上計"
FROM "売上表"
GROUP BY "日付"
ORDER BY "日付"
2-2. 集計結果を数値型に保存する
[各セルの値を別々のデータ項目に保存する]オプションを指定すると、算出された複数の集計値を一度に複数の数値型データ項目へ、それぞれ保存することができます。
例えば、「売上表」データに対して1つのクエリを実行し、関数を使って最大値・平均値・合計値をまとめて集計します。そして、それぞれの集計結果を別々のデータ項目に一括で保存することができます。
設定例
出力オプション
- [C4: クエリ結果の保存方法]で[各セルの値を別々のデータ項目に保存する]を選択します
- [C4a: クエリ結果を保存するデータ項目]でクエリの結果として返される「1行目の各セル」に対して、個別に保存先のデータ項目を指定します
| クエリ結果のセル | 保存先データ項目 |
| 1番目のセル(下記クエリの最高値:MAX) | 数値型:最高売上 |
| 2番目のセル(下記クエリの平均値:AVG) | 数値型:平均売上 |
| 3番目のセル(下記クエリの合計値:SUM) | 数値型:売上合計 |
クエリ例
[C1b: クエリからアクセスする際のテーブル名]が「売上表」のデータから、「売上」列の値を数値として扱い関数で算出する。各関数は、1つ目のセルが「最大値」、2つ目が「平均値」、3つ目が「合計値」と出力されるように配置する。
SELECT
MAX(CAST("売上" as integer)),
AVG(CAST("売上" as integer)),
SUM(CAST("売上" as integer))
FROM "売上表"
[CSV データ更新]では入力オプションを利用して、[文字型(単一行)]のデータ項目を入力対象に指定できます。これにより1つの文字列であっても、1行1列の CSV データとみなして取り込めます。
この仕組みを使えば、[文字型(単一行)]に「文字列」として保存されている数字を読み込み、[数値型]のデータ項目に保存できます。つまり、文字列として保存されている数字を、数値データに変換することができます。
3. まとめ
これまではスクリプト工程や複雑な設定が必要だったデータ集計が、SQL を記述するだけで完結します。集計結果を数値型データ項目に保存することで、後続の工程での条件分岐(「合計金額が〇〇円以上なら承認フローへ」など)や、レポート出力に即座に活用できます。
付録. 生成 AI を使ったクエリ作成とトラブルシュート
1. ChatGPT 等でのクエリ作成
「商品マスタと売上データを商品IDで結合して、金額が 1000 円以上の商品だけ取り出したい」などと生成 AI に伝えると、大まかな SQL を作成してくれます。
- SQL の知識がなくても、「こうしたい」という処理内容を伝えるだけで利用できます
- AI への指示に「H2 Databaseに適したクエリ」といった内容を含めると、より適切な回答が生成されます
- H2 Database:内部的に利用されている RDB
- 提案された SQL は、そのまま貼り付ける前にテーブル名やカラム名をワークフローアプリに合わせて修正する必要がある場合もあります
実際に ChatGPT(o1)に SQL を生成させた例を提示します。Prompt は少し工夫して、上記の文章から少し改良しています。今回の場合、”商品ID” は数値ではなく文字列なので型変換(CAST)は不要でしたが、この部分のみの修正で正常に動作し、期待通りの結果が得られました。

2. 典型的なエラーと対処
工程の処理が失敗(エラー)した場合、[エラー通知メール]か[プロセスログ]でエラー内容を確認して対処してください。例えば、プロセス詳細画面にて「管理者モード」を有効にして、[プロセスログ]を表示します(「管理者モード」を有効にするには対象アプリにて[コントロール権限]が必要となります)。
- カラム名の不備
- 空白や 64 文字超、重複がある場合はエラー
- カラム行(1 行目)の誤字等も確認してください
- クエリ文法エラー
- ダブルクォートの付け忘れ、where と from の順序違いなど
- AI が出力した SQL を使う際も文法を再確認してください

