【Talend】テストデータ作成


概要

Talendで、テストデータを作成するジョブを作ります。
レコードを作成するコンポーネントとして用意されている
tRowGenerator を使用し、SQLiteのテーブルにテストデータを登録します。

環境準備

SQLiteのインストール

SQLiteのページからWindows用のバイナリをダウンロードしてください。
SQLite Download Page
sqlite-tools-win32-x86-3270200.zip
※サンプルテーブルの作成を行いたいので、コマンドライン付きをダウンロードします。

任意のフォルダ C:\talend\sqlite に展開します。

テーブル作成

データベース(sample.db)とテストデータ作成用のテーブル(TESTDATA)を作成します。

> cd C:\talend\sqlite
> sqlite3 sample.db
> sqlite> CREATE TABLE TESTDATA(
   ...>  ID        INT
   ...> ,ACCOUNT   TEXT
   ...> ,BDATA     TEXT
   ...> ,STATUS    INT
   ...> ,RES       TEXT);

※SQLiteは、カラムの桁数を持たないことに気付いたのですが、
 今回はこのままいくことにします。

tRowGenerator でのテストデータ作成

Talendジョブ作成

DB接続のメタデータ

テストデータテーブルのカラム情報については、
1カラムずつ登録することもできますが、
メタデータから一度に登録する方法で手間を省きます。

TalendOpendStudioを起動し、上記作成したSQLiteのテーブルに接続します。


メタデータ -> DB接続定義 -> 接続定義


名前に任意の接続名(sqlite3)を設定します。


データベース接続情報を設定して、テスト接続ボタンを押下します。
DBタイプ:SQLite
ファイル:C:/talend/sqlite/sample.db


接続成功することを確認して、Finishボタンを押下します。
任意の接続名(sqlite3)が作成されました。


任意の接続名(sqlite3)を選択、右クリックして、スキーマの取得を行います。


メタデータに追加されました。

コンポーネントからメタデータの使用

ジョブを作成し、「tSQLiteconnection」コンポーネントを追加します。

プロパティタイプに、リポジトリを選択し作成したメタデータからSQLiteを選択します。

tRowGeneratorの設定

「tRowGenerator」コンポーネントを追加し、スキーマにメタデータから
TESTDATAスキーマを選択します。

RowGeneratorエディターの設定

各カラムに指定したい値を設定します。

作成する行数は、「生成する行数」で指定します。

カラム        タイプ       関数 環境変数 備考
ID int Numeric.sequence
(String int,int)
「sequence identifier=s1」
「start value=1」
「step=1」
連番を設定
ACCOUNT String カスタマイズ
パラメータ
"ACOUNT" + String.format(
"%06d", Numeric.sequence("s2",1,1))
先頭に「ACCOUNT」という文字列と
6桁連番をゼロ埋め
BDATE String カスタマイズ
パラメータ
TalendDate.formatDate("yyyy-MM-dd",
TalendDate.getRandomDate("2017-01-01","2018-12-31") )
指定期間のランダムな日付を設定
STATUS int Numeric.sequence
(String int,int)
「min value=>0」
「max=>2」
最小値と最大値を設定
RES String TalendString.
getAsciiRandomString(int)
「length=>6」 ランダムな文字列を設定

結果は、プレビューや、tLogRowコンポーネントで確認できます。
※デフォルトで選択できる関数は、スキーマのタイプによって制限があります。
 一覧の一番上にある「・・・」を選択するとカスタマイズパラメータとして
 式ビルダで、自由に関数を設定することができます。

使用できる関数は、ルーチン一覧 を参考にしてください

SQLiteへの登録

「tRowGenerator」コンポーネントで作ったレコードを
「tSQLiteOutput」と「tSQLiteCommit」コンポーネントを使ってTESTDATAテーブルに登録します。

まとめ

下記のレコードが、登録されました。

sqlite>  select * from TESTDATA;
1|ACOUNT000001|2018-06-09|1|0kCEtY
2|ACOUNT000002|2017-02-28|2|yAFV18
3|ACOUNT000003|2017-10-20|0|RAlhVv
4|ACOUNT000004|2017-07-21|2|f1YKEZ
5|ACOUNT000005|2017-08-27|2|yt84HR
6|ACOUNT000006|2017-01-06|0|GrLCFa
7|ACOUNT000007|2017-05-07|1|OVs3ZO
8|ACOUNT000008|2018-11-11|0|o815fV
9|ACOUNT000009|2017-08-05|1|flR0ne
10|ACOUNT000010|2018-09-30|2|yKJuvb
sqlite>

関数になれると、テストデータ作りが、かなり簡単になりそうですね。

参照記事

SQLiteコマンドラインツールのダウンロードとインストール
手間がかかるテストデータもTOSを使えばノープログラミングで作成できる
サンプルデータを持ったテーブルを簡単に作成する
ルーチン一覧