2016-05-26 22 views
0

Pentaho Data Integrationを使用してデータソースの統合を行っています。複数のGoogle Analyticsデータストリーム(GA_A、GA_B、GA_C、... GA_Zと呼ぶことができます)すべてのGAストリムは同じフィールドを持っていますが、異なるプロファイルから来ています。各マージステップでLEFT OUTER JOINを使用して、各GAデータストリームの値を加算しながらテーブルAのすべてのデータを保持しています。問題は、結合を行うと、各データストリームのすべてのGAフィールドが結果に追加されますが、アンダースコアで名前が変更されることです。Pentahoの値を結合後のフィールドに変換する

GA_A、GA_B、およびGA_Cはすべてフィールド「name」を持ち、テーブルAに結合されています。最後の結合結果では、フィールド「name」、「name_1」および「name_2」が取得されます。 ")。

これは明らかにLEFT OUTER JOINの性質のために発生します。しかし、 "name_1"、 "name_2"、 "name_3"などのすべての値をフィールド "name"に "送信"する "マップ"が必要です。どうすればこれを達成できますか?私はPDIに「バリューマッパー」のステップがあることを知っていますが、私がGAから持ってくる10のフィールドのそれぞれにステップを使用したくありません(また、そのステップが何をしたいのか分かりません)

ありがとう!

+0

変換の画像を投稿できますか?これにはいくつかの方法があります。 –

答えて

1

@ Brian.D.Myersは、複数の解決策があります。

最初に、すべてのGAストリームが同じ構造であれば、すべてのデータストリームに対してjoinを使用する必要はありません。まずすべてのデータを結合して(同じ手順、つまりダミーステップに導きます) join - この場合、複数のname_ *フィールドは取得されません。

ただし、テーブルAとGAストリームに同じ名前のフィールドがある場合は、明らかにアンダースコアで名前が変更されます(指摘したように必須です)。いくつかのオプションがありarは、この対処するには、次のいくつかの複雑な処理ロジックがある場合は、別の

  • にコピーした値のフィールドから - - - Set field valueステップを使用しますが、値をコピーばかりする必要がある場合は

    1. をJavascriptを使用しますステップ
    2. ストリームが比較的小さく、実際に両方のフィールドを保持する必要がある場合 - マージ結合の代わりに「ストリーム参照」ステップを使用すると、「マージされた」列の名前を指定できるため、名前の競合は発生しません。
  • +0

    私の組合問題の解決策は、すべてのGAステップを選択値ステップに送信することでした。しかし、Pentahoはまだ他のテーブルとすべての組合データを結合できません。それでも、組合の問題を解決しました。ありがとう! –

    関連する問題