Google Display & Video 360 操作符¶
Google Display & Video 360 具有您所需的端到端广告系列管理功能。
先决条件任务¶
要使用这些操作符,您必须执行以下操作:
使用 Cloud Console 选择或创建一个 Cloud Platform 项目。
按照 Google Cloud 文档 中的说明,为您的项目启用结算功能。
按照 Cloud Console 文档 中的说明启用 API。
通过 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
参数一起使用,这些参数允许您动态确定值。