運算子

您可以在 ArangoDBHook 中建立您自己的 Operator hook。

使用 AQLOperator 以在 ArangoDB 中執行 AQL 查詢。

您可以進一步使用 AQLOperator 處理您的結果,並使用您喜歡的 result_processor Callable 進一步處理結果。

以下是如何實作列出 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",
)

感測器

使用 AQLSensor 以等待 ArangoDB 中使用 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,
)

這篇文章是否對您有幫助?