将外部 DAG 从 v4.2 迁移到 v5.0

本指南概述了将输出表从外部有向无环图 (DAG) 迁移到 Cortex Data Foundation v5.0 架构中的新位置所需的步骤。例如,天气和趋势。本指南专门为在之前的 Cortex Framework Data Foundation 版本(4.2 到 5.0)中实现了外部 DAG 且现在正在升级的用户而设计。如果您未使用外部 DAG 或未部署 SAP,则本指南不适用。

上下文

4.2 之前的 Cortex Framework Data Foundation 版本使用 _GEN_EXT 标志来管理外部数据源的部署,其中一些数据源与特定工作负载(例如 SAP 的货币换算)相关联。不过,在 5.0 版中,此标志已被移除。现在,有一个新模块专门用于管理可服务于多个工作负载的 DAG。本指南概述了调整现有数据流水线以使用此新结构的步骤。

跨工作负载可重复使用的 DAG

Cortex Framework Data Foundation v5.0 引入了 K9,这是一个新组件,负责提取、处理和建模在各种数据源之间共享的可重复使用的数据元素。现在,报告视图引用 K9_PROCESSING 数据集来访问这些可重复使用的组件,从而简化了数据访问并减少了冗余。以下外部数据源现在作为 K9 的一部分部署到 K9_PROCESSING 数据集中:

  • date_dimension
  • holiday_calendar
  • trends
  • weather

依赖于 SAP 的 DAG

以下依赖于 SAP 的 DAG 仍由 generate_external_dags.sh 脚本触发,但现在在报告构建步骤中执行,并且现在写入 SAP 报告数据集,而不是 CDC(变更数据捕获)阶段。

  • currency_conversion
  • inventory_snapshots
  • prod_hierarchy_texts

迁移指南

本指南概述了将 Cortex Framework Data Foundation 升级到 5.0 版的步骤。

部署 Cortex Framework Data Foundation 5.0

首先,按照以下准则将最新版本 (v5.0) 的 Cortex Framework Data Foundation 部署到您的项目中:

  1. 使用之前开发或预演部署中的现有原始数据集和 CDC 数据集作为此部署的原始数据集和 CDC 数据集,因为在部署期间不会对其进行任何修改。
  2. config/config.json 中将 testDataSAP.deployCDC 都设置为 False
  3. 创建一个新的 SAP 报告项目,该项目与您现有的 v4.2 环境分开,用于测试目的。这样可以安全地评估升级过程,而不会影响您当前的操作。
  4. 可选。如果您有针对之前 Cortex Framework Data Foundation 版本运行的活跃 Airflow DAG,请先暂停这些 DAG,然后再继续迁移。 这可以通过 Airflow 界面完成。如需查看详细说明,请参阅 从 Composer 打开 Airflow 界面暂停 DAG 文档。

按照这些步骤操作,您可以安全地过渡到 Cortex Framework Data Foundation 5.0 版,并验证新功能。

迁移现有表

如需将现有表迁移到新位置,请使用 jinja-cli 格式化提供的迁移脚本模板以完成迁移。

  1. 使用以下命令安装 jinja-cli:

    pip install jinja-cli
    
  2. 从现有 4.2 版和新 5.0 版部署中识别以下参数:

    <td"> 名称 <td"> 说明 </td"></td"><td"> project_id_src <td"> Source Google Cloud Project:您的现有 SAP CDC 数据集(来自 4.2 版部署)所在的项目。K9_PROCESSING 数据集 也会在此项目中创建。 </td"></td"><td"> project_id_tgt <td"> Target Google Cloud where:您的新部署的 SAP 报告数据集(来自 新 5.0 版部署)所在的位置。这可能与源项目不同。 </td"></td"><td"> dataset_cdc_processed <td"> CDC BigQuery 数据集: CDC 处理的数据最终会落入其中的 BigQuery 数据集,其中包含最新的可用记录。这可能与源数据集相同。 </td"></td"><td"> dataset_reporting_tgt <td"> 目标 BigQuery 报告数据集:Data Foundation for SAP 预定义的数据模型部署到的 BigQuery 数据集。 </td"></td"><td"> k9_datasets_processing <td"> K9 BigQuery 数据集: K9(扩充的数据源)部署到的 BigQuery 数据集。 </td"></td">
  3. 使用所需的输入数据创建 JSON 文件。请务必从 migrate_list 部分中移除您不想迁移的任何 DAG:

    {
      "project_id_src": "your-source-project",
      "project_id_tgt": "your-target-project",
      "dataset_cdc_processed": "your-cdc-processed-dataset",
      "dataset_reporting_tgt": "your-reporting-target-dataset-OR-SAP_REPORTING",
      "k9_datasets_processing": "your-k9-processing-dataset-OR-K9_REPORTING",
      "migrate_list":
        [
            "holiday_calendar",
            "trends",
            "weather",
            "currency_conversion",
            "inventory_snapshots",
            "prod_hierarchy_texts"
        ]
    }
    EOF
    

    例如,如果您想移除 weathertrends,脚本将如下所示:

    {
      "project_id_src": "kittycorn-demo",
      "project_id_tgt": "kittycorn-demo",
      "dataset_cdc_processed": "CDC_PROCESSED",
      "dataset_reporting_tgt": "SAP_REPORTING",
      "k9_datasets_processing": "K9_PROCESSING",
      "migrate_list":
        [
            "holiday_calendar",
            "currency_conversion",
            "inventory_snapshots",
            "prod_hierarchy_texts"
        ]
        }
    
  4. 使用以下命令创建输出文件夹:

      mkdir output
    
  5. 使用以下命令生成已解析的迁移脚本(此命令假定您位于仓库的根目录):

      jinja -d data.json -o output/migrate_external_dags.sql docs/external_dag_migration/scripts/migrate_external_dags.sql
    
  6. 检查输出 SQL 文件并在 BigQuery 中执行,以将表迁移到新位置。

更新并取消暂停 Airflow DAG

备份 Airflow 存储桶中的当前 DAG 文件。然后,将其替换为 Cortex Framework Data Foundation 5.0 版部署中新生成的文件。如需查看详细说明,请参阅以下文档:

验证和清理

迁移现已完成。您现在可以验证新 v5.0 报告部署中的所有报告视图是否正常运行。如果一切正常,请再次执行该过程,这次将 v5.0 部署定位到生产报告集。之后,您可以随意使用以下脚本移除所有表:

    jinja -d data.json -o output/delete_old_dag_tables.sql docs/external_dag_migration/scripts/delete_old_dag_tables.sql