[Logo] MyDWBI---致力于打造最专业的中文数据仓库,商务智能社区
  [Groups]首页  [Blog] 博客   [Search] 搜索   [Recent Topics] 最新主题   [Hottest Topics] 热门主题   [Hottest Download] 热门下载   [Members]  会员列表  
[Register] 会员注册 / 
[Login] 登入 
主从表的从表怎么得到主表的主键  XML
论坛首页 » Informatica
前往:   
发表人 内容
zdcku
嘉颖


高级会员
[Avatar]

注册时间: 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


学习
[MSN]
killandylove

论坛CTO
[Avatar]

注册时间: 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的目的在于什么

本人中科院高级潜水院院士,诺贝尔长期掉线奖,奥斯卡终身隐身奖!!!
[Email] [WWW] [MSN]
zdcku
嘉颖


高级会员
[Avatar]

注册时间: 2008-05-06 22:32:12
文章: 152
来自: 江苏南京
离线

应该说主从表 比较贴切吧
比如销售主表 有 ID,CUST,TOTAL_AMT
销售从表有 R_ID,PRODUCT,PRICE,NUM,PKEY_ID
从表肯定得有个外键关联主表的ID

学习
[MSN]
zdcku
嘉颖


高级会员
[Avatar]

注册时间: 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


学习
[MSN]
killandylove

论坛CTO
[Avatar]

注册时间: 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的原因就是想两个表有所关联对吧

本人中科院高级潜水院院士,诺贝尔长期掉线奖,奥斯卡终身隐身奖!!!
[Email] [WWW] [MSN]
zdcku
嘉颖


高级会员
[Avatar]

注册时间: 2008-05-06 22:32:12
文章: 152
来自: 江苏南京
离线

是的

学习
[MSN]
lxz123
漫步云天


初级会员
[Avatar]

注册时间: 2008-07-02 00:56:01
文章: 7
离线

编码转换的工作是必须要做的,首先确定主表的ID(流水号),然后是从表的编码转换。这些都是不可避免的工作。
lz已经说了解决办法,但提到性能。我个人认为,应该将这个区分为两个mapping 。
mapping1先主表,确定主表id。
mapping2从表,将与主表的连接更改为lookup。

zdcku
嘉颖


高级会员
[Avatar]

注册时间: 2008-05-06 22:32:12
文章: 152
来自: 江苏南京
离线

嗯 楼上的想法不错
可以尝试下

学习
[MSN]
 
论坛首页 » Informatica
前往:   

网站地图 |  联系我们 |   |  招聘版主 |  免责声明 |  意见建议 |  系统帮助 | 
Copyright © 2008, mydwbi.com, All Rights Reserved | Powered by JForum 2.1.8 © JForum Team