Talend テストデータが生成できる tRowGenerator とちょっと便利なTalendDataGeneratorルーチン

メモ:  Category:oss

Excelなどを使用してテスト用のデータを作ったりすることがあったのですが、Talend の tRowGenerator を使うことで複数件のデータを生成することができます。Talendには、データを生成するための処理も用意されており雰囲気のあるデータを作成することができます。

ここでは、tRowGenerator コンポーネントと Systemルーチンを使って次の項目のデータを作成していきます。

  • ID
  • 州の名前
  • 登録日
  • 登録タイプ

行を生成するtRowGenerator

まず、その他に分類されている「tRowGenerator」コンポーネントを配置します。

tRowGeneratorコンポーネントの配置

配置した「tRowGenerator」コンポーネントをダブルクリックすると、ロウジェネレーターエディターが表示されるので項目名と型を設定します。項目名を追加していくとファンクションに規定値が設定されますが、ファンクションについては後で確認していきます。

tRowGeneratorの項目設定

あとは、生成したい行数を設定することで指定した項目で指定した行数のデータを生成する準備ができます。

生成される値を決定するファンクション

テストデータを作成したい場合、同じ値の行を沢山生成してもあまり意味がありません。「tRowGenerator」コンポーネントのファンクションを使うと何かしらのルールで値を生成することができるようになります。

ファンクションには、Talendに用意されたSystemルーチン、自分で作成したユーザルーチン、登録値のリストなどを登録できます。ここでは、Systemルーチンを中心に確認していきます。

ID項目には、一意の値が欲しいのでSystemルーチンの中から連番を取得する Numeric.sequence を設定します。画面下部では、連番を生成するパラメータとして識別名とスタートの値、増分が設定できます。デフォルトでは、名前がs1で1から開始して1ずつ増えます。

ファンクションの設定 Numeric.sequence

続いて、姓、名、州の名前には次のSystemルーチンを設定していきます。

  • TalendDataGenerator.getLastName:英語のラストネームを取得
  • TalendDataGenerator.getFirstName:英語のファーストネームを取得
  • TalendDataGenerator.getUsState:アメリカの州を取得
ファンクションの設定 TalendDataGenerator

登録日には、ランダムな日付を設定したいのでファンクションへSystemルーチンにあるTalendDate.getRandomDateを設定します。TalendDate.getRandomDateのパラメータには、最小値と最大値が設定できます。

登録タイプには、「会員、非会員」といった分類を設定したいのでSystemルーチンが使えません。このような場合、値リストからランダムに生成されるよう設定することができます。ファンクションで「…」を選択し、ファンクションパラメーターの値としてカンマ区切りで値リストを作成します。

ファンクションの設定 値リスト

以上で設定は完了です。

生成されるデータの確認

デザイナー上に tLogRow コンポーネントを配置し、次の図のように tRowGenerator コンポーネントからtLogRow コンポーネントへ繋ぎます。

tLogRow コンポーネントの配置

ジョブを実行するとランダムに値が設定されたデータが生成される事を確認することができます。実際に使用する場合は、CSVやデータベースへ出力すればテストデータとして使えるのではないでしょうか。

tRowGenerator のデータ生成結果

bluenote by BBB