Как я могу сделать конвейеры ETL с храповым механизмом более общими? - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть следующий простой конвейер:

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

Проблема, с которой я столкнулся здесь, заключается в том, что с помощью храповика вы создаете свои преобразования как типы, а затем создаете их и вызываете их по мере необходимости.Я хочу сделать это для многих типов, и почти каждая строка выше будет дублирована.

Я думал о том, чтобы мои конвейеры создавали извлечение, преобразование и загрузку, а затем передавали их функции, котораязапустил блок макета ... но проблема в том, что когда вы хотите передать преобразование, преобразования явно не являются общими ... поэтому я попадаю в ловушку неспособности обобщить его.Мне здесь не хватает жизненно важных знаний, и если кто-нибудь сможет помочь, это было бы здорово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...