|
|
## 展开子表
|
|
|
|
|
|
如下图的两张表:
|
|
|
该功能用于处理一对多关系的数据。这种数据通常被设计为存储在两个关联的表中。
|
|
|
主表用于存储基本信息,关联表用于存储详情。主表与关联表为一对多关系。
|
|
|
如下图的所展示的。记录了团队(team)及其成员(member)。
|
|
|
|
|
|

|
|
|
|
... | ... | @@ -72,11 +73,33 @@ tb_members |
|
|
|
|
|
```yaml
|
|
|
catalogues:
|
|
|
- data_type:
|
|
|
- teams: ['tb_team', "tb_numbers"]
|
|
|
table_explode:
|
|
|
tb_members:
|
|
|
explode_field: "members"
|
|
|
attach_fields":
|
|
|
id: "team_id"
|
|
|
``` |
|
|
\ No newline at end of file |
|
|
- data_type: #(1)
|
|
|
- name: "teams" #(2)
|
|
|
tables: ['tb_team', "tb_members"]
|
|
|
|
|
|
table_explode: #(3)
|
|
|
- table: "tb_members" #(4)
|
|
|
explode_field: "members" #(5)
|
|
|
attach_fields: #(6)
|
|
|
- field: "team_id"
|
|
|
refer: "id"
|
|
|
overwrite: #(7)
|
|
|
foreign_keys: #(8)
|
|
|
- field: "team_id"
|
|
|
refer: "id"
|
|
|
logical_delete: True #(9)
|
|
|
deleted_field: "deleted"
|
|
|
deleted_field_value: 1,
|
|
|
|
|
|
|
|
|
|
|
|
#(1) data_type为列表类型,在一个catalog下可以定义多个data_type
|
|
|
#(2) 名为teams的data_type涉及两个表:tb_team及tb_members,
|
|
|
#(3) 定义哪些表的数据是从输入数据的特定字段展开得到的。 table_explode是列表类型。
|
|
|
#(4) 表tb_members需要根据输入数据中的字段 members,进行展开
|
|
|
#(6) 在展开的数据中,要加上字段team_id,该字段的值为输入数据中字段id的值
|
|
|
#(7) 使用覆盖方式更新
|
|
|
#(8) 以team_id字段tb_members选择要覆盖的数据,该字段的值为输入数据中字段id的值
|
|
|
#(9) 执行逻辑删除。删除标志字段为 deleted, 其值为1表示删除
|
|
|
```
|
|
|
|