9. AIReadETL (v5.3.0~)
ETLとは、Extract、Transform、Load の頭文字を取ったもので、複数のソースシステムからデータを「抽出」し、抽出したデータを「変換」、変換されたデータを「書き出し・格納」して活用しやすくします。
AIReadETLは、AIRead独自CSVをinputとし、要望のCSVに変換する機能です。
9.1. ETLフォルダの構成
ETLフォルダは以下の構成にする必要があります。
ETLProject/ ---------(ETLフォルダ)
└ [プロジェクトID]/
├ header.txt --------- 出力ヘッダリストファイル
├ InputHeader.txt --------- 入力ヘッダリストファイル
├ job.json --------- ジョブファイル
└ setting.ini --------- 設定ファイル
9.2. データ加工処理(ETL)を作成
FormEditorのETLタブからETLを作成・編集できます。
9.2.1. 新規プロジェクトを作成する
新規プロジェクトを選択し、任意のプロジェクト名を入力します。

9.2.2. ロジック画面
ETLの入力値、出力値、コマンドを設定します。

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

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

コマンド各種
・master

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


| 内容 | 項目名 | 値 | 必須 | 説明 |
|---|---|---|---|---|
| ロジック | command | value | 〇 | 値をセットするコマンド |
| 入力 項目名 | 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

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

| 内容 | 項目名 | 値 | 必須 | 説明 |
|---|---|---|---|---|
| ロジック | command | fixed | 〇 | 固定値をセット |
| 出力項目名 | id | 文字列 | 〇 | セットする項目名 |
| 値 | value | 文字 | 〇 | セットする値 |
・join

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

| 内容 | 項目名 | 値 | 必須 | 説明 |
|---|---|---|---|---|
| ロジック | command | date | 〇 | 日付を取得してセットするコマンド |
| 出力項目名 | 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

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

| 内容 | 項目名 | 値 | 必須 | 説明 |
|---|---|---|---|---|
| ロジック | command | replace | 〇 | 項目の値を変換する |
| 出力項目名 | id | 文字列 | 〇 | 処理対象のアウトプット項目名 |
| 変換リスト名 | filePath | 文字列 | 〇 | 変換ルールを記載したtsvのファイルパス |
| 条件 | ifstate | 詳細は条件:ifstate | 条件がすべてtrueの場合に処理をする |
条件
・where
インプットCSVデータのうち、where条件がtrueのデータのみを対象とするフィルタリング処理
whereの処理内容は3つの配列要素で定義でき、配列要素をつなげることで複数処理を実行可能
| operator | 説明 | 配列要素① | 配列要素② | 配列要素③ |
|---|---|---|---|---|
| eq | equal to(==) | "eq" | 左オペランド(数値、文字列ともに可) | 右オペランド(数値、文字列ともに可) |
| ne | not equal to(!=) | "ne" | 左オペランド(数値、文字列ともに可) | 右オペランド(数値、文字列ともに可) |
| le | less than or equal to(<=) | "le" | 左オペランド(数値のみ可) | 右オペランド(数値のみ可) |
| ge | greater than or equal to(>=) | "ge" | 左オペランド(数値のみ可) | 右オペランド(数値のみ可) |
| match | 正規表現にマッチしている場合はtrue | "match" | 正規表現 | 対象文字列 |
・ifstate
ジョブコマンド実行対象のヘッダ/明細項目のうち、ifstate条件がtrueの項目のみを実行対象とするフィルタリング処理
ifstateの処理内容は3つの配列要素で定義でき、配列要素をつなげることで複数処理を実行可能
| operator | 説明 | 配列要素① | 配列要素② | 配列要素③ |
|---|---|---|---|---|
| eq | equal to(==) | "eq" | 左オペランド(数値、文字列ともに可) | 右オペランド(数値、文字列ともに可) |
| ne | not equal to(!=) | "ne" | 左オペランド(数値、文字列ともに可) | 右オペランド(数値、文字列ともに可) |
| le | less than or equal to(<=) | "le" | 左オペランド(数値のみ可) | 右オペランド(数値のみ可) |
| ge | greater than or equal to(>=) | "ge" | 左オペランド(数値のみ可) | 右オペランド(数値のみ可) |
| match | 正規表現にマッチしている場合はtrue | "match" | 正規表現 | 対象文字列 |
9.2.3. 設定画面
設定タブで出力時の設定をします。

| 内容 | 項目名 | 説明 |
|---|---|---|
| 出力形式 | OUTPUT_MODE | ・1つの明細を1行で出力 ・ヘッダとすべての明細を1行で出力 |
| 明細件数 | DETAIL_ROW_NUMBER | 出力する明細の件数を指定 |
| 出力CSV文字コード | OUTPUT_CHARACTER_CODE | ・UTF-8 ・SJIS |
ETL設定後はかならず左下の保存ボタンを押して、設定を保存してください。
9.3. AIReadETLの実行
AIReadETLを実行する際は、まずControlPanelで以下の設定をします。
(個別で設定したい場合は個別設定画面で設定をしてください。)
・出力フォーマット:「AIReadETL」を選択
・ETLプロジェクト名:実行したいプロジェクト名を選択

設定後は必ず保存ボタンを押して、設定を保存してください。
設定後、以下のどれかの実行方法で実行します。
実行するタイミングや、作業の目的に合わせていずれかの方法を選択してください
9.3.1. 実行方法(arexファイルを利用する場合)
AIReadを実行して読取から変換までを行い、アウトプットが変換後のCSVになります。
実行方法は以下をご参照ください。
9.3.2. 実行方法(batファイルを利用する場合)
AIReadまたはViewerで出力したAIRead独自形式のCSVを入力として、変換したCSVを作成します。
コマンドを使用し、実行結果を出力します。
以下のコマンドを実行してください。
・run_ETL.bat
| > run_ETL.bat |
| "%AIREAD_JAVA%/java" -Dfile.encoding=UTF-8 -jar "%AIREAD_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プロジェクトの設定ファイルパス |
9.4. ユースケース
ケース1
・明細の行数分だけ行を出力、ヘッダ項目はすべて同じものを出力
・請求日付は処理日時を出力





・出力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" |