如何添加或删除分区,添加或修改列及注释常用操作

您所在的位置:网站首页 阿里云帮助文档怎么删除 如何添加或删除分区,添加或修改列及注释常用操作

如何添加或删除分区,添加或修改列及注释常用操作

2024-07-04 20:42| 来源: 网络整理| 查看: 265

分区和列操作为您提供了变更MaxCompute中表的分区或列的操作方法,您可以根据实际业务场景执行相应操作。本文为您介绍如何添加或删除分区、添加或修改列及注释常用操作。

分区和列操作详情请参见分区和列操作。分区和列操作常用命令如下。

类型功能角色操作入口添加分区为已存在的分区表新增分区。具备修改表权限(Alter)的用户本文中的命令您可以在如下工具平台执行:MaxCompute客户端MaxCompute控制台(查询编辑器)DataWorks控制台MaxCompute Studio删除分区为已存在的分区表删除分区。添加列名或注释为已存在的非分区表或分区表添加列或注释。修改列名或注释修改非分区表或分区表的列名或注释。添加分区

为已存在的分区表新增分区。

限制条件MaxCompute单表支持的分区数量上限为6万个。对于有多级分区的表,如果需要添加新的分区值,必须指明全部的分区。仅支持新增分区值,不支持新增分区字段。命令格式alter table add [if not exists] partition [partition partition ...];参数说明table_name:必填。待新增分区的分区表名称。if not exists:可选。如果未指定if not exists而同名的分区已存在,会执行失败并返回报错。pt_spec:必填。新增的分区,格式为(partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...)。partition_col是分区字段,partition_col_value是分区值。分区字段不区分大小写,分区值区分大小写。使用示例示例1:给表sale_detail添加一个分区,用来存储2013年12月杭州地区的销售记录。alter table sale_detail add if not exists partition (sale_date='201312', region='hangzhou');示例2:给表sale_detail同时添加两个分区,用来存储2013年12月北京和上海地区的销售记录。alter table sale_detail add if not exists partition (sale_date='201312', region='beijing') partition (sale_date='201312', region='shanghai');示例3:给表sale_detail添加分区,仅指定一个分区字段sale_date,返回报错,需要同时指定2个分区字段sale_date和region。alter table sale_detail add if not exists partition (sale_date='20111011');删除分区

为已存在的分区表删除分区。

MaxCompute支持通过条件筛选方式删除分区。如果您希望一次性删除符合某个规则条件的多个分区,可以使用表达式指定筛选条件,通过筛选条件匹配分区并批量删除分区。

