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#
brand_id_yz_graph#
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 を生成したい場合などに設定する。