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,这允许其他操作符使用它。

此条目是否有帮助?