【MaxCompute】MaxCompute SQL with as 语句

COMMON TABLE EXPRESSION(CTE)
MaxCompute支持SQL标准的CTE,提高SQL语句的可读性与执行效率。
命令格式:

WITH 
     cte_name AS
    (
        cte_query
    )
    [,cte_name2  AS 
     (
     cte_query2
     )
    ,……]

参数说明:

  • cte_name:CTE的名称,不能与当前WITH子句中的其他CTE的名称相同。查询中任何使用到
  • cte_name标识符的地方,均指CTE。
  • cte_query:一个SELECT语句。它产生的结果集用于填充CTE。

示例

INSERT OVERWRITE TABLE srcp PARTITION (p='abc')
SELECT * FROM (
    SELECT a.key, b.value
    FROM (
        SELECT * FROM src WHERE key IS NOT NULL    ) a
    JOIN (
        SELECT * FROM src2 WHERE value > 0    ) b
    ON a.key = b.key
) c
UNION ALL
SELECT * FROM (
    SELECT a.key, b.value
    FROM (
        SELECT * FROM src WHERE key IS NOT NULL    ) a
    LEFT OUTER JOIN (
        SELECT * FROM src3 WHERE value > 0    ) b
    ON a.key = b.key AND b.key IS NOT NULL
)d;

顶层的UNION两侧各为一个JOIN,JOIN的左表是相同的查询。通过写子查询的方式,只能重复这段代码。
使用CTE的方式重写以上语句。

with 
  a as (select * from src where key is not null),
  b as (select  * from src2 where value>0),
  c as (select * from src3 where value>0),
  d as (select a.key,b.value from a join b on a.key=b.key),
  e as (select a.key,c.value from a left outer join c on a.key=c.key and c.key is not null)
insert overwrite table srcp partition (p='abc')
select * from d union all select * from e;

重写后,a对应的子查询只需写一次,便可在后面进行重用。您可以在CTE的WITH子句中指定多个子查询,像使用变量一样在整个语句中反复重用。除重用外,不必反复嵌套。

### 阿里云 PAI 平台 MaxCompute 使用教程 #### PyODPS简介 PyODPS 是 MaxCompute 的 Python 版本的 SDK,提供了简便易用的 Python 编程接口[^3]。通过该工具可以轻松操作 MaxCompute 上的数据表、执行 SQL 查询并进行数据分析。 #### 安装PyODPS库 为了使用 PyODPS 进行开发,需先安装对应的 Python 库: ```bash pip install pyodps ``` #### 初始化连接对象 创建与 MaxCompute 服务之间的会话链接,通常需要提供访问密钥 ID 和 Secret 等认证信息: ```python from odps import ODPS o = ODPS('your-access-id', 'your-secret-key', 'default_project') ``` #### 执行SQL查询语句 可以直接调用 `execute_sql` 方法来运行标准 SQL 命令,并获取返回的结果集: ```python with o.execute_sql('select * from my_table limit 10').open_reader() as reader: for record in reader: print(record) ``` #### 数据上传下载功能 支持本地文件向云端表格批量导入导出的操作方式: ```python # 下载数据至本地CSV文件 df.to_csv('local_file.csv') # 将本地CSV文件上传到指定表中 table.upload_local_file('path/to/local/file.csv') ``` #### 结合PAI FeatureStore应用实例 考虑到阿里云 PAI FeatureStore 能够和其他阿里云产品如 MaxCompute 实现良好对接,在实际项目实施过程中可充分利用这一特性完成复杂业务逻辑实现。比如在一个推荐系统的案例里,可以通过如下流程构建完整的解决方案:从原始日志收集开始经过清洗转换之后存入 TableStore 或者其他存储介质;再利用 Spark/Flink 对其做进一步加工提炼得到高质量特征集合最终保存回 MaxCompute 表内供后续模型训练调参所用[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值