運算子¶
您可以在 ArangoDBHook 中構建您自己的 Operator hook。
使用 AQLOperator 在 ArangoDB 中執行 AQL 查詢。
您可以使用 AQLOperator 進一步處理您的結果,並使用 result_processor Callable 按您的需求進一步處理結果。
列出 students 集合中所有文件的示例可以按如下方式實現
src/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,
src/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",
)
感測器¶
使用 AQLSensor 在 ArangoDB 中使用 AQL 查詢等待文件或集合。
在 students 集合中等待學生姓名 judy 的文件的示例可以按如下方式實現
src/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,您還可以提供檔案模板來載入查詢 -
src/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,
)