限制条件每个分区过滤子句只能访问一个分区列。表达式用到的函数必须是内建的Scalar函数。注意事项删除分区之后,MaxCompute项目的存储量会降低。您可以结合MaxCompute提供的生命周期功能,实现自动回收旧分区的能力。更多生命周期信息,请参见生命周期。命令格式未指定筛选条件--一次删除一个分区。 alter table drop [if exists] partition ; --一次删除多个分区。 alter table drop [if exists] partition ,partition [,partition ....];指定筛选条件alter table drop [if exists] partition ;参数说明table_name:必填。待删除分区的分区表名称。if exists:可选。如果未指定if exists且分区不存在,则返回报错。pt_spec:必填。删除的分区。格式为(partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...)。partition_col是分区字段,partition_col_value是分区值。分区字段不区分大小写,分区值区分大小写。partition_filtercondition:指定筛选条件时必填。分区筛选条件,不区分大小写。格式为:partition_filtercondition : partition ( ) | partition (scalar() ) | partition ( AND|OR ) | partition (NOT ) | partition ()[,partition (), ...]partition_col:分区名称。relational_operators:关系运算符,详情请参见运算符。partition_col_value:分区列比较值或正则表达式,与分区列数据类型保持一致。scalar():Scalar函数。Scalar函数基于输入值生成对应的标量,对分区列的值(partition_col)进行处理后再按照指定的关系运算符relational_operators与partition_col_value做比较。分区过滤条件支持逻辑运算符NOT、AND和OR。支持通过NOT过滤条件子句,取过滤规则的补集。支持多个过滤条件子句以AND或OR的关系组成整体分区匹配规则。支持多个分区过滤子句,当多个分区过滤子句以英文逗号(,)分隔时,每个过滤子句的逻辑以OR的关系组成整体分区匹配规则。使用示例未指定筛选条件--从表sale_detail中删除一个分区,2013年12月杭州分区的销售记录。 alter table sale_detail drop if exists partition(sale_date='201312',region='hangzhou'); --从表sale_detail中同时删除两个分区,2013年12月杭州和上海分区的销售记录。 alter table sale_detail drop if exists partition(sale_date='201312',region='hangzhou'),partition(sale_date='201312',region='shanghai');指定筛选条件--创建分区表。 create table if not exists sale_detail( shop_name STRING, customer_id STRING, total_price DOUBLE) partitioned by (sale_date STRING); --添加分区。 alter table sale_detail add if not exists partition (sale_date= '201910') partition (sale_date= '201911') partition (sale_date= '201912') partition (sale_date= '202001') partition (sale_date= '202002') partition (sale_date= '202003') partition (sale_date= '202004') partition (sale_date= '202005') partition (sale_date= '202006') partition (sale_date= '202007'); --批量删除分区。 alter table sale_detail drop if exists partition(sale_date < '201911'); alter table sale_detail drop if exists partition(sale_date >= '202007'); alter table sale_detail drop if exists partition(sale_date LIKE '20191%'); alter table sale_detail drop if exists partition(sale_date IN ('202002','202004','202006')); alter table sale_detail drop if exists partition(sale_date BETWEEN '202001' AND '202007'); alter table sale_detail drop if exists partition(substr(sale_date, 1, 4) = '2020'); alter table sale_detail drop if exists partition(sale_date < '201912' OR sale_date >= '202006'); alter table sale_detail drop if exists partition(sale_date > '201912' AND sale_date '202004'); --支持多个分区过滤表达式,表达式之间是OR的关系。 alter table sale_detail drop if exists partition(sale_date < '201911'), partition(sale_date >= '202007'); --添加其他格式分区。 alter table sale_detail add IF NOT EXISTS partition (sale_date= '2019-10-05') partition (sale_date= '2019-10-06') partition (sale_date= '2019-10-07'); --批量删除分区,使用正则表达式匹配分区。 alter table sale_detail drop if exists partition(sale_date RLIKE '2019-\\d+-\\d+'); --创建多级分区表。 create table if not exists region_sale_detail( shop_name STRING, customer_id STRING, total_price DOUBLE) partitioned by (sale_date STRING , region STRING ); --添加分区。 alter table region_sale_detail add IF NOT EXISTS partition (sale_date= '201910',region = 'shanghai') partition (sale_date= '201911',region = 'shanghai') partition (sale_date= '201912',region = 'shanghai') partition (sale_date= '202001',region = 'shanghai') partition (sale_date= '202002',region = 'shanghai') partition (sale_date= '201910',region = 'beijing') partition (sale_date= '201911',region = 'beijing') partition (sale_date= '201912',region = 'beijing') partition (sale_date= '202001',region = 'beijing') partition (sale_date= '202002',region = 'beijing'); --执行如下语句批量删除多级分区,两个匹配条件是或的关系,会将sale_date小于201911或region等于beijing的分区都删除掉。 alter table region_sale_detail drop if exists partition(sale_date < '201911'),partition(region = 'beijing'); --如果删除sale_date小于201911且region等于beijing的分区,可以使用如下方法。 alter table region_sale_detail drop if exists partition(sale_date < '201911', region = 'beijing');批量删除多级分区时,在一个partition过滤子句中,不能根据多个分区列编写组合条件匹配分区,如下语句会报错FAILED: ODPS-0130071:[1,82] Semantic analysis exception - invalid column reference region, partition expression must have one and only one column reference。--分区过滤子句只能访问一个分区列,如下语句报错。 alter table region_sale_detail drop if exists partition(sale_date < '201911' AND region = 'beijing');添加列或注释

为已存在的非分区表或分区表添加列或注释。

说明 MaxCompute已支持添加STRUCT类型的列,例如struct、map。该功能正在试用中,试用操作请参见新功能测试申请。命令格式alter table add columns ( comment [''][, comment ''...]);参数说明table_name:必填。待新增列的表名称。添加的新列不支持指定顺序,默认在最后一列。col_name:必填。新增列的名称。type:必填。新增列的数据类型。col_comment:可选。新增列的注释。使用示例示例1:给表sale_detail添加两个列。alter table sale_detail add columns (customer_name STRING, education BIGINT);示例2:给表sale_detail添加两个列并同时添加列注释。alter table sale_detail add columns (customer_name STRING comment '客户', education BIGINT comment '教育' );示例3:给表sale_detail添加一个复杂数据类型列。alter table sale_detail add columns (region struct);修改列名及注释修改非分区表或分区表的列名或注释。命令格式alter table change column comment '';参数说明table_name:必填。需要修改列名以及注释的表名称。old_col_name:必填。需要修改的列名称。old_col_name必须是已存在的列。new_col_name:必填。新的列名称。表中不能有名为new_col_name的列。column_type:必填。列的数据类型。col_comment:可选。修改后的注释信息。内容最长为1024字节。使用示例--修改表sale_detail的列名customer_name为customer_newname,注释“客户”为“customer”。 alter table sale_detail change column customer_name customer_newname STRING comment 'customer';


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3