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

CALL COMMAND语法使用说明

CALL语句仅在Spark中使用Iceberg SQL扩展时可用。

前提条件

  • 在Spark中使用Iceberg前,需先配置Spark目录,目录配置请参见Iceberg Catalog配置
  • 执行CALL语句前,需已存在Iceberg表,可执行以下操作创建表并插入数据(如果已存在请跳过该操作):
    1. 执行以下命令创建表:
      CREATE TABLE prod.db.sample ( id bigint, data string, category string, ts timestamp) USING iceberg PARTITIONED BY (bucket(16, id), days(ts), category);
    2. 执行以下命令向表中插入数据:
      • 示例一:
        INSERT INTO prod.db.sample VALUES (1, 'data_001', 'electronics', TIMESTAMP '2026-01-20 10:15:30');
      • 示例二:
        INSERT INTO prod.db.sample VALUES (2, 'data_002', 'clothing', TIMESTAMP '2026-01-20 14:20:45');
      • 示例三:
        INSERT INTO prod.db.sample VALUES (3, 'data_003', 'food', TIMESTAMP '2026-01-21 09:05:15');
    3. 执行以下命令查看表数据:
      select * from prod.db.sample;
    4. 执行以下命令查看快照ID:
      select * from prod.db.sample.snapshots;

使用方法

可通过CALL语句从任何已配置的Iceberg Catalog中调用表服务,所有表服务均位于system命名空间下。

CALL支持按名称传递参数(推荐方式)或按位置传递参数,不支持混合使用位置参数和命名参数。

  • 命名参数

    所有存储过程参数都有名称。按名称传递参数时,参数顺序可以任意,且任何可选参数都可省略。

    CALL prod.system.{表服务名} (arg_name_2 => 'arg_2_value', arg_name_1 => 'arg_1_value');
  • 位置参数
    按位置传递参数时,仅当末尾的参数为可选参数时,才可省略。
    CALL prod.system.{表服务名} ('arg_1', 'arg_2', ... 'arg_n');

相关文档