Case4. canonical_id を master_table の attribute として設定する

Contents

Case4. canonical_id を master_table の attribute として設定する#

(Case3. の続き) canonical_id は Master Segment の attribute として設定することができる。

canonical_ids:
  - name: brand_id_ax
    merge_by_keys: [td_client_id, td_global_id]    
    source_tables: ['site_aaa','site_xxx']
    merge_iterations: 5

  - name: brand_id_yz
    merge_by_keys: [td_client_id, td_global_id]
    source_tables: ['site_yyy','site_zzz']
    merge_iterations: 5

  - name: unified_brand_id
    merge_by_keys: []
    merge_by_canonical_ids: [brand_id_ax, brand_id_yz]
    merge_iterations: 5

master_tables:
  - name: master_table_ex3
    canonical_id: unified_brand_id

    attributes:    
      - name: brand_id_ax
        source_canonical_id: brand_id_ax

      - name: brand_id_yz
        source_canonical_id: brand_id_yz

      - name: td_client_id
        invalid_texts: ['']
        source_columns:
          - {table: 'site_aaa', order: first, order_by: td_client_id, priority: 1}
          - {table: 'site_xxx', order: first, order_by: td_client_id, priority: 1}
          - {table: 'site_yyy', order: first, order_by: td_client_id, priority: 1}
          - {table: 'site_zzz', order: first, order_by: td_client_id, priority: 1}                    
      - name: td_global_id
        valid_regexp: "3rd_*"
        invalid_texts: ['']
        source_columns:
          - {table: 'site_aaa', order: last, order_by: time, priority: 1}
          - {table: 'site_xxx', order: last, order_by: time, priority: 1}
          - {table: 'site_yyy', order: last, order_by: time, priority: 1}
          - {table: 'site_zzz', order: last, order_by: time, priority: 1}                    

この設定では、brand_id_axbrand_id_yz の canonical_id が attribute: 内で設定されている。このように、その他の canonical_id を attribute として設定することができるが、設定する際には必ず master_table の canonical_id (今回だと unified_brand_id ) と merge_by_canonical_ids: によって関係付けられている必要がある。

また、繰り返しになるが、brand_id_axbrand_id_yz は master_table の canonical_id には設定できない。なぜなら、カバーしているソーステーブルが全テーブルをカバーしていないために、生成した canonical_id を全てのテーブルにエンリッチすることができないからである。

master_table#

出力される master_table は、canonical_id: で指定した unified_cookie_id の数だけレコードが生成される。attibute に設定した canonical_id の影響を受けないことを理解しておこう。

brand_id_ax, brand_id_yz は Case 1. で見た通り、複数の canonical_id を持っていた。にも関わらず、それらが attribute として引用される場合には、time カラムの意味で最も最近登場した key に基づく canonical_id のみが入ることになるのだ。

unified_brand_id

td_client_id

td_global_id

brand_id_ax

brand_id_yz

wONJPFlQsJyj

aaa_001

3rd_018

XuCLIRp30bxG

RXcPcKu6CO1G