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

本指南简要介绍了将输出表从外部有向无环图 (DAG) 重新定位到 Cortex Data Foundation v5.0 架构中的新位置所需的步骤。例如“天气”和“趋势”。本指南专门面向在之前的 Cortex Framework Data Foundation 版本(4.2 到 5.0)中实现了外部 DAG 且现在要升级的用户。如果您尚未使用外部 DAG 或尚未部署 SAP,则本指南不适用。

上下文

Cortex Framework Data Foundation 4.2 之前的版本使用 _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. 将之前开发或预演部署中的现有 RAW 和 CDC 数据集用作此部署的 RAW 和 CDC 数据集,因为在部署期间不会对其进行修改。
  2. config/config.json 中将 testDataSAP.deployCDC 都设置为 False
  3. 创建一个与现有 v4.2 环境分开的新的 SAP 报告项目,以进行测试。这样可以安全地评估升级过程,而不会影响您当前的操作。
  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 部署中找出以下参数:

    姓名 说明
    project_id_src 来源 Google Cloud 项目:版本 4.2 部署中现有 SAP CDC 数据集所在的项目。K9_PROCESSING 数据集也会在此项目中创建。
    project_id_tgt 目标 Google Cloud :新版 5.0 部署中新部署的 SAP 报告数据集所在的位置。这可能与源项目不同。
    dataset_cdc_processed CDC BigQuery 数据集:CDC 处理后的数据会存储到此 BigQuery 数据集中,其中包含最新的可用记录。此名称可以与源数据集相同。
    dataset_reporting_tgt 目标 BigQuery 报告数据集:部署 Data Foundation for SAP 预定义数据模型的 BigQuery 数据集。
    k9_datasets_processing K9 BigQuery 数据集:部署 K9(增强型数据源)的 BigQuery 数据集。
  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