梁老师 请教一个问题,数据在DB中存储按照逗号分隔多内容存储在一个字段现想用要给script task在code中解析这个逗号分隔内容为多数组,然后分别在cache manger中查找对应替换的内容,最后在提取到目的地,不知道如何在code中使用cache manager中的数据?

0
已邀请:
1

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-06-26 回答

你的数据从源是一行一行进来的,在SC代码里每行都能检测有没有含有逗号分隔
用C#做拆分是可以知道能拆成几行而且是动态的,通过循环拆分后的行。 把它们都添加到 output里
如果你没有C#基础,建议你先学习一下这篇文章 http://www.cnblogs.com/lulupin ... .html,然后再仔细阅读我发给你的链接。代码其实我已经都发出来了,只差拆分string到string[]。

我觉得你还是在用存储过程的思维在做ETL开发。如果按照你的思路去做,理论上是可以的但是如果你把数据处理放在了Control Flow实现,效率是大打折扣。那么你还不如写个存储过程算了

 
0

- 取是能力,舍是境界 2015-06-24 回答

最核心的问题还是如何把DB中用逗号分隔多内容的字段拆成多行
0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-06-24 回答

请上图,我看看你原始数据 和 你要的结果
还有查找的时候 匹配的逻辑是什么
0

superMark 2015-06-24 回答

举例,比如在源端的Table中有一个字段内容为1,2,3,这个3个数据不是没有意义的,他在源端分别代码某一个表的主键id, 这个表已经转移到目的地,那么在目的地也有个类似的主键id,那么就存在一个mapping关系,可以把1,2,3mapping成目的地的4,5,6比如,
现在要做的分为几步
1:查询到源的记录,ole db
2:逗号拆分特俗字段,script task
3:遍历每个拆分后的结果,寻找mapping对的匹配结果,比如,4,5,6
4:重新赋值,更新到目的地
 
这个mapping对在转移这个数据已经已经构成,放在一个cache manager中,那么需要在script task中通过c#/vb查找cache中mapping
重新赋值。
 
现在的问题就是如何在script task/c#,vb中获取cache manager中的数据?好利用mapping对查找结果
 
希望我说明白了
 
谢谢
0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-06-24 回答

你可以直接在 script component里,使用 Transfomation的方式,写一段代码。
把这 1,2,3 拆分成3条记录,然后输出到流里面。
再用lookup对目标4,5,6 进行查找
下面链接可供参考:
http://www.cnblogs.com/tylerdo ... .html

部分代码,希望对你有所帮助:
1.png

2.png



 
0

superMark 2015-06-26 回答

@jxsrzheng   script component中吧拆分后的数据写入到stream中,这个不是很理解,能否详细说一下?
 
如果是利用output column这个有点困难,应该程序执行前不知道能拆分出多少的数据,可能是1,2也可能是1,2,3的原始数据
 
我现在的思路是:
利用foreach遍历每行数据,然后找到含有逗号分隔内容的column,这个是column是固定的
然后利用script task解析数据,但是不知道如何在script task中引用cache connection中的内容,这样我可以直接比对后
替换mapping内容
 
还请各位大拿多多给意见
 
谢谢
0

superMark 2015-07-10 回答

说的对,确实有些存储过程的思想,现在随着不断的使用SSIS,慢慢转换思想中。这个问题已经解决。谢谢

要回复问题请先登录注册