Kedro中数据集上的动态参数



我想调用一个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方法来丰富您的数据集。其他的都是样板。

相关内容

  • 没有找到相关文章

最新更新