如何使棘轮的ETL管道更通用?

时间:2018-09-12 19:09:54

标签: go

我有以下简单的管道:

extractor := http.NewAPIReader(apiCfg, 
queries.GetUserModelsFromAPI, runWindow.From, runWindow.To)
transformer := 
transform.NewUserModelTransform(runWindow.To)
load := sql.NewWriter(db, "user")

layout, _ := ratchet.NewPipelineLayout(
    ratchet.NewPipelineStage(

    ratchet.Do(extractor).Outputs(transformer),
    ),
    ratchet.NewPipelineStage(
        ratchet.Do(transformer).Outputs(load),
    ),
    ratchet.NewPipelineStage(
        ratchet.Do(load),
    ),
)

pipeline := ratchet.NewBranchingPipeline(layout)
pipeline.Name = "User Model ETL Pipeline"
return pipeline

我在这里遇到的问题是,使用棘轮,您将转换创建为类型,然后创建转换并根据需要调用它们。我想对许多类型执行此操作,并且上面的几乎每一行都会重复。

我考虑过让管道创建提取,转换和加载,然后将它们传递给运行布局块的函数...但是麻烦的是,当您要传递转换时,转换显然不是通用的...所以我陷入无法将其概括的陷阱。我在这里缺少一些重要的知识,如果有人能帮忙,那真是太棒了。

0 个答案:

没有答案