SuperAPI AI 工具集

iceberg-advanced

数据与分析

查看项目

更新于 10-15 11:20

技能介绍

用途

该技能用于让智能体在企业数据湖仓环境中,基于 Apache Iceberg 的分支能力原生地建模、实现并编排 Write-Audit-Publish(WAP)模式。其核心目标是避免 ETL 过程直接写入生产表(main 分支)所带来的数据损坏风险,用 Iceberg 的类 Git 分支机制取代传统的 _stg 暂存表方案。

主要能力

技能围绕 WAP 模式的完整流程展开,包含以下步骤:

  1. 创建分支:创建指向 main 当前状态的分支,例如 ALTER TABLE prod.sales.transactions CREATE BRANCH etl_job_123;。
  2. 配置 Spark 写入分支:通过 spark.conf.set("spark.wap.branch", "etl_job_123") 让后续的 INSERT 或 MERGE INTO 语句写入指定分支,示例中 df.writeTo("prod.sales.transactions").append() 即写入该分支。
  3. 审计 / 数据质量检查:从分支读取数据以验证行数、空值和约束,例如 SELECT count(*) FROM prod.sales.transactions VERSION AS OF 'etl_job_123';,并可在此分支上触发 Soda 或 Great Expectations。
  4. 发布(Fast-Forward):审计通过后,通过 CALL catalog.system.fast_forward('prod.sales.transactions', 'main', 'etl_job_123'); 将分支快速前滚发布回 main。
  5. 清理:通过 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 类型的具体要求,也未说明是否支持其他计算引擎或审计工具。相关平台与兼容性信息暂未提供。