将外部 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 部署到您的项目:
- 将之前开发或预演部署中的现有 RAW 和 CDC 数据集用作此部署的 RAW 和 CDC 数据集,因为在部署期间不会对其进行修改。
- 在
config/config.json
中将testData
和SAP.deployCDC
都设置为False
。 - 创建一个与现有 v4.2 环境分开的新的 SAP 报告项目,以进行测试。这样可以安全地评估升级过程,而不会影响您当前的操作。
- 可选。如果您有针对旧版 Cortex Framework Data Foundation 运行的有效 Airflow DAG,请先暂停这些 DAG,然后再继续进行迁移。您可以通过 Airflow 界面执行此操作。如需了解详细说明,请参阅从 Composer 打开 Airflow 界面和暂停 DAG 文档。
按照以下步骤,您可以安全地过渡到 Cortex Framework Data Foundation 版本 5.0,并验证新功能。
迁移现有表
如需将现有表迁移到新位置,请使用 jinja-cli
设置所提供的迁移脚本模板的格式,以完成迁移。
使用以下命令安装 jinja-cli:
pip install jinja-cli
从现有版本 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 数据集。 创建一个包含所需输入数据的 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
例如,如果您要移除
weather
和trends
,脚本将如下所示:{ "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" ] }
使用以下命令创建输出文件夹:
mkdir output
使用以下命令生成解析后的迁移脚本(此命令假定您位于代码库的根目录中):
jinja -d data.json -o output/migrate_external_dags.sql docs/external_dag_migration/scripts/migrate_external_dags.sql
检查输出 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