gpt4 book ai didi

python - 重复使用类似的 luigi 任务

转载 作者:行者123 更新时间:2023-12-01 09:06:44 24 4
gpt4 key购买 nike

我有一个 luigi 任务,它读取 .sql 文件并输出到 BigQuery。

我的问题是,有什么方法可以使用不同的 .sql 文件重用同一任务,而无需复制整个 luigi 任务,即我想创建模板 luigi 任务的实例。

class run_sql(luigi.task):
sql_file = 'path/to/sql/file' # This is the only bit of code that changes
def complete(self):
...
def requires(self):
...
def run(self):
...

最佳答案

基于@matagus的答案,您还可以子类化 RunSql定义一个sql文件,使用complete() , requires() ,和run()父类的方法。

class RunSqlFile(RunSql):
sql_file = '/path/to/file.sql`

或者您可以使用 @property装饰器引用 RunSql 的属性类(class)。我经常这样做是在父类中设置目录或其他配置数据,然后在子类中引用它们。

class RunSql(luigi.Task):
sql_file = luigi.Parameter()

def get_file(self, name):
default_dir = '/path/to/sql/dir'
return os.path.join(default_dir, name)

def requires(self):
...


class RunSqlFile(RunTask):

@property
def sql_file(self):
return self.get_file("query.sql")

这就像您使用 --sql-file /path/to/sql/dir/query.sql 实例化该类一样。

关于python - 重复使用类似的 luigi 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51980543/

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