[CSV データ更新]でデータ集計を自動化する

この記事では、[CSV データ更新]工程において SQL の集計関数を活用し、CSV 内の数値データを効率的に集計・活用する方法を解説します。基本的な集計関数の使い方に加え、1つのクエリで複数の集計結果を算出し、それぞれを個別の数値型データ項目へ保存する設定例も紹介します。

また、生成 AI を利用してのクエリ作成やトラブルシューティングのヒントを「付録」として末尾に記載しています。

[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 "売上表"
3つの[数値型]データ項目に個別保存

[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)は不要でしたが、この部分のみの修正で正常に動作し、期待通りの結果が得られました。

ChatGPT への Prompt 例と生成された SQL クエリ

2. 典型的なエラーと対処

工程の処理が失敗(エラー)した場合、[エラー通知メール]か[プロセスログ]でエラー内容を確認して対処してください。例えば、プロセス詳細画面にて「管理者モード」を有効にして、[プロセスログ]を表示します(「管理者モード」を有効にするには対象アプリにて[コントロール権限]が必要となります)。

  • カラム名の不備
    • 空白や 64 文字超、重複がある場合はエラー
    • カラム行(1 行目)の誤字等も確認してください
  • クエリ文法エラー
    • ダブルクォートの付け忘れ、where と from の順序違いなど
    • AI が出力した SQL を使う際も文法を再確認してください
[プロセスログ]のエラー出力例

上部へスクロール

Questetra Supportをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む