3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Talend小技(3)データに複数の順位を追加する

Posted at

Talend 標準ルーチンの活用

Talendには多くのシステムルーチンが標準で用意されています。
以下はクラスとその内容です。
DataOperation(各種数値を文字に変換)
Mathmatical(算術演算とビット演算)
Numeric(シーケンス値、ランダム値の生成、文字列からBigDecimalの生成)
Relational(NULL値判定)
StringHandling(英字判定、大文字化、小文字化、長さ取得など文字列変換処理)
TalendDataGenerator(ダミーデータの生成【アメリカ合衆国での姓、名、ストリート名、州名など】)
TalendDate(日付、時間の計算、置換、判定処理)
TalendString(文字列エスケープ、ランダム文字列生成、トリムなどの特殊文字列処理)

今回はNumericクラスのsequenceを使用して複数の順位をデータに追加します。

入力ファイル

入力ファイルには、店舗名(Store)、商品1売り上げ数(Product1)と商品2売り上げ数(Product2)が記録されています。
Routine_Input1.jpg

商品1売り上げ数でソートする

まず入力データの読み取り用にtFileInpuDelimitedを配置し、tSort_1を追加して商品1売り上げ数(Product1)で降順でソートします。
Routine_Sequence_1.jpg

tSortRow_1の設定
スキーマカラムにProduct1を追加し、ソート種別をnum(数値)で設定し、順序をdesc(降順)で設定します。
Routine_Sequence_2.jpg

商品1売り上げ数の順位を付加する

tMap_1を追加して商品1売り上げ数の順位を追加します。
Routine_Sequence_3.jpg

tMap_1の設定
Var変数にNumeric.sequence( "S1", 1, 1 )を設定します。
sequenceの引数は、"S1"というキーに対し、初期値を1、増加数を1という設定になります。
out1にはVar.Sequence1を格納するためにProduct1_Sequenceを追加します。
Routine_Sequence_4.jpg

商品2売り上げ数でソートする

tSort_2を追加して商品2売り上げ数(Product2)で降順でソートします。
Routine_Sequence_5.jpg

tSortRow_2の設定
スキーマカラムにProduct2を追加し、ソート種別をnum(数値)で設定し、順序をdesc(降順)で設定します。
Routine_Sequence_6.jpg

商品2売り上げ数の順位を付加する

tMap_2を追加して商品2売り上げ数の順位を追加します。
Routine_Sequence_7.jpg

tMap_2の設定
Var変数にNumeric.sequence( "S2", 1, 1 )を設定します。
sequenceの引数は、"S2"というキーに対し、初期値を1、増加数を1という設定になります。
ここでtMap_1で前回に使用した"S1"というキーに設定すると前回の順位が引き継がれてしまいます。
out2にはVar.Sequence2を格納するためにProduct2_Sequenceを追加します。
Routine_Sequence_8.jpg

店舗名でソートする

現在のデータは商品2売り上げ数で降順になってますので、tSort_3を追加して店舗名(Store)で昇順でソートします。
Routine_Sequence_9.jpg

tSortRow_3の設定
スキーマカラムにStoreを追加し、ソート種別をalpha(文字)で設定し、順序をasc(昇順)で設定します。
Routine_Sequence_10.jpg

ファイルへの出力

最後にtFileOutputDelimited_1を追加してファイルに出力します。
Routine_Sequence_11.jpg

出力結果

商品1売り上げ数と商品2売り上げ数の売上順位(Product1_Sequence、Product2_Sequence)がデータに追加できました。
Routine_Sequence_12.jpg

まとめ

今回はTalendのシステムルーチンの活用例を紹介させていただきました。
今回は詳細について触れておりませんが、日付や時間の処理を行う際にはTalendDateクラスのルーチンは非常に有効利用できます。
次回はユーザールーチンの活用について紹介したいと思います。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?