我有一个具有ID和源(varchar)
的源表1 Facebook
2 Twitter
3 Google
我有包含Source(varchar)和Views(Int)
的传入数据Facebook 10
Twitter 12
Reddit 14
我希望水壶工作能够做到这一点:
E.g。从上面的数据来看,结果应该是这个
sourceID,Views
1,10
2,12
4,14 (Reddit wasn't in the table so it created it and the autoincrement gives it ID 4).
我无法找到实现此目的的正确步骤
答案 0 :(得分:2)
我的回答使用了两种转换:在第一步中,通过使用匹配键 source 连接源和键来创建中间结果。此外,确定最大源ID并将其存储在变量中。请注意,两个排序元素和merge元素可以替换为单个“内存中合并”元素。
在第二个转换中,读取中间结果,并根据是否存在现有源,对现有数据执行更新,或者将新条目插入到源表中。新条目的源id计算为从变量检索的最大id和从1开始的序列的总和。
答案 1 :(得分:0)
我建议使用组合查找步骤。
您指定source_name是要匹配的键,source_id是要检索的键。如果表中存在源,则返回密钥,否则,将其插入表中并返回新密钥。
您可以指定是否要使用db计数器,auto_increment字段,或者是否要将tableMax + 1用作新密钥。
它允许您缓存整个表,这可以极大地提高性能。