如何在复合实体中使用从其他实体生成的字典?
How to use dictionary yielded from other solid in a composite Solid?
例如,我有一个名为 initiate_load 的实体,它产生一个 dictionary 和一个 integer ,类似于 :
@solid(
output_defs=[
OutputDefinition(name='l_dict', is_required=False),
OutputDefinition(name='l_int', is_required=False)
],
)
def initiate_load(context):
....
....
yield Output(l_dict, output_name='l_dict')
yield Output(l_int, output_name='l_int')
我也有一个composite_solid,比方说call_other_solid_composite
我正在将 l_dict
和 l_int
传递给这个 composite_solid
我正在使用 l_dict
将值映射到它的键。有点像。
@composite_solid
def call_other_solid_composite(p_dict,p_int):
l_val1 = p_dict['val1']
...
...
然后我得到一个错误:TypeError: 'InputMappingNode' object is not subscriptable
。
我到处搜索但找不到解决方案。该文档也没有帮助。我有需要解析这些值的用例。
任何帮助将不胜感激。
与使用@pipeline 修饰的方法类似,您不应将使用@composite_solid 修饰的方法视为常规的python 方法。 Dagster 会把它们包裹起来,让它变得完全不同。这就是为什么 p_dict
参数不能在方法内部用作常规方法参数的原因。
要实现您想要的效果,您有两种选择:
- 直接在另一个实体中传递
p_dict
参数,在这个实体中你将能够做l_val1 = p_dict['val1']
- 除了您现在在
initiate_load
方法中获得的收益,您还可以将 p_dict['val1']
作为输出。这允许您将 dict 和 'val1' 值用作其他实体(也在您的复合材料中)的输入
- 您可以在复合实体中有一个实体产生
p_dict['val1']
,这允许您将此值用作复合内其他实体的输入。
希望这对您有所帮助。作为参考,可以找到有关复合实体的文档 here。
对您提供的片段的一点评论。 Dagster 有一个非常简洁的打字系统,最好尽可能多地使用它。
例如,我有一个名为 initiate_load 的实体,它产生一个 dictionary 和一个 integer ,类似于 :
@solid(
output_defs=[
OutputDefinition(name='l_dict', is_required=False),
OutputDefinition(name='l_int', is_required=False)
],
)
def initiate_load(context):
....
....
yield Output(l_dict, output_name='l_dict')
yield Output(l_int, output_name='l_int')
我也有一个composite_solid,比方说call_other_solid_composite
我正在将 l_dict
和 l_int
传递给这个 composite_solid
我正在使用 l_dict
将值映射到它的键。有点像。
@composite_solid
def call_other_solid_composite(p_dict,p_int):
l_val1 = p_dict['val1']
...
...
然后我得到一个错误:TypeError: 'InputMappingNode' object is not subscriptable
。
我到处搜索但找不到解决方案。该文档也没有帮助。我有需要解析这些值的用例。
任何帮助将不胜感激。
与使用@pipeline 修饰的方法类似,您不应将使用@composite_solid 修饰的方法视为常规的python 方法。 Dagster 会把它们包裹起来,让它变得完全不同。这就是为什么 p_dict
参数不能在方法内部用作常规方法参数的原因。
要实现您想要的效果,您有两种选择:
- 直接在另一个实体中传递
p_dict
参数,在这个实体中你将能够做l_val1 = p_dict['val1']
- 除了您现在在
initiate_load
方法中获得的收益,您还可以将p_dict['val1']
作为输出。这允许您将 dict 和 'val1' 值用作其他实体(也在您的复合材料中)的输入 - 您可以在复合实体中有一个实体产生
p_dict['val1']
,这允许您将此值用作复合内其他实体的输入。
希望这对您有所帮助。作为参考,可以找到有关复合实体的文档 here。
对您提供的片段的一点评论。 Dagster 有一个非常简洁的打字系统,最好尽可能多地使用它。