问题描述
我正在尝试将图层属性添加到目录中。我有一个常见的模式是获取一些数据(raw
),清理它,然后输出零件清单(pri
)。然后,我需要这些部分的元数据,在这些元数据中,我从pri
中获取零件列表,并传递给获取数据的功能(raw
)。管道本身不是圆形的,但是当我创建圆形层时,kedro似乎并不喜欢。
此用例是否缺少我常用的模式?
是否可以允许图层为圆形?
示例
我试图在下面整理一个通用示例。
raw_truck_sales:
type: pandas.ParquetDataSet
filepath: <filepath>
layer: raw
int_truck_sales:
type: pandas.ParquetDataSet
filepath: <filepath>
layer: int
pri_truck_sales:
type: pandas.ParquetDataSet
filepath: <filepath>
layer: pri
pri_truck_sold_models:
type: pandas.ParquetDataSet
filepath: <filepath>
layer: pri
raw_truck_Metadata:
type: pandas.ParquetDataSet
filepath: <filepath>
layer: raw
int_truck_Metadata:
type: pandas.ParquetDataSet
filepath: <filepath>
layer: int
pri_truck_Metadata:
type: pandas.ParquetDataSet
filepath: <filepath>
layer: pri
nodes = [
node(
get_truck_sales,inputs=None,outputs='raw_truck_sales',),node(
create_int_truck_sales,inputs='raw_truck_sales',outputs='int_truck_sales',node(
create_pri_truck_sales,inputs='int_truck_sales',outputs='pri_truck_sales',node(
lambda truck_sales: truck_sales[['model']],inputs='pri_truck_sales',outputs='pri_truck_models_sold',# This node takes the list of trucks sold and gets Metadata for them
# It seems to break kedros layers model by creating a circular reference
node(
get_truck_Metadata,inputs='pri_truck_models_sold',outputs='raw_truck_Metadata',node(
create_int_truck_Metadata,inputs='raw_truck_Metadata',outputs='int_truck_Metadata',node(
create_pri_truck_Metadata,inputs='int_truck_Metadata',outputs='pri_truck_Metadata',]
解决方法
哦,嘿,韦隆!哈哈。
您能否发布显示错误的整个堆栈跟踪记录?
我已经复制了您的管道,对我而言,它看起来很不错,这意味着没有循环依赖项。也许还有一些未在此处列出的节点正在影响您的输出?
编辑:Lim Hoang刚刚指出您的示例中有c_pro_truck_models_sold
,如果是pro_truck_models_sold
,那将是循环的。
林恩(Lim)和我同意,放下这些层是最好的选择。无论如何,只要周围节点的层完好无损,kedro可视化并不会真正受到损失的影响。
请参见下图作为证明。
,您描述的圆形层关系与最初设计数据层的方式不符,并限制了将哪些层馈给其他层:
| Layer | Input Layer | Output Layer |
|--------------|---------------------------------------------|--------------------------------------------------------|
| Reference | | Primary,Feature,Model Input,Model Output,Reporting |
| Raw | | Intermediate,Primary |
| Intermediate | Raw | Primary |
| Primary | Raw,Intermediate,Reference | Feature,Reporting |
| Feature | Primary,Reference | Model Input,Reporting |
| Model Input | Feature,Reference | Reporting |
| Model Output | Model Input | Reporting |
| Reporting | Primary,Model Output | |
Kedro不会强制执行此结构(或任何特定的一组图层),但可以帮助支持它。因此,从最佳实践的角度来看,应该避免数据层之间的循环依赖。