Talend Open Studio (ETLツール) でデータ統合(3) [BI]
○あんなことこんなことできたらいいなとそのTips
・データのコラムを減らしたりする
スキーマで行います。ここで*OutputBulkExecというコンポーネントは入出力をいっぺんにできるのですが、それを使ってしまうとコラム調整ができないので、入力コンポーネントと出力コンポーネントの間のスキーマで定義するか、tMapで抜くかのどちらかにしたら良いと思います。
・コラムの演算をしたいとき
例えば売上が税込になっているのを、税抜に変更したい時とかは、tMapをはさみます。マップエディタからコラムを開いてFIX(row1.xxx +0.49 / 1.05)のように行ないたい演算や関数を使って記述していきます。
# ちなみに四捨五入(FIX())はありますが、切り上げ・切り下げは無いので上記のようにすることで
# 切り上げを実現することになります。切り下げの場合は-0.5してください。
・項目数を数えたい時
OLAPの際にMDXで記述することも可能らしいんですが、OLAP時の処理に時間がかかってしまうので予め処理しておくとよいです。そんな時はtAggreagteRowを使います。このコンポーネントはSUMやAVE、COUNTといった集計以外にも、集計したあとCount(Distinct-Count)などの関数も用意されています。
・0で始まる文字列の扱い
演算をする必要がない場合は最後のスキーマの直前まで文字列のままで、最後に変換をかけると良いです(コードのように00001のような文字列がある場合、下手にやると途中で1になってしまう)
・複数ファイルの連続処理
tFileListをtFileInputDelimitedの前に配置し、コネクタをIterationにします。そして、tFileInputDelimitedで入力ファイル名のところでCtrl-Spaceを押して、tFileListのCURRENT_FILEPATH的な項目を選択します。当然ですがテーブルをDrop AND Createにすると最後に読み込んだファイルしか残らないので注意しましょう…(←これで1時間ハマってた人)。globは"*.txt"のように指定します。
とりあえず自分がしたい範囲のことに関しては大体できることが確認できました。今のところMDXの記述よりETLのほうが簡単そうなのでETLで出来る限りやり切ることを考えています。
もう少し日本語情報・コミュニティが増えていくといいですね。
・データのコラムを減らしたりする
スキーマで行います。ここで*OutputBulkExecというコンポーネントは入出力をいっぺんにできるのですが、それを使ってしまうとコラム調整ができないので、入力コンポーネントと出力コンポーネントの間のスキーマで定義するか、tMapで抜くかのどちらかにしたら良いと思います。
・コラムの演算をしたいとき
例えば売上が税込になっているのを、税抜に変更したい時とかは、tMapをはさみます。マップエディタからコラムを開いてFIX(row1.xxx +0.49 / 1.05)のように行ないたい演算や関数を使って記述していきます。
# ちなみに四捨五入(FIX())はありますが、切り上げ・切り下げは無いので上記のようにすることで
# 切り上げを実現することになります。切り下げの場合は-0.5してください。
・項目数を数えたい時
OLAPの際にMDXで記述することも可能らしいんですが、OLAP時の処理に時間がかかってしまうので予め処理しておくとよいです。そんな時はtAggreagteRowを使います。このコンポーネントはSUMやAVE、COUNTといった集計以外にも、集計したあとCount(Distinct-Count)などの関数も用意されています。
・0で始まる文字列の扱い
演算をする必要がない場合は最後のスキーマの直前まで文字列のままで、最後に変換をかけると良いです(コードのように00001のような文字列がある場合、下手にやると途中で1になってしまう)
・複数ファイルの連続処理
tFileListをtFileInputDelimitedの前に配置し、コネクタをIterationにします。そして、tFileInputDelimitedで入力ファイル名のところでCtrl-Spaceを押して、tFileListのCURRENT_FILEPATH的な項目を選択します。当然ですがテーブルをDrop AND Createにすると最後に読み込んだファイルしか残らないので注意しましょう…(←これで1時間ハマってた人)。globは"*.txt"のように指定します。
とりあえず自分がしたい範囲のことに関しては大体できることが確認できました。今のところMDXの記述よりETLのほうが簡単そうなのでETLで出来る限りやり切ることを考えています。
もう少し日本語情報・コミュニティが増えていくといいですね。
コメント 0