4. AIReadETL (v2.3.0~)

ETLとは、Extract、Transform、Load の頭文字を取ったもので、複数のソースシステムからデータを「抽出」し、抽出したデータを「変換」、変換されたデータを「書き出し・格納」して活用しやすくします。

AIReadETLは、AIRead独自CSVをinputとし、要望のCSVに変換する機能です。

4.1. ETLフォルダの構成

ETLフォルダは以下の構成にする必要があります。

ETLProject/                                    ---------(ETLフォルダ)
└ [プロジェクトID]/
├ header.txt                                    ---------  出力ヘッダリストファイル
├ InputHeader.txt                            ---------  入力ヘッダリストファイル
├ job.json                                       ---------  ジョブファイル
└ setting.ini                                    ---------  設定ファイル

4.2. データ加工処理(ETL)を作成

FormEditorのETLタブからETLを作成・編集できます。

4.2.1. 新規プロジェクトを作成する

新規プロジェクトを選択し、任意のプロジェクト名を入力します。

4.2.2. ロジック画面

ETLの入力値、出力値、コマンドを設定します。

No.項目説明
1入力:ヘッダーヘッダーの入力値
AIReadで読み取ったヘッダー項目から活用したい項目を追加する
2入力:明細明細の入力値
AIReadで読み取った明細項目から活用したい項目を追加する
3入力:変数変数に値をセットできる
4出力:ヘッダーヘッダーの出力値
ヘッダー項目の変換・加工後の出力値を設定
5出力:明細明細の出力値
明細項目の変換・加工後の出力値を設定
6ロジック変換処理の設定
入力、出力、コマンドを選択し入力値→出力値を要望の形にするための設定
詳細は4.2.3. ロジックの追加

4.2.3. ロジックの追加

白背景部分を右クリックし新規作成を選択します。

ロジックのプルダウンを選択するとコマンドが表示されます。

コマンド各種

・master

内容項目名必須説明
ロジックcommandmaster別のCSVファイルからリストを取得
※使用できるCSVの仕様
 ・区切り文字:,(カンマ)
 ・クオート:ダブルクォーテーションあり・なしに対応
 ・改行コード:LF、CRLF、CR
 ・文字コード:UTF-8
 ・項目内のダブルクォーテーション:ダブルクォーテーションで囲まれた項目内のダブルクォーテーションは、2つ重ねる("")ことでエスケープされます。
  例)"テーブル(""木製"")" → テーブル("木製")
マスタ名valueName文字列リストの名称を指定
マスタファイルfilePathファイルパスCSVのファイルパス

・value

内容項目名必須説明
ロジックcommandvalue値をセットするコマンド
入力
項目名
value文字列fromを指定
しない場合〇
input CSVの項目名を指定するとその項目の値をセットする
(fromが指定されている場合は不要)
出力
項目名
id文字列値をセットする項目名
マスタ名from文字列マスタから取得する場合に使用、
masterで指定したvalueを指定(<>で囲む)
キーの列番号keyColumn数値fromを指定
する場合〇
masterで検索キーとする項目の列番号を指定
キー文字列keyName
(fromを指定しない場合)
itemName,
value
パラメータで指定されたinputCSVの項目の値をセットする
キー文字列keyName
(fromを指定する場合)
文字列fromを指定
する場合〇
検索キーとする文字列
値の列番号valueColumn数値fromを指定
する場合〇
masterでセットする項目の列番号を指定
フィルタwhere詳細は条件:where対象とする項目をフィルタリングする

・order

内容項目名必須説明
ロジックcommandorder明細に出力する基準とする項目を作成する
入力
項目名
value正規表現対象とする項目を指定
キー文字列keyNameitemName,
value
対象とする文字列を項目名か値かで指定
(現在、項目名のみ対応)
フィルタwhere詳細は条件:where対象とする項目をフィルタリングする

・fixed

内容項目名必須説明
ロジックcommandfixed固定値をセット
出力項目名id文字列セットする項目名
value文字セットする値

・join

内容項目名必須説明
ロジックcommandjoin項目の値を結合する
出力項目名id文字列セットする項目名
value正規表現結合する値を指定
キー文字列keyNameitemName,
value
regexの対象とする文字列を項目名か値かで指定
文字の一部を取得(正規表現)regex正規表現結合する値をキャプチャする
フィルタwhere詳細は条件:where結合の対象とする項目をフィルタリングする

・date

