更新时间:2026-06-11 GMT+08:00
分享

VIEW

Iceberg视图的设计目标是提供引擎无关的视图定义,确保同一视图可以在不同的查询引擎中保持一致的行为和结果,增强了数据查询的灵活性和兼容性。

Iceberg视图是SQL视图的一种通用表示形式,旨在跨多个查询引擎进行解析。以下内容介绍如何在Spark 3.4及之后版本中创建和管理视图。

基本语法

  • 创建视图

    创建一个不包含任何注释或属性的简单视图:

    CREATE VIEW <viewName> AS SELECT * FROM <tableName>;

    使用IF NOT EXISTS可避免因视图已存在而导致语句执行失败:

    CREATE VIEW IF NOT EXISTS <viewName> AS SELECT * FROM <tableName>;

    创建包含注释的视图,其中可包含与源表不同的列别名和列注释:

    CREATE VIEW <viewName> (ID COMMENT 'Unique ID', ZIP COMMENT 'Zipcode')  COMMENT 'View Comment' AS SELECT id, zip FROM <tableName>;
  • 创建包含属性的视图:

    使用TBLPROPERTIES创建包含属性的视图:

    CREATE VIEW <viewName> TBLPROPERTIES ('key1' = 'val1', 'key2' = 'val2') AS SELECT * FROM <tableName>;

    查看视图的属性:

    SHOW TBLPROPERTIES <viewName>;
  • 删除视图
    • 删除已存在的视图:
      DROP VIEW <viewName>;
    • 如果视图不存在时不希望语句执行失败,可使用IF EXISTS关键字:
      DROP VIEW IF EXISTS <viewName>;
  • 更新视图

    如果需要更新视图的Schema、属性或底层SQL语句,可使用CREATE OR REPLACE语句覆盖原有视图:

    CREATE OR REPLACE VIEW <viewName> (updated_id COMMENT 'updated ID') TBLPROPERTIES ('key1' = 'new_val1') AS SELECT id FROM <tableName>;
  • 设置或移除视图属性
    • 使用ALTER VIEW ... SET TBLPROPERTIES为已存在的视图设置属性:
      ALTER VIEW <viewName> SET TBLPROPERTIES ('key1' = 'val1', 'key2' = 'val2');
    • 使用ALTER VIEW ... UNSET TBLPROPERTIES从已存在的视图中移除属性:
      ALTER VIEW <viewName> UNSET TBLPROPERTIES ('key1', 'key2');
  • 查看视图

    查看当前已设置的命名空间(通过USE <namespace>设置)中的所有视图:

    SHOW VIEWS;

    查看指定目录或命名空间中的所有可用视图:

    • 查看指定命名空间(namespace)中的所有视图:
      SHOW VIEWS IN <namespace>;
    • 查看指定目录和命名空间组合中的所有视图:
      SHOW VIEWS IN <catalog>.<namespace>;
  • 查看创建视图的语句:
    SHOW CREATE TABLE <viewName>;
  • 使用DESCRIBE查看视图详情:
    DESCRIBE [EXTENDED] <viewName>;

相关文档