Case2. canonical_id ごとに master_table を作成する#

(Case1. の続き) 今度は、それぞれの canonical_id ごとに master_table を作成する方法を紹介しよう。 以下の様に master_table を複数列挙することができる。

master_tables:
  - name: master_table_ex3
    canonical_id: unified_brand_id

    attributes:
      - name: td_client_id
        invalid_texts: ['']
        source_columns:
          - {table: '${td.tbl_aaa}', order: first, order_by: td_client_id, priority: 1}
          - {table: '${td.tbl_xxx}', order: first, order_by: td_client_id, priority: 1}
          - {table: '${td.tbl_yyy}', order: first, order_by: td_client_id, priority: 1}
          - {table: '${td.tbl_zzz}', order: first, order_by: td_client_id, priority: 1}                    
      - name: td_global_id
        valid_regexp: "3rd_*"
        invalid_texts: ['']
        source_columns:
          - {table: '${td.tbl_aaa}', order: last, order_by: time, priority: 1}
          - {table: '${td.tbl_xxx}', order: last, order_by: time, priority: 1}
          - {table: '${td.tbl_yyy}', order: last, order_by: time, priority: 1}
          - {table: '${td.tbl_zzz}', order: last, order_by: time, priority: 1}                    

  - name: master_table_brand_id_ax
    canonical_id: brand_id_ax

    attributes:    
      - name: td_client_id
        invalid_texts: ['']
        source_columns:
          - {table: '${td.tbl_aaa}', order: first, order_by: td_client_id, priority: 1}
          - {table: '${td.tbl_xxx}', order: first, order_by: td_client_id, priority: 1}
      - name: td_global_id
        valid_regexp: "3rd_*"
        invalid_texts: ['']
        source_columns:
          - {table: '${td.tbl_aaa}', order: last, order_by: time, priority: 1}
          - {table: '${td.tbl_xxx}', order: last, order_by: time, priority: 1}

  - name: master_table_brand_id_yz
    canonical_id: brand_id_yz

    attributes:    
      - name: td_client_id
        invalid_texts: ['']
        source_columns:
          - {table: '${td.tbl_yyy}', order: first, order_by: td_client_id, priority: 1}
          - {table: '${td.tbl_zzz}', order: first, order_by: td_client_id, priority: 1}
      - name: td_global_id
        valid_regexp: "3rd_*"
        invalid_texts: ['']
        source_columns:
          - {table: '${td.tbl_yyy}', order: last, order_by: time, priority: 1}
          - {table: '${td.tbl_zzz}', order: last, order_by: time, priority: 1}

master_table#

この時、各々生成される master_table は以下のようになる。

master_table_ex3#

unified_brand_id

td_client_id

td_global_id

jiioKQC2uMFH

aaa_001

3rd_018

master_table_brand_id_ax#

brand_id_ax

td_client_id

td_global_id

jiioKQC2uMFH

aaa_001

3rd_005

0_LjXD4ScR1H

aaa_002

3rd_010

A0T5jlq77XJH

aaa_003

3rd_017

master_table_brand_id_yz#

brand_id_yz

td_client_id

td_global_id

NCnsgr0MusJH

yyy_001

3rd_001

UA9xZODmd_pH

yyy_002

3rd_008

lb8seLF7YZBH

yyy_003

3rd_012

jaUfFmYfVjJH

yyy_004

3rd_018

nBTjvWWxqydH

zzz_001

3rd_002

enriched_ Table#

master_table が複数作成された場合でも、enriched_ Table はソーステーブルごとに常に1つとなる。ただ Case1 と異なる事は、全ての canonical_id がソーステーブルにエンリッチされるため、どの master_table を使用しても紐付けが可能になっている。 ただし、source_tables: が指定されている brand_id_ax と brand_id_yz は、そこに指定されたテーブルに対してのみエンリッチされることになる。以下が、エンリッチされたテーブルである。

enriched_site_aaa#

site

td_client_id

td_global_id

brand_id_ax

unified_brand_id

aaa.jp

aaa_001

3rd_001

jiioKQC2uMFH

jiioKQC2uMFH

aaa.jp

aaa_001

3rd_002

jiioKQC2uMFH

jiioKQC2uMFH

aaa.jp

aaa_001

3rd_003

jiioKQC2uMFH

jiioKQC2uMFH

aaa.jp

aaa_001

3rd_004

jiioKQC2uMFH

jiioKQC2uMFH

brand_id_ax と unified_brand_id で同じ値となっているが、どちらもたまたま aaa_001 が最終 leader となり、それをベースに canonical_id が生成されているためである。双方の canonical_id が関係を持っているわけではない。

enriched_site_xxx#

site

td_client_id

td_global_id

brand_id_ax

unified_brand_id

time

xxx.jp

1672876800

xxx.jp

1673740800

xxx.jp

1674604800

xxx.jp

xxx_001

3rd_004

jiioKQC2uMFH

jiioKQC2uMFH

1675555200

xxx.jp

xxx_001

3rd_005

jiioKQC2uMFH

jiioKQC2uMFH

1676419200

enriched_site_yyy#

site

td_client_id

td_global_id

brand_id_yz

unified_brand_id

time

yyy.jp

yyy_001

3rd_001

NCnsgr0MusJH

jiioKQC2uMFH

1672876800

yyy.jp

1673740800

yyy.jp

1674604800

yyy.jp

1675555200

yyy.jp

yyy_002

3rd_005

UA9xZODmd_pH

jiioKQC2uMFH

1676419200

enriched_site_zzz#

site

td_client_id

td_global_id

brand_id_yz

unified_brand_id

time

zzz.jp

1672876800

zzz.jp

zzz_001

3rd_002

nBTjvWWxqydH

jiioKQC2uMFH

1673740800

zzz.jp

1674604800

zzz.jp

1675555200

zzz.jp

1676419200