Google Display & Video 360 運算子¶
Google Display & Video 360 具有您需要的端對端廣告活動管理功能。
先決條件任務¶
若要使用這些運算子,您必須執行幾件事
使用 Cloud Console 選取或建立 Cloud Platform 專案。
為您的專案啟用計費功能,如 Google Cloud 文件中所述。
啟用 API,如 Cloud Console 文件中所述。
透過 pip 安裝 API 程式庫。
pip install 'apache-airflow[google]'詳細資訊請參閱安裝。
建立查詢¶
若要建立 Display&Video 360 查詢,請使用 GoogleDisplayVideo360CreateQueryOperator
。
create_query_v2 = GoogleDisplayVideo360CreateQueryOperator(body=REPORT_V2, task_id="create_query")
query_id = cast(str, XComArg(create_query_v2, key="query_id"))
將 Jinja 模板 與 body
、 impersonation_chain
參數搭配使用,即可讓您動態決定值。您可以使用 `` .json`` 檔案提供 body 定義,因為此運算子支援此模板擴充功能。結果會儲存到 XCom,其他運算子即可使用此結果。
執行查詢¶
GoogleDisplayVideo360RunQueryOperator
.
run_query_v2 = GoogleDisplayVideo360RunQueryOperator(
query_id=query_id, parameters=PARAMETERS, task_id="run_report"
)
query_id = cast(str, XComArg(run_query_v2, key="query_id"))
report_id = cast(str, XComArg(run_query_v2, key="report_id"))
將 Jinja 模板 與 query_id
、 parameters
、 impersonation_chain
參數搭配使用,即可讓您動態決定值。結果會儲存到 XCom,其他運算子即可使用此結果。
刪除報表¶
若要刪除 Display&Video 360 報表,請使用 GoogleDisplayVideo360DeleteReportOperator
。
delete_report_v2 = GoogleDisplayVideo360DeleteReportOperator(report_id=report_id, task_id="delete_report")
將 Jinja 模板 與 report_id
、 impersonation_chain
參數搭配使用,即可讓您動態決定值。
等待查詢¶
若要等待報表,請使用 GoogleDisplayVideo360RunQuerySensor
。
wait_for_query = GoogleDisplayVideo360RunQuerySensor(
task_id="wait_for_query",
query_id=query_id,
report_id=report_id,
)
將 Jinja 模板 與 query_id
、 report_id
、 impersonation_chain
參數搭配使用,即可讓您動態決定值。
下載報表¶
若要將報表下載到 GCS 儲存桶,請使用 GoogleDisplayVideo360DownloadReportV2Operator
。
get_report_v2 = GoogleDisplayVideo360DownloadReportV2Operator(
query_id=query_id,
report_id=report_id,
task_id="get_report",
bucket_name=BUCKET,
report_name="test1.csv",
)
將 Jinja 模板 與 query_id
、 report_id
、 bucket_name
、 report_name
、 impersonation_chain
參數搭配使用,即可讓您動態決定值。
下載委刊項¶
此運算子接受 body 請求
與 Google API 一致
REQUEST_BODY = { "filterType": ADVERTISER_ID, "format": "CSV", "fileSpec": "EWF" }
若要下載 CSV 格式報表中的委刊項,請使用 GoogleDisplayVideo360DownloadLineItemsOperator
。
download_line_items = GoogleDisplayVideo360DownloadLineItemsOperator(
task_id="download_line_items",
request_body=DOWNLOAD_LINE_ITEMS_REQUEST,
bucket_name=BUCKET,
object_name=OBJECT_NAME,
gzip=False,
)
將 Jinja 模板 與 request_body
、 bucket_name
、 object_name
、 impersonation_chain
參數搭配使用,即可讓您動態決定值。
上傳委刊項¶
若要執行 Display&Video 360 上傳委刊項,請使用 GoogleDisplayVideo360UploadLineItemsOperator
。
upload_line_items = GoogleDisplayVideo360UploadLineItemsOperator(
task_id="upload_line_items",
bucket_name=BUCKET,
object_name=BUCKET_FILE_LOCATION,
)
將 Jinja 模板 與 bucket_name
、 object_name
、 impersonation_chain
參數搭配使用,即可讓您動態決定值。
建立 SDF 下載工作¶
若要建立 SDF 下載工作,請使用 GoogleDisplayVideo360CreateSDFDownloadTaskOperator
。
create_sdf_download_task = GoogleDisplayVideo360CreateSDFDownloadTaskOperator(
task_id="create_sdf_download_task", body_request=CREATE_SDF_DOWNLOAD_TASK_BODY_REQUEST
)
operation_name = '{{ task_instance.xcom_pull("create_sdf_download_task")["name"] }}'
將 Jinja 模板 與 body_request
、 impersonation_chain
參數搭配使用,即可讓您動態決定值。
將 SDF 檔案儲存到 Google Cloud Storage¶
若要儲存 SDF 檔案並將其儲存到 Google Cloud Storage,請使用 GoogleDisplayVideo360SDFtoGCSOperator
。
save_sdf_in_gcs = GoogleDisplayVideo360SDFtoGCSOperator(
task_id="save_sdf_in_gcs",
operation_name=operation_name,
bucket_name=BUCKET,
object_name=BUCKET_FILE_LOCATION,
gzip=False,
)
將 Jinja 模板 與 operation_name
、 bucket_name
、 object_name
、 impersonation_chain
參數搭配使用,即可讓您動態決定值。
等待 SDF 運算¶
等待 SDF 運算由以下項目執行: GoogleDisplayVideo360GetSDFDownloadOperationSensor
。
wait_for_operation = GoogleDisplayVideo360GetSDFDownloadOperationSensor(
task_id="wait_for_operation",
operation_name=operation_name,
)
將 Jinja 模板 與 operation_name
、 impersonation_chain
參數搭配使用,即可讓您動態決定值。