本小节将会为您介绍交互式分析(Hologres)中外部表(当前版本仅支持MaxCompute表)的命令操作。

创建外部表

  1. 命令格式
    CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [
      { column_name data_type }
      [, ... ]
      ] )
    SERVER odps_server
    [ OPTIONS ( option 'value' [, ... ] ) ]
  2. 使用示例
    create foreign table src_pt(
    id text, 
    pt text)
    server odps_server options(project_name '<odps_project>', table_name '<odps_table>');
    说明 :options中project_name是MaxCompute的project名称,table_name是要查询的MaxCompute表名。

查询外部表

  1. 直接查询外部表

    新建外部表后,可以直接查询外部表,即可快速查询到MaxCompute表数据。示例直接查询外部表SQL命令如下:

    select * from src_pt;

    关于直接查询MaxCompute数据,可以参见MaxCompute数据直接查询

  2. 导入查询

    当前版本也支持将MaxCompute数据导入至交互式分析再进行查询,使用示例如下:

    create foreign table src_pt_odps(
    id text, 
    pt text) 
    server odps_server options(project_name '<odps_project>', table_name '<odps_table>');
    
    begin;
    create table src_pt(id text, pt text);
    commit;
    
    insert into src_pt select * from src_pt_odps;
    
    select * from src_pt;

    关于将MaxCompute数据导入查询,可参见MaxCompute数据导入分析

修改外部表

  1. 重命名表

    交互式分析当前版本支持对外部表重命名(rename),命令如下。

    ALTER FOREIGN TABLE [ IF EXISTS ] name RENAME TO new_name 
    
    --举例
    alter foreign table test rename to new_test_table;
  2. 增加列

    使用交互式分析查询外部表,当MaxCompute增加字段时,交互式分析不会自动做schema的更新,需要手动更新,当前版本支持直接对外部表增加列,命令如下。

    ALTER TABLE IF EXISTS table_name ADD COLUMN new_column_name data_type;
    
    --举例
    ALTER FOREIGN TABLE bank
     ADD COLUMN  cons_conf_idx float8,
     ADD COLUMN  euribor3m float8;
  3. 删除列
    交互式分析当前版本支持删除外部表的某一列,命令如下。
    ALTER TABLE IF EXISTS table_name DROP COLUMN column_name;
    
    --举例
    ALTER FOREIGN TABLE bank
     DROP COLUMN  cons_conf_idx,
     DROP COLUMN  euribor3m;

删除外部表

  1. 命令格式
    DROP FOREIGN TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
  2. 使用示例
    drop foreign table test;

MaxCompute与交互式分析的数据类型映射

MaxCompute数据类型与交互式分析数据类型对照表如下:

MaxCompute类型 交互式分析类型 直接查询 / 导入到交互式分析表
SMALLINT int2 支持/转成BIGINT可支持
INT int4,int,integer 支持/转成BIGINT可支持
BIGINT int8,BIGINT 支持/转成BIGINT可支持
BOOLEAN boolean,bool 支持/支持
DOUBLE float8,double precision 支持/转换成float支持
FLOAT float4 支持/转换成float支持
DECIMAL numeric 支持decimal1.0/不支持持
VarChar text,VarChar 支持/支持
STRING text,VarChar 支持/支持
DATETIME timestamp with time zone 支持/转成timestamptz可支持

交互式分析当前版本支持的数据类型可以参见数据类型

说明
  1. MaxCompute DATETIME是日期时间类型,使用东八区时间作为系统标准时间。范围从0000年1月1日到9999年12月31日,精确到毫秒 。
  2. 交互式分析支持的是PostgreSQL的timestamptz,带时区,范围从 4713 BC 到 294276 AD ,且精确到微秒。
  3. 当MaxCompute表中含有交互式分析不支持的类型的时候, 如果不访问交互式分析不支持字段,其它字段可以正常查询。