gpt4 book ai didi

kiba-etl - 如何将参数传递到您的 ETL 作业中?

转载 作者:行者123 更新时间:2023-12-01 13:49:37 27 4
gpt4 key购买 nike

我正在构建一个 ETL,它将通过一个变量在不同的源上运行。

我如何执行我的工作(rake 任务)

Kiba.run(Kiba.parse(IO.read(etl_file),etl_file))

并为我的 etl_file 传递参数,然后用于其来源?

来源 MySourceClass(variable_from_rake_task)

最佳答案

这里是 Kiba 的作者。

编辑:下面的解决方案仍然适用,但如果您需要更大的灵 active ,您可以将 Kiba.parse 与 block 一起使用以获得更大的灵 active 。参见 https://github.com/thbar/kiba/wiki/Considerations-for-running-Kiba-jobs-programmatically-(from-Sidekiq,-Faktory,-Rake,-...)以获得详细的解释。

由于您正在使用 Rake 任务(而不是在并行环境中调用 Kiba,例如 Resque 或 Sidekiq),您现在可以做的是利用 ENV 变量,如下所示:

CUSTOMER_IDS=10,11,12 bundle exec kiba etl/upsert-customers.etl

或者,如果您正在使用您编写的 rake 任务,您可以:

task :upsert_customers => :environment do
ENV['CUSTOMER_IDS'] = [10, 11, 12].join(',)
etl_file = 'etl/upsert-customers.etl'
Kiba.run(Kiba.parse(IO.read(etl_file),etl_file))
end

然后在 upsert-customers.etl 中:

# quick parsing
ids = ENV['CUSTOMER_ID'].split(',').map { |c| Integer(c) }

source Customers, ids: ids

正如我之前所说,这仅适用于命令行模式,在这种模式下可以安全地利用 ENV

对于并行执行,请确实跟踪https://github.com/thbar/kiba/issues/18因为我要处理它。

如果这能正确满足您的需求,请告诉我!

关于kiba-etl - 如何将参数传递到您的 ETL 作业中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32959692/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com