操作器¶
您可以在 ArangoDBHook
中构建您自己的操作器钩子。
使用 AQLOperator
在 ArangoDB 中执行 AQL 查询。
您可以使用 AQLOperator
进一步处理您的结果,并使用 result_processor
可调用对象根据需要进一步处理结果。
列出 **students** 集合中所有文档的示例可以按如下方式实现
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**,
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",
)
传感器¶
使用 AQLSensor
使用 ArangoDB 中的 AQL 查询等待文档或集合。
等待 **students** 集合中包含学生姓名 **judy** 的文档的示例可以按如下方式实现
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** 类似,您也可以提供文件模板来加载查询 -
sensor2 = AQLSensor(
task_id="aql_sensor_template_file",
query="search_judy.sql",
timeout=60,
poke_interval=10,
dag=dag,
)