Bonobo:如何使用多个数据源?

时间:2018-04-14 18:14:29

标签: python-3.x etl bonobo-etl

我第一次使用Bonobo。我能够弄清楚基本的例子。我很想知道如何在 extract 步骤中添加两种不同类型的数据输入?假设我正在从两个不同的站点抓取数据,如何将它们添加到管道中?

由于

1 个答案:

答案 0 :(得分:1)

您可以有两个不同的提取步骤(或n个不同的步骤)。

例如:

import bonobo


def extract_1():
    yield "x1", "a"
    yield "x1", "b"
    yield "x1", "c"


def extract_2():
    yield "x2", "a"
    yield "x2", "b"
    yield "x2", "c"


def extract_3():
    yield "x3", "a"
    yield "x3", "b"
    yield "x3", "c"


def normalize(name, value):
    yield name.upper(), value


def get_graph(**options):
    graph = bonobo.Graph()
    graph.add_chain(normalize, print, _input=None)
    graph.add_chain(extract_1, _output=normalize)
    graph.add_chain(extract_2, _output=normalize)
    graph.add_chain(extract_3, _output=normalize)
    return graph


if __name__ == "__main__":
    with bonobo.parse_args() as options:
        bonobo.run(get_graph(**options))

请注意,每个节点都有先进先出的约束条件,但是随着提取器产生数据,“归一化”将以随机顺序获得节点。