开发者社区 > 大数据与机器学习 > 大数据开发治理DataWorks > 正文

分区查询可不可以不带分区字段?

分区查询可不可以不带分区字段?

展开
收起
十一0204 2023-04-05 09:10:03 419 0
5 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    在阿里云DataWorks中,分区查询的时候需要带上分区字段进行查询,否则会出现查询错误或者错误的查询结果。

    原因是在MaxCompute等计算引擎中,表的数据会被按照分区字段的不同值拆分为不同的分区存储。在查询时,如果不带分区字段进行查询,计算引擎会将所有的分区的数据都进行扫描,导致查询效率低下甚至出现计算资源的浪费。

    因此,建议在使用分区表进行查询时,一定要按照分区字段进行查询。如果您需要跨多个分区查询数据,可以使用MaxCompute的动态分区路由功能,通过指定一组分区来进行查询。

    示例代码(MaxCompute SQL):

    -- 使用动态分区路由查询2019年8月份和9月份的数据
    SELECT *
    FROM my_table
    WHERE pt BETWEEN '20190801' AND '20190930';
    
    2023-04-26 11:00:09
    赞同 展开评论 打赏
  • 坚持这件事孤独又漫长。
    • 在阿里云DataWorks中,分区查询必须要带上分区字段才能进行查询,因为分区是数据表的物理存储管理方式,数据表的每个分区是独立的存储空间,通过指定分区进行查询可以提高数据查询效率。
    • 若要查询整张表,可以使用不带分区字段的全表扫描查询方式,但这种方式相对较慢,不推荐在大数据量情况下使用。
    2023-04-06 08:49:14
    赞同 展开评论 打赏
  • 可以支持分区字段查询

    2023-04-06 08:48:26
    赞同 展开评论 打赏
  • 在DataWorks中,分区查询必须带分区字段。因为分区查询是基于分区字段进行数据过滤的,如果不带分区字段,系统无法确定需要查询哪些分区的数据,也就无法进行分区查询。

    2023-04-06 08:46:15
    赞同 展开评论 打赏
  • 意中人就是我呀!

    "同步任务可以支持ODPS的数据列、分区列、常量列,但不支持函数列b8a7c6b78e356b26d032661975ef1cb.png ODPS分区配置支持linux shell通配符,* 表示0个或多个字符,? 代表任意一个字符

    例如分区表 test存在 pt=1,ds=hangzhou pt=1,ds=shanghai pt=2,ds=hangzhou pt=2,ds=beijing 四个分区, 如果你想读取 pt=1,ds=shanghai 这个分区的数据,分区信息中配置: pt=1,ds=shanghai; 如果你想读取 pt=1下的所有分区,分区信息中配置 :pt=1,ds=; 如果你想读取整个 test 表的所有分区的数据,分区信息中配置 :pt=,ds=*

    如果需要指定最大分区,可以配置如下信息:

    /query/ ds=(select MAX(ds) from DataXODPSReaderPPR)

    如果需要按条件过滤,可以配置如下信息:

    /query/ pt>=20170101 and pt<20170110,表示pt分区大于等于20170101且小于20170110的所有数据

    ODPS写插件指定分区技巧

    需要写入数据表的分区信息,必须指定到最后一级分区。把数据写入一个三级分区表,必须配置到最后一级分区

    例如:pt=20150101/type=1/biz=2

    不支持写入多个分区 此回答整理自钉群“DataWorks交流群(答疑@机器人)”"

    2023-04-05 11:24:47
    赞同 展开评论 打赏

DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载