我想调用一个API来丰富现有的数据集。
现有数据集是在目录中配置的CSVDataSet
现在我想创建一个Node,它用API中的数据丰富CSVDataSet
,我必须为CSV文件中的每一行调用它。然后将数据保存到数据库中(SQLTableDataSet
(。我的方法是在目录中创建一个APIDataSet
条目,并将其作为CSVDataSet
旁边节点的输入提供
这里的问题是,APIDataSet
是静态的(通常,数据集看起来非常静态(。我需要在运行时在Node中为csv文件中的每个条目调用load函数。
我没有找到这样做的方法。这只是一个糟糕的方法吗?我是否必须在Node中调用API而不是创建APIDataSet
?
因此,通常情况下,我们不喜欢节点了解IO配置。人们相信纯功能的python函数更容易测试、维护和构建。
通常,我们保持这种区别的方法是,您可以将我们的APIDataSet/CSVDataSet或两者都进行子类化,然后添加您的自定义逻辑来完成这一切。
我已经在GDALRasterDataSet
实现中做到了这一点。其想法是,如果您需要在旅途中丰富数据集,可以在自定义数据集中重载load()
方法,并在那里传递额外的参数。
您可以在这里看到一个实现和一个使用示例。
您需要做的唯一额外的事情是重写load()
方法以接受kwargs
(第143行(,并编写自己的_load
方法来丰富您的数据集。其他的都是样板。