内容項目名必須説明
ロジックcommanddate日付を取得してセットするコマンド
出力項目名id文字列セットする項目名
出力フォーマットvalue(例) yyyy/MM/dd出力フォーマット、自由に指定可能
<対応しているフォーマットパターン>
 yy yyyy:西暦年
 M MM:月
 D DDD:年に対する日
 d dd:月に対する日
 w:年に対する週
 W:月に対する週
 E:曜日(英語、省略形)
 F:月に対する曜日の回数
 a:AM/PM
 h hh:時(12時間制)
 H HH:時(24時間制)
 m mm:分
 s ss:秒
 S SSS:ミリ秒

・calc

内容項目名必須説明
ロジックcommandcalc計算した結果をセットするコマンド
出力項目名id文字列セットする項目名
演算子operatoraddadd:valueにセットした値を加算する
value数値この値で計算

・replace

内容項目名必須説明
ロジックcommandreplace項目の値を変換する
出力項目名id文字列処理対象のアウトプット項目名
変換リスト名filePath文字列変換ルールを記載したtsvのファイルパス
条件ifstate詳細は条件:ifstate条件がすべてtrueの場合に処理をする
条件

・where

インプットCSVデータのうち、where条件がtrueのデータのみを対象とするフィルタリング処理
whereの処理内容は3つの配列要素で定義でき、配列要素をつなげることで複数処理を実行可能

operator説明配列要素①配列要素②配列要素③
eqequal to(==)"eq"左オペランド(数値、文字列ともに可)右オペランド(数値、文字列ともに可)
nenot equal to(!=)"ne"左オペランド(数値、文字列ともに可)右オペランド(数値、文字列ともに可)
leless than or equal to(<=)"le"左オペランド(数値のみ可)右オペランド(数値のみ可)
gegreater than or equal to(>=)"ge"左オペランド(数値のみ可)右オペランド(数値のみ可)
match正規表現にマッチしている場合はtrue"match"正規表現対象文字列

・ifstate

ジョブコマンド実行対象のヘッダ/明細項目のうち、ifstate条件がtrueの項目のみを実行対象とするフィルタリング処理
ifstateの処理内容は3つの配列要素で定義でき、配列要素をつなげることで複数処理を実行可能

operator説明配列要素①配列要素②配列要素③
eqequal to(==)"eq"左オペランド(数値、文字列ともに可)右オペランド(数値、文字列ともに可)
nenot equal to(!=)"ne"左オペランド(数値、文字列ともに可)右オペランド(数値、文字列ともに可)
leless than or equal to(<=)"le"左オペランド(数値のみ可)右オペランド(数値のみ可)
gegreater than or equal to(>=)"ge"左オペランド(数値のみ可)右オペランド(数値のみ可)
match正規表現にマッチしている場合はtrue"match"正規表現対象文字列

4.2.4. 設定画面

設定タブで出力時の設定をします。

内容項目名説明
出力形式OUTPUT_MODE・1つの明細を1行で出力
・ヘッダとすべての明細を1行で出力
明細件数DETAIL_ROW_NUMBER出力する明細の件数を指定
出力CSV文字コードOUTPUT_CHARACTER_CODE・UTF-8
・SJIS

ETL設定後はかならず左下の保存ボタンを押して、設定を保存してください。

4.3. AIReadETLの実行

実行方法(batファイルで実行)

onCloudからダウンロードしたAIRead独自形式のCSVを入力として、変換したCSVを作成します。

コマンドを使用し、実行結果を出力します。
以下のコマンドを実行してください。

・run_ETL.bat

> run_ETL.bat
"%AIREAD_CLOUD_JAVA%/java" -Dfile.encoding=UTF-8 -jar "%AIREAD_CLOUD_HOME%/lib/AIReadETL-1.5-SNAPSHOT.jar" -input <ファイル/フォルダパス> -output <フォルダパス> -setting <設定ファイルパス>
・起動コマンド
引数必須説明
-i(-input)inputとするCSVファイル/フォルダ
<前提条件>
・形式:CSV(AIRead独自形式)
・文字コード:UTF-8
-o(-output)outputのcsvを出力するフォルダ
-s(-setting)ETLプロジェクトの設定ファイルパス

4.4. サンプル

ETLのサンプルプロジェクトです。
下記よりzipファイルをダウンロードできます。
AIReadETL_sample.zip

内容物
・AIRead_conf -------- フォーマット定義フォルダ
・ETLProject -------- ETLプロジェクトサンプルフォルダ
・input -------- input画像ファイル
・outputCSV -------- 各出力CSVイメージ
・readme.txt -------- ETLプロジェクトサンプルの詳細

