bonobo-etl - 我不清楚收敛方法
问题描述
如果可以使这样的事情起作用,那就太好了。目前我不清楚如何实现收敛,除非我使用原始输入并将正在“滴答”的传入边缘的名称嵌入到有效负载中。
import bonobo
from bonobo.config import Configurable
from bonobo.config import use_context
@use_context
class A(Configurable):
def __call__(self, context):
context.set_output_fields(['a'])
yield {'a': 'a'}
@use_context
class B(Configurable):
def __call__(self, context, a):
context.set_output_fields(['b'])
yield {'b': 'b'}
@use_context
class F(Configurable):
def __call__(self, context):
context.set_output_fields(['f'])
yield {'f': 'f'}
@use_context
class G(Configurable):
def __call__(self, context, f):
context.set_output_fields(['g'])
yield {'g': 'g'}
@use_context
class Normalize(Configurable):
def __call__(self, context, b, f):
context.set_output_fields(['n'])
yield {'n': 'n'}
if __name__ == '__main__':
n = Normalize()
graph = bonobo.Graph()
# Here we mark _input to None, so normalize won't get the "begin" impulsion.
graph.add_chain(n, _input=None)
# Add two different chains
graph.add_chain(A(), B(), _output=n)
graph.add_chain(F(), G(), _output=n)
bonobo.run(graph)
目前,此代码将导致一个可以理解但不幸的错误:
bonobo.errors.UnrecoverableTypeError Input of <__main__.Normalize object at 0x00000261F76EDD30> does not bind to the node signature.
Args: (<NodeExecutionContext(+Normalize) in=1>,)
Input: Bag(b={'b': 'b'})
Kwargs: {}
Signature: (context, b, f)
- A in=1 out=1 [done]
- B in=1 out=1 [done]
- F in=1 out=1 [done]
- G in=1 out=1 [done]
! Normalize in=1 err=1 [defunct]
解决方案
推荐阅读
- android - 如何制作可扩展的 ListView 项目背景颜色?
- google-colaboratory - 我们如何以增量方式将文件上传到谷歌合作实验室
- java - 项目背景更改不正确。日志显示正确的值。如何解决?
- django - 与 Django Channels 的 React 本机 Websocket 连接已打开,但没有消息通过
- blockchain - 如何使用solidity和web3将以太币存入账户?
- python - 如何将依赖于一列的条件语句应用于另一列?
- facebook-graph-api - 如何获得 publish_pages 权限,以使用 Graph API 在自己的业务 Facebook 页面上发布?
- asp.net-mvc - 使用 ImageSource.FromUri 从 mvc 检索图像
- java - 使用 Itext 7.1.7 时,文本区域中的连续文本会剪切溢出文本的 PDF
- ios - React Native:Module AppRegistry 不是注册的可调用模块(调用runApplication)