【Talend】sequenceで連番を振る方法。GN125、グラディウス400のメンテナンス/カスタムブログです。バイクGNブログRSSまとめカメラ/写真/絶景IT系GN125作成したスマホアプリ/Webアプリたち【Talend】sequenceで連番を振る方法。Studio【Talend】sequenceで連番を振る方法。まとめはじめに今回は、Talend内で連番を振る方法についての記事です。番号をジョブ内で発番する、というのは割とよくあるシチュエーションかと思います。Javaでグローバルなカウンタでも用意して自身で連番を取っても良いんですが、Talendにはそれ用の便利な関数がありますので、今回はそれを使って連番を振ってみましょう。連番を取得するだけではなく、グループごとに番号を振るケースもしばしばあると思いますので、そちらも併せて載せています。連番を発番する関数(Numeric.sequence)Talendの標準関数で連番を返してくれる便利な関数があります。それがsequence関数です。下記のように使います。1)[/java]第一引数は、連番を振るグループを識別するための文字列を与えます(ここは後述します)。第三引数は、増やす幅を与えます。グループ関係なしに単純に採番するまずは、1から1ずつ増える、簡単な採番を行ってみます。今回は、下記のようなジョブを作ってみました。とあるトランザクションデータを入力とし、シーケンスを発番して付与するシンプルなジョブです。tFileInputDelimitedのカラム定義は下記の通りです。不要とは思いますが、今回使用したサンプルデータは下記です。[text]ID,HIN_CD,SUURYO,TANI,TANKA,KAKAKU_TANI,KINGAKU9876000001,000000000000000003,1,ST,290,1,2909876000001,000000000000000013,1,ST,5600,1,56009876000001,000000000000000004,1,ST,750,1,7509876000001,000000000000000003,1,ST,290,1,2909876000002,000000000000000003,5,ST,398,1,19909876000002,000000000000000100,20,KG,0,1,09876000003,000000000000000003,1,KAN,398,1,3989876000004,000000000000000016,1,ST,480,1,4809876000004,000000000000000015,3,ST,360,1,10809876000004,000000000000000016,1,ST,480,1,4809876000005,000000000000000011,1,ST,600,1,6009876000005,000000000000000003,1,ST,290,1,2909876000006,000000000000000100,30,KG,200,1,60009876000006,000000000000000003,5,ST,398,1,19909876000006,000001110010000000,1,ST,1269,1,12699876000006,000001120610000000,2,ST,2893,1,57869876000006,000001110010000000,2,ST,1200,1,24009876000007,000001221580000000,1,ST,3704,1,37049876000007,000001130030000000,2,ST,2101,1,42029876000007,000002222440000000,3,ST,2589,1,77679876000008,000002222170000000,1,ST,5491,1,54919876000008,000001221580000000,1,ST,3704,1,37049876000008,000001212580000000,1,ST,3360,1,33609876000008,000001221580000000,2,ST,3704,1,74089876000009,000001110010000000,3,ST,1200,1,36009876000009,000001120610000000,1,ST,2893,1,28939876000009,000001110010000000,3,ST,1269,1,38079876000009,000001212580000000,2,ST,3360,1,67209876000009,000001130030000000,1,ST,2101,1,21019876000009,000001110010000000,2,ST,1200,1,24009876000010,000001221580000000,1,ST,3704,1,37049876000010,000000000000000010,1,ST,300,1,3009876000010,000001221580000000,1,ST,3704,1,37049876000010,000001130030000000,3,ST,2101,1,63039876000011,000001212580000000,4,ST,3360,1,134409876000011,000001120610000000,2,ST,2893,1,57869876000012,000002222170000000,1,ST,5491,1,54919876000012,000002222170000000,1,ST,5491,1,54919876000013,000002222170000000,2,ST,5491,1,109829876000013,000001110010000000,1,ST,1269,1,1269[/text]件の連番を取っている箇所はtMap内にあります。VarでNumeric.sequenceを使用し、1から1ずつ増える番号を取得しています。ここで、sequence関数の第一引数に、固定で”s1′′を与えているので、シーケンスを振るグループがずっと変わらないため、1から始まる連番が途切れることなく発番されます。式ビルダを開くと、左下のCategoriesでNumericを選択すると、Functionsでsequenceが現れますので、ダブルクリックで自動挿入されます。この状態でジョブ実行すると、下記の通り1から1ずつ増える連番を得ることができます。とあるグループ内で連番を振るCSVデータを、ヘッダ-明細という構造に変換する場合で、同一ヘッダ内で連番を振りたいケースなどですね。今回は、先ほどのサンプルデータにあるIDが同じレコード内で連番を振る様にしてみます。先ほどと同じくNumeric.sequenceを使用しますが、第一引数を変更します。引数が、シーケンス番号を振るグループで同一の値となるようにセットしてあげれば良いです。先ほどのtMapのVar->meisai_noを修正します。先ほどは、第一引数に”s1′′を与えていました。固定値ですので、ずっとシーケンスグループが変わらず1から連番が振られていました。IDが同一である場合は0から始まり1ずつカウントアップされた値が発番されますが、IDが異なる場合は、また別に0から1ずつカウントアップされるようになります。sequenceの内部でハッシュを持っているようで、第一引数はそこのキーを示している感じですね。この状態で実行すると、下記のような結果を得られます。同一のID(一番左の項目)が続く部分では、その右隣の明細番号の項目が増えていますが、IDが変われば明細番号がまた0から発番されています。今回は、プレフィックスとして”SEQ_”を与えていますが、「今回の場合は」不要です。row1.IDだけ与えれば想定通りの挙動を得られます。row1.IDだけを与えた場合、このIDと同一のシーケンスが既に別で振られていた場合、そちらと干渉してしまいます。シーケンスを複数使用する場合などでは、それぞれで異なるシーケンスグループを使用するように、”SEQ_”などの固有プレフィックスを付与するのが望ましいと思います。2016.09.29今回は、Javascriptでスマホアプリを開発する方法についてまとめました。2016.10.14今回は、Talend内で行(row)データをx倍にする方法についてまとめました。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。【Javascript】爆速でChrome拡張プラグイン開発を試す。作り方は意外とかんたんでした。【Talend】条件分岐(if)する4つの方法をまとめました【Talend】グローバル変数の使い方(globalMapとcontext)【JSF入門02】ボタン押下時のイベントを扱う。actionとactionListenerについて【コマンド/bat】ファイル検索の結果ファイルをコピーする2つの方法(Windows)ETL開発ツールは比較するまでもなくTalend一択だと思う。入門01】開発環境の構築。入門02】CSVデータを変換する。Talendの使い方からはじめます。【エストレヤ】なんと妹がバイク乗りになるらしい。いうわけでバイクを購入しました。Songバイクでツーリングいこっ!心に残る絶景を写真にGN倶楽部IT系カテゴリの最新記事2019.03.06Wordpress,【WordPress】突然固定ページが404エラーで表示されなくなった!?ので私の対処法を書きます。WebSlides,【WebSlides】HTML+CSS+Javascriptでプレゼン資料を作成したら割とウケた話。React,【React】Reactに爆速で入門する4。React,【React】Reactに爆速で入門する3。React,【React】Reactに爆速で入門する2。WordPress.。