Case1. 複数の canonical_id を独立に生成する

Case1. 複数の canonical_id を独立に生成する#

canonical_ids: において、canonical_id を複数設定することで、同時にかつ独立に canonical_id を生成することができる。ただし、この中で Master Segment に設定できる canonical_id は1つであり、基本的には全ての key を merge_by_keys: に設定したものになる。

name: test_id_unification_ex3

keys:
  - name: td_client_id
    invalid_texts: ['']

  - name: td_global_id
    valid_regexp: "3rd_*"
    invalid_texts: ['']

tables:
  - database: test_id_unification_ex3
    table: site_aaa
    key_columns:
      - {column: td_client_id, key: td_client_id}
      - {column: td_global_id, key: td_global_id}

  - database: test_id_unification_ex3
    table: site_xxx
    key_columns:
      - {column: td_client_id, key: td_client_id}
      - {column: td_global_id, key: td_global_id}

  - database: test_id_unification_ex3
    table: site_yyy
    key_columns:
      - {column: td_client_id, key: td_client_id}
      - {column: td_global_id, key: td_global_id}

  - database: test_id_unification_ex3
    table: site_zzz
    key_columns:
      - {column: td_client_id, key: td_client_id}
      - {column: td_global_id, key: td_global_id}

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: [td_client_id, td_global_id]
    merge_iterations: 5

master_tables:
  - name: master_table_ex3
    canonical_id: unified_brand_id

    attributes:    
      - 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_ax は、同じブランドである2サイトのみから Unification を行い、このブランドに対する canonical_id を割り振る目的で作成した。brand_id_yz も同様である。 ただし、全ブランドで横断した unified_brand_id を master_table 用に作成して設定している。

上記の設定では、

  • brand_id_ax

  • brand_id_yz

  • unified_brand_id

の3つそれぞれで Unification Algorithm が並列で実行されることになる。 以下にそれぞれの Unification Algorithm の最終 graph を示している。

brand_id_ax_graph#

_images/brand_id_ax_graph.png

Fig. 42 brand_id_ax_graph#

brand_id_yz_graph#

_images/brand_id_yz_graph.png

Fig. 43 brand_id_yz_graph#

unified_brand_id_graph#

_images/unified_brand_id_graph.png

Fig. 44 unified_brand_id_graph#

source_tables: の設定について#

今回の例では canonical_ids: の設定において、以下のように source_tables: を指定している。

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: [td_client_id, td_global_id]
    merge_iterations: 5

この設定では、source_tables: に指定された一部の Table 群のみの key を用いて Unification Algorithm を実行することになる。 全データソースからの canonical_id の他に、ブランドごとやゲームごとに canonical_id を生成したい場合などに設定する。