ダウンロード後、「AIRead_conf」と「ETLProject」の2つのフォルダーをご自身のAIReadOnCloudインストールフォルダ直下に置いてください。
※置く際は既存のフォルダをリネームし、退避して置くか、中身を既存のフォルダに移してください。

サンプル1(Invoice1)

・明細の行数分だけ行を出力、ヘッダ項目はすべて同じものを出力(設定タブ)
・請求日付は処理日時を出力(date1)

・出力CSVイメージ

"合計金額","請求日時","商品名","数量","単価"
"\1,573,456","20251216","応接テーブル","2","\59,800"
"\1,573,456","20251216","事務机","14","\14,800"
"\1,573,456","20251216","椅子","14","\36,800"
"\1,573,456","20251216","キャビネツト","10","\59,800"
"\1,573,456","20251216","電子レンジ","2","\19,800"
"\1,573,456","20251216","冷蔵庫","2","\89,000"
サンプル2(Invoice1-1line)

・ETLの処理はケース1と同様
・出力する明細の件数を指定し、ヘッダとすべての明細を1行で出力(設定タブ)

・出力CSVイメージ

"合計金額","請求日時","商品名1","数量1","単価1","商品名2","数量2","単価2","商品名3","数量3","単価3","商品名4","数量4","単価4","商品名5","数量5","単価5","商品名6","数量6","単価6","商品名7","数量7","単価7","商品名8","数量8","単価8","商品名9","数量9","単価9","商品名10","数量10","単価10"
"\1,573,456","20260225","応接テーブル","2","\59,800","事務机","14","\14,800","椅子","14","\36,800","キャビネット","10","\59,800","電子レンジ","2","\19,800","冷蔵庫","2","\89,000","","","","","","","","","","","",""
サンプル3(Invoice1-master)

・別のCSVファイルからリストを取得する(master1)
 ※AIReadOnCloudインストールフォルダがデフォルトである前提のサンプルです。それ以外の場合はファイルパスを再設定してください。
・マスタの1列目の値が「item_num」の値と一致したマスタの行2列目の値を明細に出力する(value3)

・master CSVイメージ

10845,table
22563,desk
00562,chair
41523,cabinet
20783,microwave oven
30856,refrigerator

・出力CSVイメージ

"税込合計","税抜合計","処理日時","商品名","数量"
"\1,573,456","\1,657,600","20260225","table","2"
"\1,573,456","\1,657,600","20260225","desk","14"
"\1,573,456","\1,657,600","20260225","chair","14"
"\1,573,456","\1,657,600","20260225","cabinet","10"
"\1,573,456","\1,657,600","20260225","microwave oven","2"
"\1,573,456","\1,657,600","20260225","refrigerator","2"
サンプル4(Invoice3-order)

・「帳票種別」の値を変数として設定し、出力項目に使用(変数:docFormat)
・項目名が「数量_(.+)」の()内の値を変数として設定し、入力項目、出力項目に使用(変数:label)
・「数量_*」という項目に値が入っているものだけを明細に出力する(order1)
・変換リスト「number」の変換ルールを適用して出力する(replace)
 ※AIReadインストールフォルダがデフォルトである前提のサンプルです。それ以外の場合は変換リストを再設定してください。
・固定値を出力(fixed)

・出力CSVイメージ

"御請求書No.","出力日時","請求先","担当者","承認者","商品名","数量","最大数量","単価","金額"
"No.000266","2026/02/25","株式会社東京","山田太朗","鈴木一朗","応接テーブル","3","(100)","59,800","\179,400"
"No.000266","2026/02/25","株式会社東京","山田太朗","鈴木一朗","事務机","14","(100)","14,800","\207,200"
"No.000266","2026/02/25","株式会社東京","山田太朗","鈴木一朗","椅子","14","(100)","36,800","\515,200"
"No.000266","2026/02/25","株式会社東京","山田太朗","鈴木一朗","冷蔵庫","2","(100)","89,000","\178,000"
"No.000266","2026/02/25","株式会社東京","山田太朗","鈴木一朗","モニター","28","(100)","24,800","\694,400"
"No.000266","2026/02/25","株式会社東京","山田太朗","鈴木一朗","デスクトップPC","14","(100)","119,800","\1,677,200"
"No.000266","2026/02/25","株式会社東京","山田太朗","鈴木一朗","プロジェクター","2","(100)","39,800","\79,600"
"No.000266","2026/02/25","株式会社東京","山田太朗","鈴木一朗","ホワイトボード","4","(100)","15,980","\63,920"