本小节将会为您介绍在交互式分析(Interactive Analytics)中对外部表的命令操作。

说明 :本版本的交互式分析(Interactive Analytics)仅支持对MaxCompute表操作。

创建外部表

创建外部表使用CREATE FOREIGN TABLE命令,示例如下:
CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [
  { column_name data_type }
  [, ... ]
  ] )
SERVER odps_server
[ OPTIONS ( option 'value' [, ... ] ) ]
举例说明:
create foreign table test(key text)
server odps_server options(project_name 'odps_project', table_name 'test');
说明 :options必须要填写project_name和table_name,其中project_name的值是MaxCompute中project的名字,table_name 是project中表的名字。

查询外部表

查询外部表使用SELECT FOREIGN TABLE,相关命令语法请参考DML的数据查询

典型的查询MaxCompute外部表的示例:
create foreign table src_pt(id text, pt text) server test_server options(project_name 'projectname', table_name 'tablename');
select * from src_pt;
典型的将MaxCompute外部表数据导入交互式分析(Interactive Analytics)表的示例:
create foreign table src_pt_odps(id text, pt text) server test_server options(project_name 'projecname', table_name 'tablename');
begin;
create table src_pt(id text, pt text);
commit;
insert into src_pt select * from src_pt_odps;
说明
  • project_name为要查询的MaxCompute表所在的项目名称。
  • table_name为要查询的MaxCompute表所在的表名称。

修改外部表

交互式分析(Interactive Analytics) 修改外表的语义当前只支持RENAME操作,语法如下:
ALTER FOREIGN TABLE [ IF EXISTS ] name RENAME TO new_name  
举例说明:
alter foreign table test rename to new_test_table

删除外部表

交互式分析(Interactive Analytics) 删除外表的语义如下:
DROP FOREIGN TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
举例说明:
drop foreign table test;

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

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

MaxCompute 类型 交互式分析(Interactive Analytics) 类型 直接查询 / 导入到交互式分析表 说明
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支持 交互式分析仅支持timstamp with time zone
说明
  1. MaxCompute DATETIME是日期时间类型,使用东八区时间作为系统标准时间。范围从0000年1月1日到9999年12月31日,精确到毫秒 。
  2. 交互式分析(Interactive Analytics)支持的是PostgreSQL的timestamptz,带时区,范围从 4713 BC 到 294276 AD ,且精确到微秒。
  3. 当MaxCompute表中含有交互式分析(Interactive Analytics)不支持的类型的时候, 如果不访问交互式分析(Interactive Analytics)不支持字段,其它字段可以正常查询