操作符

你可以在 ArangoDBHook 中构建你自己的操作符钩子。

使用 AQLOperatorArangoDB 中执行 AQL 查询。

你可以使用 AQLOperator 进一步处理你的结果,并使用你喜欢的 result_processor 可调用对象进一步处理结果。

以下示例展示了如何列出 students 集合中的所有文档

airflow/providers/arangodb/example_dags/example_arangodb.py[源码]


operator = AQLOperator(
    task_id="aql_operator",
    query="FOR doc IN students RETURN doc",
    dag=dag,
    result_processor=lambda cursor: print([document["name"] for document in cursor]),
)

你也可以提供文件模板 (.sql) 来加载查询,请记住路径是相对于 dags/ 文件夹的,如果你想提供任何其他路径,请在创建 DAG 对象时提供 template_searchpath

airflow/providers/arangodb/example_dags/example_arangodb.py[源码]


operator2 = AQLOperator(
    task_id="aql_operator_template_file",
    dag=dag,
    result_processor=lambda cursor: print([document["name"] for document in cursor]),
    query="search_all.sql",
)

传感器

使用 AQLSensorArangoDB 中等待使用 AQL 查询的文档或集合。

以下示例展示了如何等待 students 集合中名为 judy 的文档

airflow/providers/arangodb/example_dags/example_arangodb.py[源码]


sensor = AQLSensor(
    task_id="aql_sensor",
    query="FOR doc IN students FILTER doc.name == 'judy' RETURN doc",
    timeout=60,
    poke_interval=10,
    dag=dag,
)

AQLOperator 类似,你也可以提供文件模板来加载查询 -

airflow/providers/arangodb/example_dags/example_arangodb.py[源码]


sensor2 = AQLSensor(
    task_id="aql_sensor_template_file",
    query="search_judy.sql",
    timeout=60,
    poke_interval=10,
    dag=dag,
)

这个条目有帮助吗?