用途
该技能用于让智能体在企业数据湖仓环境中,基于 Apache Iceberg 的分支能力原生地建模、实现并编排 Write-Audit-Publish(WAP)模式。其核心目标是避免 ETL 过程直接写入生产表(main 分支)所带来的数据损坏风险,用 Iceberg 的类 Git 分支机制取代传统的 _stg 暂存表方案。
主要能力
技能围绕 WAP 模式的完整流程展开,包含以下步骤:
- 创建分支:创建指向 main 当前状态的分支,例如
ALTER TABLE prod.sales.transactions CREATE BRANCH etl_job_123;。 - 配置 Spark 写入分支:通过
spark.conf.set("spark.wap.branch", "etl_job_123")让后续的 INSERT 或 MERGE INTO 语句写入指定分支,示例中df.writeTo("prod.sales.transactions").append()即写入该分支。 - 审计 / 数据质量检查:从分支读取数据以验证行数、空值和约束,例如
SELECT count(*) FROM prod.sales.transactions VERSION AS OF 'etl_job_123';,并可在此分支上触发 Soda 或 Great Expectations。 - 发布(Fast-Forward):审计通过后,通过
CALL catalog.system.fast_forward('prod.sales.transactions', 'main', 'etl_job_123');将分支快速前滚发布回 main。 - 清理:通过
ALTER TABLE prod.sales.transactions DROP BRANCH etl_job_123;删除分支。
此外,技能还涵盖 Iceberg 的隐藏分区(Hidden Partitioning)用法:当用户尝试手动提取 year 或 month 再分区时(如 df.withColumn("year", year("ts")).write.partitionBy("year")),技能会指出这是错误做法,并建议使用 CREATE TABLE ... PARTITIONED BY (years(ts)),同时向用户解释 Iceberg 会自动处理分区提取,无需显式列。
使用方式
技能以指令形式引导智能体按 WAP 流程操作,并规定输出格式为一份 Iceberg WAP 实施指南,包含:分支创建命令、Spark 写入配置(spark.wap.branch=[branch_name])、审计查询(SELECT ... VERSION AS OF '[branch_name]',预期 0 空值)以及发布命令(CALL catalog.system.fast_forward(...))。
适用场景
适用于企业数据湖仓中需要安全发布 ETL 结果的场景,尤其是对生产表写入有严格数据质量要求的流程。通过分支隔离写入与审计,可在不影响 main 分支的前提下验证数据,再决定是否发布。
限制
资料未提供该技能对 Iceberg 版本、Spark 版本、catalog 类型的具体要求,也未说明是否支持其他计算引擎或审计工具。相关平台与兼容性信息暂未提供。