| 发表人 |
内容 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 2008-06-25 10:31:22
|
zdcku 嘉颖
高级会员
![[Avatar]](/images/avatar/e2ef524fbf3d9fe611d5a8e90fefdc9c.jpg)
注册时间: 2008-05-06 22:32:12
文章: 152
来自: 江苏南京
离线
|
需求是这样的
明细记录需要分开存放在主表和明细表中
源的部分数据经过AGG到主表 部分数据直接到明细表
主表会通过序列产生一个ID 然后明细表的P-ID需要得到这个主表的ID值
不知道有什么好的方法
目前有2个笨方法:
1 主表和明细表都有个原始单NO 数据LOAD玩可以执行一句UPDATE语句 通过原始单NO 吧主表的ID更新到明细表中
但此方法有比较明显的缺点:主从表都得存放原始单NO UPDATE效率很慢(上10W条就很慢了)(IQ数据库由于列存储倒是超快)
2 数据组织好 AGG后使用self-join得到主表的ID 然后直接给明细表
此方法因为需要一个JOIN 感觉如果数据量大的话 会影响性能
不知道有没有表述清楚
问问大家有没有什么好的方法
这篇文章被编辑了 1 次. 最近一次更新是在 2008-06-25 10:31:51
|
学习 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 2008-06-26 02:04:03
|
killandylove
论坛CTO
![[Avatar]](/images/avatar/e4da3b7fbbce2345d7772b0674a318d5.jpg)
注册时间: 2008-04-23 08:51:09
文章: 58
来自: 不透露
离线
|
zdcku wrote:需求是这样的
明细记录需要分开存放在主表和明细表中
源的部分数据经过AGG到主表 部分数据直接到明细表
主表会通过序列产生一个ID 然后明细表的P-ID需要得到这个主表的ID值
不知道有什么好的方法
目前有2个笨方法:
1 主表和明细表都有个原始单NO 数据LOAD玩可以执行一句UPDATE语句 通过原始单NO 吧主表的ID更新到明细表中
但此方法有比较明显的缺点:主从表都得存放原始单NO UPDATE效率很慢(上10W条就很慢了)(IQ数据库由于列存储倒是超快)
2 数据组织好 AGG后使用self-join得到主表的ID 然后直接给明细表
此方法因为需要一个JOIN 感觉如果数据量大的话 会影响性能
不知道有没有表述清楚
问问大家有没有什么好的方法 
不太明白你为什么需要把主表的ID更新到明细里面去,因为根据你的需求,主表和明细根本是两个层面的数据,你明细表需要得到主表产生的序列ID的目的在于什么
|
本人中科院高级潜水院院士,诺贝尔长期掉线奖,奥斯卡终身隐身奖!!! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 2008-06-26 07:37:55
|
zdcku 嘉颖
高级会员
![[Avatar]](/images/avatar/e2ef524fbf3d9fe611d5a8e90fefdc9c.jpg)
注册时间: 2008-05-06 22:32:12
文章: 152
来自: 江苏南京
离线
|
应该说主从表 比较贴切吧
比如销售主表 有 ID,CUST,TOTAL_AMT
销售从表有 R_ID,PRODUCT,PRICE,NUM,PKEY_ID
从表肯定得有个外键关联主表的ID
|
学习 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 2008-06-26 07:48:40
|
zdcku 嘉颖
高级会员
![[Avatar]](/images/avatar/e2ef524fbf3d9fe611d5a8e90fefdc9c.jpg)
注册时间: 2008-05-06 22:32:12
文章: 152
来自: 江苏南京
离线
|
这样说吧 源的数据假设是这样的
row_id,cust,total_amt,product,price,num
1,张三,1020,烟,32,10
2,张三,1020,酒,20,20
3,张三,1020,零食,30,10
4,李四,920,烟,21,20
5,李四,920,酒,25,20
目标期望是
主表:
ID,CUST,TOTAL_AMT
1,张三,1020
2,李四,920
从表:
R_ID,PRODUCT,PRICE,NUM,PKEY_ID
1,烟,32,10,1
2,酒,20,20,1
3,零食,30,10,1
4,920,烟,21,20,2
5,920,酒,25,20,2
这样明白吗?
就是这样类似 total_amt就直接给出了 不用计算了
在同个MAPPING中怎么获得主表的ROW_ID
这篇文章被编辑了 2 次. 最近一次更新是在 2008-06-26 07:54:37
|
学习 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 2008-06-27 01:16:46
|
killandylove
论坛CTO
![[Avatar]](/images/avatar/e4da3b7fbbce2345d7772b0674a318d5.jpg)
注册时间: 2008-04-23 08:51:09
文章: 58
来自: 不透露
离线
|
zdcku wrote:这样说吧 源的数据假设是这样的
row_id,cust,total_amt,product,price,num
1,张三,1020,烟,32,10
2,张三,1020,酒,20,20
3,张三,1020,零食,30,10
4,李四,920,烟,21,20
5,李四,920,酒,25,20
目标期望是
主表:
ID,CUST,TOTAL_AMT
1,张三,1020
2,李四,920
从表:
R_ID,PRODUCT,PRICE,NUM,PKEY_ID
1,烟,32,10,1
2,酒,20,20,1
3,零食,30,10,1
4,920,烟,21,20,2
5,920,酒,25,20,2
这样明白吗?
就是这样类似 total_amt就直接给出了 不用计算了
在同个MAPPING中怎么获得主表的ROW_ID
不同层面的数据,只能通过更新上去,你细表需要主表ID的原因就是想两个表有所关联对吧
|
本人中科院高级潜水院院士,诺贝尔长期掉线奖,奥斯卡终身隐身奖!!! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 2008-06-27 09:56:40
|
zdcku 嘉颖
高级会员
![[Avatar]](/images/avatar/e2ef524fbf3d9fe611d5a8e90fefdc9c.jpg)
注册时间: 2008-05-06 22:32:12
文章: 152
来自: 江苏南京
离线
|
是的
|
学习 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 2008-07-02 01:24:08
|
lxz123 漫步云天
初级会员
![[Avatar]](/images/avatar/26408ffa703a72e8ac0117e74ad46f33.jpg)
注册时间: 2008-07-02 00:56:01
文章: 7
离线
|
编码转换的工作是必须要做的,首先确定主表的ID(流水号),然后是从表的编码转换。这些都是不可避免的工作。
lz已经说了解决办法,但提到性能。我个人认为,应该将这个区分为两个mapping 。
mapping1先主表,确定主表id。
mapping2从表,将与主表的连接更改为lookup。
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 2008-07-02 07:43:37
|
zdcku 嘉颖
高级会员
![[Avatar]](/images/avatar/e2ef524fbf3d9fe611d5a8e90fefdc9c.jpg)
注册时间: 2008-05-06 22:32:12
文章: 152
来自: 江苏南京
离线
|
嗯 楼上的想法不错
可以尝试下
|
学习 |
|
|
 |
|
|