Google Campaign Manager 運算子

Google Campaign Manager 運算子讓您能夠插入、執行、取得或刪除報表。關於 Campaign Manager 報表 API 的更多資訊,請查看官方文件

先決條件任務

要使用這些運算子,您必須完成以下幾件事

刪除報表

要刪除 Campaign Manager 報表,您可以使用 GoogleCampaignManagerDeleteReportOperator。它會根據報表的唯一 ID 刪除報表。

tests/system/google/marketing_platform/example_campaign_manager.py[原始碼]

delete_report = GoogleCampaignManagerDeleteReportOperator(
    profile_id=USER_PROFILE_ID,
    report_name=REPORT_NAME,
    task_id="delete_report",
    trigger_rule=TriggerRule.ALL_DONE,
    gcp_conn_id=CONNECTION_ID,
)

您可以將 Jinja 模板profile_idreport_idreport_nameapi_versiongcp_conn_idimpersonation_chain 參數搭配使用,以動態決定數值。

下載報表

GoogleCampaignManagerDownloadReportOperator 允許您將 Campaign Manager 報表下載到 Google Cloud Storage 儲存桶。

tests/system/google/marketing_platform/example_campaign_manager.py[原始碼]

report_name = f"reports/report_{str(uuid.uuid1())}"
get_report = GoogleCampaignManagerDownloadReportOperator(
    task_id="get_report",
    profile_id=USER_PROFILE_ID,
    report_id=report_id,
    file_id=file_id,
    report_name=report_name,
    bucket_name=BUCKET_NAME,
    gcp_conn_id=CONNECTION_ID,
)

您可以將 Jinja 模板profile_idreport_idfile_idbucket_namereport_namechunk_sizeapi_versiongcp_conn_idimpersonation_chain 參數搭配使用,以動態決定數值。

等待報表

報表為非同步產生。要等待報表準備好下載,您可以使用 GoogleCampaignManagerReportSensor

tests/system/google/marketing_platform/example_campaign_manager.py[原始碼]

wait_for_report = GoogleCampaignManagerReportSensor(
    task_id="wait_for_report",
    profile_id=USER_PROFILE_ID,
    report_id=report_id,
    file_id=file_id,
    gcp_conn_id=CONNECTION_ID,
)

您可以將 Jinja 模板profile_idreport_idfile_idimpersonation_chain 參數搭配使用,以動態決定數值。

插入新報表

要插入 Campaign Manager 報表,您可以使用 GoogleCampaignManagerInsertReportOperator。執行此運算子會建立新的報表。

tests/system/google/marketing_platform/example_campaign_manager.py[原始碼]

create_report = GoogleCampaignManagerInsertReportOperator(
    profile_id=USER_PROFILE_ID,
    report=REPORT,
    task_id="create_report",
    gcp_conn_id=CONNECTION_ID,
)
report_id = cast(str, XComArg(create_report, key="report_id"))

您可以將 Jinja 模板profile_idreportapi_versiongcp_conn_idimpersonation_chain 參數搭配使用,以動態決定數值。您可以使用 .json 檔案提供報表定義,因為此運算子支援此模板擴充功能。結果會儲存到 XCom,以便其他運算子使用。

執行報表

要執行 Campaign Manager 報表,您可以使用 GoogleCampaignManagerRunReportOperator

tests/system/google/marketing_platform/example_campaign_manager.py[原始碼]

run_report = GoogleCampaignManagerRunReportOperator(
    profile_id=USER_PROFILE_ID,
    report_id=report_id,
    task_id="run_report",
    gcp_conn_id=CONNECTION_ID,
)
file_id = cast(str, XComArg(run_report, key="file_id"))

您可以將 Jinja 模板profile_idreport_idsynchronousapi_versiongcp_conn_idimpersonation_chain 參數搭配使用,以動態決定數值。結果會儲存到 XCom,以便其他運算子使用。

插入轉換

要插入 Campaign Manager 轉換,您可以使用 GoogleCampaignManagerBatchInsertConversionsOperator

tests/system/google/marketing_platform/example_campaign_manager.py[原始碼]

insert_conversion = GoogleCampaignManagerBatchInsertConversionsOperator(
    task_id="insert_conversion",
    profile_id=USER_PROFILE_ID,
    conversions=[CONVERSION],
    encryption_source="AD_SERVING",
    encryption_entity_type="DCM_ADVERTISER",
    encryption_entity_id=ENCRYPTION_ENTITY_ID,  # type: ignore[arg-type]
    gcp_conn_id=CONNECTION_ID,
)

您可以將 Jinja 模板profile_idconversionsencryption_entity_typeencryption_entity_idencryption_sourceimpersonation_chain 參數搭配使用,以動態決定數值。結果會儲存到 XCom,以便其他運算子使用。

更新轉換

要更新 Campaign Manager 轉換,您可以使用 GoogleCampaignManagerBatchUpdateConversionsOperator

tests/system/google/marketing_platform/example_campaign_manager.py[原始碼]

update_conversion = GoogleCampaignManagerBatchUpdateConversionsOperator(
    task_id="update_conversion",
    profile_id=USER_PROFILE_ID,
    conversions=[CONVERSION_UPDATE],
    encryption_source="AD_SERVING",
    encryption_entity_type="DCM_ADVERTISER",
    encryption_entity_id=ENCRYPTION_ENTITY_ID,  # type: ignore[arg-type]
    max_failed_updates=1,
    gcp_conn_id=CONNECTION_ID,
)

您可以將 Jinja 模板profile_idconversionsencryption_entity_typeencryption_entity_idencryption_sourceimpersonation_chain 參數搭配使用,以動態決定數值。結果會儲存到 XCom,以便其他運算子使用。

這個條目是否有幫助?