使用Kiba:是否可以在同一个文件中定义和运行两个管道?使用中间目的地&第二个来源

时间:2017-10-10 14:21:59

标签: ruby kiba-etl

我的处理有一个"浓缩"在需要进一步处理之前的步骤:

来源:各种用户的原始事件/分析日志。

转换:根据UserID将每一行插入到哈希中。

目标/输出:内存中的哈希,如:

{ 
  "user1" => [event, event,...], 
  "user2" => [event, event,...] 
}

现在,我没有必要将这些用户组存储在任何地方,我只是想继续处理它们。 Kiba是否有使用中间目的地的共同模式?例如。

# First pass
source EventSource # 10,000 rows of single events
transform {|row| insert_into_user_hash(row)}
@users = Hash.new
destination UserDestination, users: @users

# Second pass
source UserSource, users: @users # 100 rows of grouped events, created in the previous step
transform {|row| analyse_user(row)} 

我正在挖掘代码,似乎文件中的所有变换都应用于源代码,所以我想知道其他人是如何接近这个的,如果有的话。我可以保存到一个中间商店并运行另一个ETL脚本,但希望有一个更清洁的方式 - 我们正在计划很多这些"浓缩"脚步。

1 个答案:

答案 0 :(得分:0)

直接回答您的问题:您无法在同一个Kiba文件中定义2个管道。您可以拥有多个源或目标,但这些行都将遍历每个转换,并通过每个目标。

根据您的具体使用案例,这说您在分成2个管道之前有很多选择。

我打算通过电子邮件向您提出一些非常详细的问题,以便稍后在这里正确回复。