MaxCompute SQL的SELECT语法

MaxCompute SQL支持使用正则表达式select_expr选列。

使用正则表达式select_expr

  • SELECT `abc.*` FROM t;选出t表中所有列名以abc开头的列。
  • SELECT `(ds)?+.+` FROM t;选出t表中列名不为ds的所有列。
  • SELECT `(ds|pt)?+.+` FROM t;选出t表中排除dspt两列的其它列。
  • SELECT `(d.*)?+.+` FROM t;选出t表中排除列名以d开头的其它列。

说明

在排除多个列时,如果col2是col1的前缀,则需保证col1写在col2的前面(较长的col写前面)。例如,一个表有2个分区无需被select,一个分区名为ds,另一个为dshh,则正确表达式为SELECT `(dshh|ds)?+.+` FROM tbl;;错误表达式为SELECT `(ds|dshh)?+.+` FROM tbl; 

 

ORDER BY/SORT BY/DISTRIBUTE BY

  • distribute by用于对数据按照某几列的值做Hash分片,必须使用select的输出列别名。
    select region from sale_detail distribute by region;
    -- 列名即是别名,可以运行。
    select region as r from sale_detail distribute by region;
    -- 报错返回,后面必须加列的别名。
    select region as r from sale_detail distribute by r;
  • sort by用于局部排序,语句前必须加distribute by。实际上sort by是对distribute by的结果进行局部排序。必须使用select的输出列别名。
    select region from sale_detail distribute by region sort by region;
    select region as r from sale_detail sort by region;
    -- 没有distribute by,报错退出。
  • order by不和distribute by/sort by共用,同时group by也不和distribute by/sort by共用,必须使用select的输出列别名。

说明

  • order by/sort by/distribute by的Key必须是select语句的输出列,即列的别名。列的别名可以为中文。
  • 在MaxCompute SQL解析中,order by/sort by/distribute by是后于select操作的,因此它们只能接受select语句的输出列为Key。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值