本文为您提供关于MaxCompute使用功能的各项更新记录。
DataWorks独享资源组PyODPS节点升级公告
尊敬的MaxCompute用户:
DataWorks将于北京时间2024年03月11日(周一)至2024年04月25日(周四)期间,逐步升级各个地域的独享资源组,以增强PyODPS支持。本次升级的主要内容及各地域具体升级日期请见下表,升级后,节点的PyODPS包版本将保持不变。
升级内容 | 地域 | 升级日期 |
| 西南1(成都)、华北3(张家口) | 2024年03月11日~2024年03月14日 |
华南1(深圳) | 2024年03月18日~2024年03月21日 | |
华北2(北京) | 2024年03月25日~2024年03月29日 | |
华东2(上海) | 2024年04月01日~2024年04月05日 | |
华东1(杭州) | 2024年04月08日~2024年04月11日 | |
中国香港、海外地域 | 2024年04月15日~2024年04月18日 | |
华东1(金融云)、华东2(金融云) | 2024年04月22日~2024年04月25日 |
在服务升级期间可能会影响当前正在运行的PyODPS作业,若您遇到独享资源组PyODPS作业失败问题,或其他任何相关问题需要协助,可以通过您的专属钉群或MaxCompute开发者社区群(钉钉群号:11782920)联系我们。
感谢您的配合!
2024年02月28日-MaxCompute单机宕机演练
尊敬的MaxCompute用户:
MaxCompute将于北京时间2024年02月28日(周三)15:00~16:00,在中国华北3(张家口)、西南1(成都)地域进行接入服务可靠性演练,预计不会对用户作业运行产生影响。在极小概率下,若影响了用户的作业并导致执行失败,请重新尝试执行作业。
您有任何相关问题或需要协助,可以通过您的专属钉群或MaxCompute开发者社区群(钉钉群号:11782920)联系我们。
感谢您的配合!
2024年01月25日-MaxCompute计算成本优化功能发布公告
尊敬的MaxCompute用户:
MaxCompute计算资源优化功能于北京时间2024年01月25日(周四)升级为计算成本优化功能。
计算成本优化功能在原计算资源优化功能(对包年包月一级Quota类型的计算资源生成更优的资源配置方案)的基础上增加支持查看使用按量付费计算资源调整为使用包年包月计算资源的资源配置推荐方案及效果推演,帮助您进一步优化计算成本和提高资源利用效率。更多功能介绍和使用说明请参见计算成本优化。
您有任何相关问题或需要协助,可以通过您的专属钉群或MaxCompute开发者社区群(钉钉群号:11782920)联系我们。
感谢您的配合!
2023年12月28日-MaxCompute升级公共云Endpoint
尊敬的MaxCompute用户:
感谢您对云原生大数据计算服务MaxCompute的支持,MaxCompute将于北京时间2024年1月4日对华北2(北京)、华东2(上海)、华东1(杭州)、华南1(深圳)、华北3(张家口)和西南1(成都)共6个区域的Endpoint服务接入架构进行升级,提供全新的Endpoint地址。由于历史架构问题,原有Endpoint无法进行升级扩容,导致无法满足业务增长的需求。当前原有Endpoint仍可继续使用,具体下线时间将另行通知。建议尽早进行业务上的Endpoint切换。
您有任何相关问题或需要协助,可以通过您的专属钉群或MaxCompute开发者社区群(钉钉群号:11782920)联系我们。
感谢您的配合!
2023年12月27日-MaxCompute调整OSS外部表读写带宽为租户带宽
尊敬的MaxCompute用户:
感谢您对云原生大数据计算服务MaxCompute的支持,MaxCompute将分别于北京时间2024年1月29日对华东1(杭州)、2月29日对华东2(上海)和华北2(北京)区域的OSS外部表数据读写流量带宽进行架构升级,升级后将采用租户或者对应Bucket的流量带宽。当前杭州、上海和北京区域(其它区域不涉及该问题)对OSS外部表的数据读写时使用的是MaxCompute公共流量带宽,隔离能力弱,同时无法观测流量带宽。本次升级将提高OSS外部表数据访问稳定性,实现租户之间带宽隔离,并可实现OSS外部表带宽资源的灵活配置。
您有任何相关问题或需要协助,可以通过您的专属钉群或MaxCompute开发者社区群(钉钉群号:11782920)联系我们。
感谢您的配合!
2023年12月27日-新增项目停止自动安装项目级别Information Schema
尊敬的MaxCompute用户:
感谢您对云原生大数据计算服务MaxCompute的支持,MaxCompoute于北京时间2023年08月01日全面开放了租户级别的Information Schema,支持一次性查询租户下所有项目的元数据信息,提升查询效率的同时基于租户级别Information Schema还陆续完善了更多的元数据信息,因此MaxCompute计划于北京时间2024年03月01日开始停止对新增项目自动安装项目级别Information Schema,即新增的项目默认没有项目级别Information Schema的Package。若您有查元数据的业务,您可以查询租户级别的Information Schema,以便获取更全的信息。租户级别Information Schema的具体使用说明请参见租户级别Information Schema。
您有任何相关问题或需要协助,可以通过您的专属钉群或MaxCompute开发者社区群(钉钉群号:11782920)联系我们。
感谢您的配合!
2023年12月15日-MaxCompute项目生命周期流程改造公告
尊敬的MaxCompute用户:
感谢您对云原生大数据计算服务MaxCompute的支持,MaxCompute从北京时间2023年12月25日(周一)开始陆续对各个地域(Region)的项目生命周期进行改造升级,如果您使用MaxCompute的包年包月计算资源,需要特别关注。升级前后对比如下:
升级前
如果MaxCompute的项目默认计算资源选择的是包年包月计算资源,则项目的生命周期和这个包年包月计算资源的生命周期同步,项目设置默认计算资源请参见计算资源使用。即当对应包年包月的计算资源到期时,项目会被停服且不可用,15天内不续费项目将被删除释放(不可恢复);或者当您对包年包月计算资源进行退订时,项目也会被删除释放(不可恢复)。
升级后
当您使用的包年包月计算资源所属的地域同时开通了按量付费服务,开通按量付费服务请单击按量付费。
该地域项目的生命周期将不受包年包月计算资源的生命周期影响,即包年包月计算资源到期、释放只会将对应的Quota进行冻结或释放,不会影响该地域下任何项目的状态。这样数据不会被删除,通过其他方式可正常请求项目数据。
重要如果包年包月计算Quota被冻结或释放,项目默认Quota未切换到其他正常Quota,那么在此项目中将无法运行计算作业,设置或指定Quota请参见计算资源使用。
该地域项目生命周期将和按量付费服务的生命周期同步,即账号欠费项目会被同步冻结,15天不充值项目会被删除释放(不可恢复)。
该地域项目的存储、下载后付费账单归属的产品明细将从大数据计算服务MaxCompute(包月)变成大数据计算服务MaxCompute(按量付费),同时对应的用量明细选择的计量规格变成大数据计算服务MaxCompute(按量付费)。
当您使用的包年包月计算资源所属的地域未开通按量付费服务,则项目生命周期与升级前一致。因此强烈建议您如果目前还未开通按量付费服务,尽快单击按量付费开通按量付费服务(0元开通)。避免因为包年包月计算资源到期、释放时将数据禁用、删除而带来不可挽回的数据损失。
更多项目生命周期相关说明请参见服务注销与资源释放。
感谢您的配合!
2023年12月04日-MaxCompute管家下线公告
尊敬的MaxCompute用户:
感谢您对云原生大数据计算服务MaxCompute的支持,MaxCompute从2023年3月发布新版管理控制台以来,陆续实现了原有MaxCompute管家的能力,同时交互体验有了很大提升,并扩展更多的管理和运维能力。目前MaxCompute的控制台已经承载了MaxCompute管家的基础能力,后续MaxCompute将停止对管家的维护,并将于2024年1月10日(周三)陆续下线MaxCompute管家。
在下线前,您还可以通过管家进行对应信息查看,但请您不要再进行任何编辑操作。管家原来的能力已经对应新版管理控制台的功能如下:
资源概览:包年包月计算Quota的资源使用趋势图。此功能对应MaxCompute管理控制台的资源观测,资源观测已经全部覆盖原有能力,同时扩展其他资源使用观测,详情请参见资源观测。
项目运维:查看项目列表。此功能对应MaxCompute管理控制台的项目管理,项目管理已经全部覆盖原有能力,详情请参见项目管理(新版)。
配额管理:管理包年包月计算Quota的二级Quota。此功能对应MaxCompute管理控制台的配额(Quota)管理,配额(Quota)管理已经全部覆盖原有能力,同时还支持了预留弹性能力,支持数据传输独享Quota的管理等,交互体验上也有了很大的提升,详情请参见项目管理(新版)。
作业运维:运维查看作业快照和历史作业。此功能对应MaxCompute管理控制台的作业运维,作业运维已经全部覆盖原有能力,详情请参见作业运维(新版)。
优化推荐(部分区域支持):在DataWorks的数据治理已经全部覆盖原有能力,包括任务持续空输出、持续全表扫描以及适合启用动态过滤器的推荐信息,详情请参见输出为空和暴力扫描。
期间您有任何相关问题或需要协助,可以通过您的专属钉群或MaxCompute开发者社区群(钉钉群号:11782920)联系我们。
感谢您的配合!
2023年11月21日-MaxCompute支持RAM权限控制项目超级管理员(super_administrator)设置
尊敬的MaxCompute用户:
MaxCompute于北京时间2023年11月21日(周二)起,MaxCompute管理控制台的项目管理 > 管理 > 参数配置支持设置超级管理员,即设置项目Super_Administrator角色成员,Super_Administrator角色说明请参见内置角色。此设置操作支持RAM权限控制,RAM用户拥有对应的RAM权限(UpdateUsersToSuperAdmin)即可给某个项目设置超级管理员角色成员,以便使用项目超级管理员角色进行对应项目的管理,详情请参见RAM权限。此能力可以解决如下场景:RD账号为项目Owner但无法访问MaxCompute进行授权,导致项目需要super_administrator
角色权限才能操作的参数无法配置。
感谢您的配合!
2023年11月16日-MaxCompute新售卖规格按时弹性预留CU开放公告
尊敬的MaxCompute用户:
MaxCompute将于北京时间2023年11月16日(周四)开始陆续开放MaxCompute新售卖规格:按时弹性预留CU。
按时弹性预留CU是在购买包年包月预留CU的基础上实现分时弹性扩缩容,弹性预留CU计费方式为按时按量计费,具体规格和单价请参见计算费用(按时计费)。购买方式无需走售卖流程,您购买包年包月预留CU后,即可通过新版控制台Quota管理的Quota配置,在Quota计划里设置一级Quota的弹性预留CU,结合Quota时间计划,实现按时弹性扩缩容,配置详情请参见Quota管理(新版)。
感谢您的配合!
2023年09月25日-MaxCompute子查询SQL恢复收费和作业运行最长时间变更
尊敬的MaxCompute用户:
MaxCompute将于北京时间2023年12月01日(周五)对以下SQL行为进行调整,适用范围为海外区域,金融云和政务云客户,请您提前关注了解。
修复子查询计量问题,在早期版本中,对于SQL中带有IN的子查询,子查询部分在按量计费模式下未进行计量计费。目前该问题已经修复,从2023年12月01日 10:00:00开始生效,对带有IN的子查询正常进行计量计费。
调整SQL类型作业运行最长时间的默认值,由原来的72个小时,调整为24个小时,以避免无效作业长期占用系统资源。该调整从2023年12月01日 10:00:00开始生效,如果您的SQL作业运行时间需要超过24小时,请使用
set odps.sql.job.max.time.hours=72;
命令在调整生效日期前在作业上进行设置,最大支持运行时长为72个小时。
感谢您的配合!
2023年09月21日-MaxCompute作业分析功能发布公告
尊敬的MaxCompute用户:
MaxCompute于北京时间2023年09月21日(周四)起从中国内地公共云地域开始陆续发布MaxCompute作业分析功能。
作业分析功能支持您在作业运维页面查看指定作业的资源消耗情况及某时刻使用的计算Quota的资源分配情况,详情请参见作业运维(新版)。当您遇到作业运行较长时间仍未结束、或当作业运行结束后发现作业运行时长不达预期(作业运行慢)时,您可以通过作业分析的资源消耗页签查看是否为计算资源紧张、多作业资源抢占导致,然后依据实际业务情况优化任务执行情况,进行作业优先级调整或进行计算资源管理,详情请参见作业优先级或配置Quota。
作业资源消耗情况推荐的查看方式请参见查看作业资源消耗情况及某时刻计算Quota的资源分配情况。
感谢您的配合!
2023年08月08日-MaxCompute 租户级别Information Schema开放公告
尊敬的MaxCompute用户:
租户级别Information Schema从租户角度提供项目元数据及使用历史数据等信息。与原来的项目级别Information Schema相比,通过租户级别元数据,您可以一次性拉取您同一个元数据中心下所有Project的某类元数据,无需分别进入每一个Project进行查询获取,提升您的查询效率。租户级别Information Schema是在每个阿里云账号下创建名称为SYSTEM_CATALOG
的项目,并内置INFORMATION_SCHEMA
,访问该内置Schema提供的只读视图,可以查询当前用户所有项目的元数据信息以及使用历史信息,详情请参见租户级别Information Schema。
感谢您的配合!
2023年07月03日-MaxCompute Transaction Table2.0 功能开放试用公告
尊敬的MaxCompute用户:
MaxCompute Transaction Table2.0功能于北京时间2023年07月03日(周一)起开始开放试用。
MaxCompute推出Transaction Table2.0功能,对Transaction Table进行升级,Transaction Table2.0支持设置主键,可分钟级高并发对表进行upsert/delete写入操作,同时支持Time-Travel功能以及增量查询功能,并满足读写快照隔离。功能说明和使用请参见Transaction Table2.0概述。
新功能在全站已开放,如需申请试用,请参见新功能试用申请。
感谢您的配合!
2023年07月03日-MaxCompute 新增JSON数据类型开放试用公告
尊敬的MaxCompute用户:
MaxCompute新增JSON数据类型于北京时间2023年07月03日(周一)起开始开放试用。
MaxCompute新增JSON数据类型,在插入JSON数据时,由MaxCompute自动进行优化,以列存提高JSON数据的压缩比,同时提高查询分析性能。功能说明和使用请参见MaxCompute JSON类型使用指南(试用Beta版本)。
新功能在全站已开放,如果想与其它云产品组合使用该功能,请先与相关云产品确认支持JSON数据类型后再使用。
感谢您的配合!
2023年05月10日-MaxCompute服务升级公告
尊敬的MaxCompute用户:
为了提升MaxCompute网络容灾能力,MaxCompute将于北京时间2023年05月24日(周三)15:00:00 ~ 16:00:00 升级华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华南1(深圳)、西南1(成都)地域。
在升级过程中,MaxCompute接入层进行网络变更,需要在域名中增加A记录,通常情况不会影响您的正常使用;但是如果您在CEN或专线网络打通并且在路由表里配置了MaxCompute的VIP地址,则需要及时与阿里云技术支持人员沟通,并将新的VIP增加到路由表中。
此次升级给您带来的不便,望您谅解,如您有任何问题,可随时通过工单或者服务热线与我们联系。
感谢您的配合!
2023年04月06日-MaxCompute新版作业运维发布公告
尊敬的MaxCompute用户:
MaxCompute将于北京时间2023年04月06日(周四)起开始陆续发布MaxCompute的新版作业运维功能,新版作业运维将提供全量MaxCompute作业运行列表进行运维管理。如果您是数据开发人员,作业运维功能方便您日常查看、终止MaxCompute作业。如果您是管理员,作业运维功能方便您日常结合配额组查看某时刻的资源负载、终止MaxCompute作业。
新版作业运维同时满足查看作业快照信息和作业当前信息,您可以通过时间范围参数输入开始和结束时间实现:
过滤在这个时间范围内执行完成的作业。
过滤在结束时间或往前3分钟正在运行的作业,会有作业快照信息,这个时间也称为作业快照观测时间。
更多新版作业运维介绍请参见作业运维(新版)。
感谢您的配合!
2023年03月28日-MaxCompute新版控制台发布公告
尊敬的MaxCompute用户:
MaxCompute将于北京时间2023年03月28日(周二)开始陆续发布MaxCompute的新版控制台。新版控制台将采用全新的域名地址,会先从中国内地公共云地域开始陆续发布新版功能,在陆续发布期间,未发布的地域会将老版本控制台嵌入到新版地址中。
MaxCompute新版控制台将提供全新的项目管理、Quota(配额)管理同时集成全新功能:弹性预留CU、自定义项目管理类角色。
新版控制台与老版本控制台对比。
访问控制。
访问新版控制台进行相关管理操作需要有MaxCompute相关的权限策略,详情请参见RAM权限。
项目管理。
创建项目。
老版本是在创建DataWorks工作空间的同时创建MaxCompute项目;新版本是直接创建单个MaxCompute项目。因此建议您继续通过DataWorks创建使用MaxCompute项目。
删除项目。
老版本可以删除有关联DataWorks工作空间的项目,并在删除前要求先在DataWorks上进行项目解绑,同时支持逻辑删除(逻辑删除后可恢复)和立即删除;新版本支持删除所有MaxComputes项目,只支持立即删除不支持逻辑删除,另外需要注意删除时不感知项目与DataWorks项目空间的关联性,因此需要在删除前需自行确认与DataWorks工作空间解绑以免删除后DataWorks项目空间不能正常操作使用。
项目状态变更。
老版本中项目状态除了随订单实例生命周期变化,支持自定义逻辑删除、恢复的状态变更;新版本项目状态同样随订单实例周期变化,同时支持自定义禁用、恢复项目。
项目切换默认Quota。
老版本可以更新关联DataWorks工作空间的项目,并在DataWorks页面进行更新,若工作空间为标准模式则同时变更对应两个项目;新版本支持所有正常、停服状态项目变更切换,每个项目独立变更。
项目参数配置。
老版本控制台没有提供界面化项目参数配置;新版本将常用的项目基础属性、权限属性、IP白名单设置都进行界面化,有权限操作的账号可直接通过新版控制台界面进行相关操作。
项目权限管理。
老版本控制台没有提供界面化项目权限管理;新版本提供界面化项目角色管理和Package管理(管理权限校验与命令方式一致),通过角色进行权限管理。
项目角色:支持创建Resource和Admin类型角色,支持ACL、Policy方式进行角色授权。ACL方式授权支持所有对应Project对象(Table、Function、Resource、Package、Project)进行授权操作,通过界面操作实现批量授权。
Package:支持界面化创建、授权、安装Package等操作,通过界面操作实现批量授权。
说明DataWorks的工作空间管理页面将下线MaxCompute Project的角色管理功能,此管理功能与MaxCompute新版控制台的权限校验逻辑不一样。若您使用非中国内地公共云地域,且只能通过RAM账号或RAM角色进行管理,那么您可提前通过DataWorks页面进行一些MaxCompute项目权限管理配置,以便后续RAM管理账号可通过MaxCompute控制台进行项目管理。
Quota管理。
说明暂时仅华东2(上海)、华东1(杭州)、华北2(北京)、华南1(深圳)、华北3(张家口)、西南1(成都)地域支持Quota管理,其他地域支持情况会另行通知。
即MaxCompute管家中的配额管理,新版控制台提供全新的Quota管理交互。
Quota列表。
展示一、二级Quota列表,相关参数属性为当前Quota的属性。
资源消耗。
查看对应一级Quota的相关CU消耗趋势图,与当前管家概览CU使用趋势一致。
升级、降配、续费。
对一级Quota进行操作,即对对应实例进行升级、降配、续费。
Quota配置。
对一级Quota下的二级Quota进行拆分配置、分时调度等。
Quota模板:创建、删除二级Quota目录。
Quota计划:全局视图进行Quota属性和CU量配置,可以按不同时间计划设置不同的Quota配置。
时间计划:支持设置每日不同时段调度使用不同的Quota计划配置,支持半点和整点调度。
如果原管家中开启了分时Quota功能,则会在新版中按每个时段生成对应的Quota计划,每个Quota计划的名称为
p_开始时间点
,并在时间计划里配置好每个Quota计划的调度。
新增自定义项目管理类角色。
在新版控制台的
,支持自定义创建admin
类型的角色,目前admin
类型角色只能通过Policy方式授权。通过此类角色,您可自定义安全管理人员的权限范围,如只能进行某个项目IP白名单配置的管理角色、只能进行某个项目数据权限管理的角色等。
感谢您的配合!
2023年03月11日-大数据计算服务MaxCompute PyODPS行为调整
尊敬的大数据计算服务MaxCompute用户:
MaxCompute于北京时间2023年03月11日(周六)对以下PyODPS行为进行调整(适用于PyODPS V0.11.3及以上版本),请您关注了解。
MaxCompute引入了新的对象层级Schema(详情请参见Schema操作),其名称与既有表Schema字段重合,因此建议您使用
table_schema
特指表的Schema。使用schema
描述表的Schema信息将会输出警告,但不影响使用。示例如下:--# 获取表的 schema 信息。 t = o.get_table('pyodps_iris') print (t.table_schema) # 获取表 pyodps_iris 的 schema
Resource/Function对象上的时间字段(例如
creation_time
)将默认使用本地时间而非UTC时间,以与Table/Partition上的时间属性字段保持一致。如果您希望仍然使用UTC时间,可以进行如下配置:options.use_legacy_parsedate = True
原表与分区的属性字段
last_modified_time
更名为last_data_modified_time
。使用旧的属性名称将会输出警告,但不影响使用。
感谢您的配合!
2023年01月18日-MaxCompute Tunnel共享资源组限流公告
尊敬的MaxCompute用户:
为向您提供更加稳定的Tunnel共享资源服务,MaxCompute将于北京时间2023年03月01日(周三)起按区域为用户设置Tunnel共享资源组最大并发值。
目前MaxCompute各区域均提供公共的Tunnel共享资源组,供该区域用户做数据上传下载使用。本次举措旨在解决由区域内个别用户用量突然增加致使本区域Tunnel共享资源被占用,从而导致本区域其他用户申请不到资源的问题。详情请参见数据传输服务(上传)场景与工具。
感谢您的配合!
2023年01月09日-大数据计算服务MaxCompute Subscription存储服务计费异常修复公告
尊敬的大数据计算服务MaxCompute用户:
由于MaxCompute Subscription存储服务的计费配置异常,您此前使用MaxCompute Subscription存储服务的扣费低于基于官网计费机制计算的实际消费金额(该异常不影响MaxCompute Subscription存储服务的使用)。我们将于2023年1月18日(UTC+8)修复该异常,修复后您使用MaxCompute Subscription存储服务的计费将与官网计费机制保持一致,您可通过账单明细查看费用详情。MaxCompute Subscription存储服务的计费规则请见 存储费用(按量计费)。
2022年10月13日-MaxCompute Schema功能开放试用公告
尊敬的MaxCompute用户:
MaxCompute Schema功能于北京时间2022年10月13日(周四)起开始开放试用。
MaxCompute推出Schema对Table、Resource、UDF进行归类,Schema是处于Project之下,Table、Resource、UDF之上的对象。您可以在一个Project下创建多个Schema对数据按业务分类存放,功能说明和使用请参见Schema操作。
新功能在全站已开放,如需申请试用,请参见新功能试用申请。
感谢您的配合!
2022年10月10日-MaxCompute包年包月商品到期停机策略修改公告
尊敬的MaxCompute用户:
MaxCompute国际站包年包月规格商品将于北京时间2022年10月10日(周一)开始修改到期停机策略。
原策略为:到期后若未及时续费,则15天后会停止您的MaxCompute服务,停服后的第15天将会释放资源(所有MaxCompute项目的数据会丢失并且不可恢复)。
新策略为:到期后若未及时续费则立即停止您的MaxCompute服务,停服后若一直未续费激活,则第15天会释放资源(所有MaxCompute项目的数据会丢失并且不可恢复)。
新策略下系统仍然会在商品到期前7天、3天、1天提醒或通知您:请及时续费。同时建议您设置自动续费,避免因续费不及时对您的服务造成影响。
感谢您的配合!
2022年08月30日-MaxCompute odpscmd日常升级运维公告
尊敬的MaxCompute用户:
MaxCompute odpscmd组件将于北京时间2022年08月30日(周二)10:30:00 ~ 11:00:00 升级新加坡、香港地域,北京时间2022年08月31日(周三)10:30:00 ~ 11:00:00 升级上海金融云、香港政务云、深圳金融云地域。在升级过程中通过DataWorks提交的MaxCompute任务小概率会出现ClassNotFound
、NoClassDefFoundError
等Java类加载异常,出现异常后重试任务即可。此次升级带来的不便,望您谅解。
2022年08月24日-SAMPLE函数升级
SAMPLE函数升级前, sample(10,1)
这类用法的返回结果符合预期,但是后面如果跟上具体Hash列,返回的结果条目数量有可能有误,如果数据分布在大整数范围内,如(10187140, 10189550, 1018910)
, 则返回结果均为True, 不符合预期。
SAMPLE函数升级后,修正了Hash算法的Final处理方式,优化生成结果的散列效果,避免造成数据分布不均的问题。但可能会与之前旧版本产生结果不相同的问题,注意此问题不是正确性问题,示例如下。
--对于如下SQL语句
select count(*) from (values (10024350), (14564560), (12243560)) as X(a) where sample(10, 1, a)=true;
--升级前返回结果为:
+------------+
| _c0 |
+------------+
| 0 |
+------------+
--升级后返回结果为:
+------------+
| _c0 |
+------------+
| 1 |
+------------+
SAMPLE函数详细使用说明请参见SAMPLE。
2022年08月11日-MaxCompute 1.0兼容模式下线公告
尊敬的MaxCompute用户:
自2017年7月起,MaxCompute秉承为客户提供更优的产品服务,陆续进行了MaxCompute2.0引擎升级。
在MaxCompute2.0稳定运行5年后,基于产品生命周期策略的考虑,MaxCompute1.0兼容模式将于北京时间2022年12月20日24:00:00正式下线。
MaxCompute2.0较1.0版本执行更严格的语法检测,所以在MaxCompute1.0编译器下可以正常执行的不严谨语法在MaxCompute2.0中则会报错,具体报错信息及解决方案请参见报错信息及解决方案。
自本通知发布到MaxCompute1.0兼容模式正式下线期间,如果您的代码存在撰写不够规范、严谨的情况,请您尽快修改相关的SQL代码。您可通过设置Session flag(set odps.sql.planner.mode=lot;
)验证SQL代码在MaxCompute2.0引擎下是否可成功执行。
期间您有任何相关问题需要协助,可以通过您的专属钉群、MaxCompute开发者钉钉群。MaxCompute开发者钉钉群二维码如下。
感谢您对MaxCompute的支持!
2021年11月29日-专有网络连接管理产品化发布
MaxCompute支持通过外部表、UDF及湖仓一体等功能访问VPC网络,需要先开通MaxCompute和目标IP或服务,例如Hbase、RDS、Hadoop集群等连通目标的网络连接。
专有网络连接管理于2021年11月29日在上海、杭州、北京、深圳、张家口地域进行产品化发布。专有网络连接管理支持阿里云账号(主账号)或拥有tenant的Super_Administrator和Admin角色的RAM用户(子账号)通过MaxCompute控制台的网络资源和用户管理页签进行网络连接管理和管理员授权。专有网络连接具体操作步骤请参见网络开通流程。对管理员进行授权请参见角色规划和将角色赋予用户。
2021年11月1日-查询加速MCQA查询缓存机制商业化发布
对于每个MCQA查询作业,MaxCompute会在内部创建临时数据集来缓存查询结果。使用相同查询的时候会优先使用缓存的结果。缓存结果按每个查询进行维护,使用缓存结果不会产生任何存储及计算费用,在降低使用费用的同时,还可大幅加快执行速度。
2021年10月15日-MaxCompute运维管家维护通知
MaxCompute运维管家将于中国北京时间(东八区)2021年10月15日22:00~24:00进行后台维护,期间MaxCompute管家的配额管理、作业运维等功能暂不可使用,您可在维护工作完成后再继续使用,感谢您的配合!
2021年10月15日-备份与恢复功能商业化
自2021年10月15日起,MaxCompute开始对备份的数据按量计费。
计费规则如下:
MaxCompute项目默认自动备份并保留1天内变化的数据版本,且1天内的备份存储免费。即默认情况下,MaxCompute项目免费提供数据保留周期为1天的自动备份能力。
当项目管理员修改备份保留周期超过1天时,MaxCompute将对超过1天的备份数据按量计费,单价为0.0006 USD/GB/天。
更多备份恢复功能信息,请参见备份与恢复。更多存储计费信息,请参见存储费用(按量计费)。
2021年9月10日-UPDATE、DELETE和MERGE INTO功能商业化
自2021年9月10日起,MaxCompute SQL的UPDATE、DELETE和MERGE INTO功能结束免费公测,开始正式计费。已经使用UPDATE、DELETE和MERGE INTO功能的按量计费作业,届时会产生计算费用。如果您之前因为担心公测稳定性问题而暂未使用UPDATE、DELETE和MERGE INTO功能,届时可以放心使用。MaxCompute为UPDATE、DELETE和MERGE INTO功能的相关可用性、稳定性等提供与MaxCompute SQL能力同等的保障。
计费规则如下:
如果MaxCompute项目的计费模式为包年包月,计算费用不单独收费。
如果MaxCompute项目的计费模式为按量计费,计算费用计算规则调整为:单条SQL计算费用=计算输入数据量×SQL复杂度×单价0.0438 USD/GB。其中:SQL复杂度通过SQL关键字个数折算。SQL关键字个数=JOIN个数+GROUP BY个数+ORDER BY个数+DISTINCT个数+窗口函数个数+
MAX(INSERT个数|UPDATE个数|DELETE个数-1, 1)
。
如果您担心费用超出预期,可以配置消费监控告警控制消费。更多监控告警信息,请参见消费控制。
您还需要注意如下内容:
如果MaxCompute项目的计费模式为按量计费,MaxCompute会根据UPDATE、DELETE和MERGE INTO语句扫描的输入数据量×SQL复杂度×单价计算费用。当您对Transactional表执行更新或删除操作后会生成Delta文件,Delta文件积累较多后会造成数据膨胀并影响读取性能,也会逐渐增大扫描数据量,增加费用。即使MaxCompute项目的计费模式为包年包月,也会占用更多资源,影响后续作业执行效率。您可以通过Compact方法合并Delta文件,更多语法信息请参见合并Transactional表文件。
MaxCompute会按照批处理方式执行
delete
、update
作业,每一条语句都会使用资源并产生费用,建议您使用批量方式删除或更新数据,请参见更新或删除数据(UPDATE | DELETE)。命令示例如下。--推荐方案:使用关联方法,一次改写或删除所有需要操作的数据。 update table1 set col1= (select value1 from table2 where table1.id = table2.id and table1.region = table2.region); --不推荐方案:逐行操作。 update table1 set col1=1 where id='2021063001'and region='beijing'; update table1 set col1=2 where id='2021063002'and region='beijing'; ......
2021年4月20日-新建MaxCompute项目支持标准的OUTER JOIN ON行为
变更前,无论是否是OUTER JOIN,ON条件中针对单个表的过滤条件,都会在JOIN操作之前对数据进行过滤。例如如下代码中Script 1、Script 2和Script 3的结果是一致的。
--构造数据。
CREATE TABLE t1 AS SELECT * FROM VALUES (1, 20180101),(2, 20180101),(2, 20180102) t (key, ds);
CREATE TABLE t2 AS SELECT * FROM VALUES (1, 20180101),(3, 20180101),(2, 20180102) t (key, ds);
--Script 1:过滤条件在ON中。
SELECT t1.*,t2.*
FROM t1
LEFT OUTER JOIN t2
ON t1.key = t2.key and t1.ds='20180101';
--Script 2:过滤条件在子查询中。
SELECT a.*,t2.*
FROM (SELECT * FROM t1 WHERE t1.ds='20180101') a
LEFT OUTER JOIN t2
ON a.key = t2.key;
--Script 3:过滤条件在WHERE子句中。
SELECT t1.*,t2.*
FROM t1
LEFT OUTER JOIN t2
ON t1.key = t2.key
WHERE t1.ds='20180101';
这是一个非标准的行为。在Script 1中,如果t1.ds中有不是20180101
的值,在标准情况下,LEFT OUTER JOIN应该保留左表全部的值,左关联t2表的数据,匹配返回对应行的数据或返回NULL。但Script 2或Script 3中,t1.ds中不是20180101
的值会被过滤掉不再输出,与Script 1的结果不一致。
为兼容标准行为,MaxCompute将修改该默认行为。如果您需要对t1表数据过滤,则应该使用Script 2或Script 3方式。
自2021年4月20日及之后新创建的MaxCompute项目中,OUTER JOIN ON中的过滤条件将不再放在JOIN操作之前进行过滤。对于2021年4月20日之前创建的存量MaxCompute项目,会保留变更前的行为,以免变更对存量作业造成影响。对于存量的MaxCompute项目,推荐您使用变更后的行为方式,设置方法如下:
Session级别:在SQL语句前增加
set odps.task.sql.outerjoin.ppd=true;
命令,与SQL语句一起提交。Project级别:您可以在钉钉群联系MaxCompute技术支持团队将您的项目中的
odps.task.sql.outerjoin.ppd
配置修改为True。
您可以通过如下示例判断当前MaxCompute项目采用了哪种行为。
--基于上文构造数据。
SELECT t1.*, t2.*
FROM t1 FULL OUTER JOIN t2
ON t1.key = t2.key and t1.ds='20180101' and t2.ds='20180101';
--旧的行为返回结果如下。
| key | ds | key2 | ds2 |
+------------+------------+------------+------------+
| 2 | 20180101 | NULL | NULL |
| 1 | 20180101 | 1 | 20180101 |
| NULL | NULL | 3 | 20180101 |
--新的行为返回结果如下。
| key | ds | key2 | ds2 |
+------------+------------+------------+------------+
| NULL | NULL | 2 | 20180102 |
| 2 | 20180101 | NULL | NULL |
| 2 | 20180102 | NULL | NULL |
| 1 | 20180101 | 1 | 20180101 |
| NULL | NULL | 3 | 20180101 |
2021年4月20日-新建项目的GET_JSON_OBJECT返回行为由JSON保留字符转义变为保留原始字符串
变更前,GET_JSON_OBJECT函数对于字符串类型的返回结果采用了转义的方式进行输出,导致诸如换行符(\n)、引号(")等JSON保留字符使用字符串'\n'
、'\"'
显示,这是一个非标准的行为。
变更后,GET_JSON_OBJECT函数会保留原始的字符串,返回行为更标准,处理数据更方便,性能更好。返回值仍是一个JSON字符串,可以继续当做JSON来解析,而不再需要额外使用REPLACE或REGEXP_REPLACE等函数替换反斜线。
自2021年4月20日及之后新创建的MaxCompute项目中,GET_JSON_OBJECT函数的返回行为默认为保留原始字符串。2021年4月20日之前创建的MaxCompute项目中,GET_JSON_OBJECT函数的返回行为默认为JSON保留字符转义,以免行为变更对存量作业造成影响。
您也可以通过以下示例判断MaxCompute项目中GET_JSON_OBJECT函数采用了哪种行为,执行命令如下:
select get_json_object('{"a":"[\\"1\\"]"}', '$.a');
--JSON保留字符转义的行为返回:
[\"1\"]
--保留原始字符串的行为返回:
["1"]
推荐您使用变更后的行为方式:
Session级别:在SQL语句前增加
set odps.sql.udf.getjsonobj.new=true;
命令,与SQL语句一起提交。Project级别:您可以在钉钉群中联系MaxCompute技术支持团队,将您的项目中的GET_JSON_OBJECT函数返回行为切换为保留原始字符串的行为。
更多GET_JSON_OBJECT函数信息,请参见字符串函数。
2020年12月14日-MaxCompute部分日期函数的输入参数校验行为变更
MaxCompute对部分日期函数的输入参数格式进行严格校验,避免异常输入带来的结果正确性或其它问题。该变更将于2020年12月14日到2021年1月30日陆续对国际站各个区域进行分批升级,请您提前评估项目中相关函数的已有用法,并为升级做准备。具体变更如下:
CAST(expr AS DATE)
函数行为变更升级前:DATE日期转换函数对输入的字符串检查不够严格,可以有非日期格式的字符作为输入参数。例如,执行如下查询语句:
select cast(a as date) from values ('2020-1x-19') t(a);
返回结果如下:
+------------+ | a | +------------+ | 2020-01-19 | +------------+
升级后:DATE日期转换函数对输入的字符串进行严格检查,要求年、月、日3个字段都必须是数字,如果是字母或空格都会被认为是非法输入,返回NULL。例如,执行如下查询语句:
select cast(a as date) from values ('2020-1x-19') t(a);
返回结果如下:
+------------+ | a | +------------+ | NULL | +------------+
TO_DATE
函数行为变更升级前:TO_DATE函数对输入的字符串检查不够严格,可以有非日期格式的字符作为输入参数。例如,执行如下查询语句:
select to_date(a) from values ('2020-1x-19') t(a);
返回结果如下:
+------------+ | _c0 | +------------+ | 2020-01-19 | +------------+
升级后:TO_DATE函数对输入的字符串进行严格检查,要求年、月、日3个字段都必须是数字,如果是字母或空格都会被认为是非法输入,返回NULL。例如,执行如下查询语句:
select to_date(a) from values ('2020-1x-19') t(a);
返回结果如下:
+------------+ | _c0 | +------------+ | NULL | +------------+
CAST(expr AS TIMESTAMP)
函数行为变更升级前:TIMESTAMP时间转换函数对输入的字符串检查不够严格,可以有非日期格式的字符作为输入参数。例如,执行如下查询语句:
select cast(a as timestamp) from values ('2020-11-19 16:3x:00.001') t(a);
返回结果如下:
+------------+ | a | +------------+ | 2020-11-19 16:03:00.1 | +------------+
升级后:TIMESTAMP时间转换函数对输入的字符串进行严格检查,要求年、月、日3个字段都必须是数字,如果是字母或空格都会被认为是非法输入,返回NULL。例如,执行如下查询语句:
select cast(a as timestamp) from values ('2020-11-19 16:3x:00.001') t(a);
返回结果如下:
+------------+ | a | +------------+ | NULL | +------------+
2020年10月13日-SQL兼容性升级
SQL兼容性升级时间预计如下,如有变更,请以实际通知时间为准。
批次 | 站点 | 升级时间 |
第一批 | 印度(孟买)、印度尼西亚(雅加达) 、英国(伦敦) | 10月13日 |
第二批 | 美国(弗吉尼亚)、阿联酋(迪拜)、华北2政务云(北京)、华东2金融云(上海) | 10月15日 |
第三批 | 日本(东京)、澳大利亚(悉尼)、美国(硅谷)、马来西亚(吉隆坡) | 10月20日 |
第四批 | 新加坡、中国(香港)、德国(法兰克福) | 10月22日 |
MaxCompute SQL中的URL_DECODE
和CONV
函数升级,详细变更如下:
URL_DECODE
函数升级前:如果
URL_DECODE
函数存在两个参数,第二个编码参数不生效,系统按照UTF-8编码格式解码,即URL_DECODE(url, "gbk")
等于URL_DECODE(url)
。升级后:如果
URL_DECODE
函数存在两个参数,系统首先按照百分号(%)解码,然后按照第二个编码参数的编码格式解码,返回结果字符串。在DataWorks数据开发环境运行命令的示例如下。SELECT URL_DECODE("%CD%F5", "gbk"); -- 升级前返回乱码。填写的编码参数GBK不生效,使用UTF-8编码格式解码。 -- 升级后返回“王”。\xCD\xF5是“王”的GBK编码。 SELECT URL_DECODE("%E7%8E%8B", "gbk"); -- 升级前返回“王”。%E7%8E%8B是“王”的UTF-8编码。填写的编码参数GBK不生效,仍然使用UTF-8编码格式解码。 -- 升级后返回NULL。\xE7\x8E\x8B不是合法的GBK编码。 SELECT URL_DECODE("%E7%8E%8B"); -- 升级前后都返回“王”。%E7%8E%8B是“王”的UTF-8编码。不填写编码参数,默认使用UTF-8编码格式解码。
说明在Windows环境下通过MaxCompute客户端(odpscmd)执行命令时,由于Windows环境存在
cmd
编码转换问题,可能会将GBK编码再次转换为其他编码。
CONV
函数如果项目空间为Hive兼容模式版本,对于非法输入参数,升级前后都返回0。
如果项目空间为1.0或2.0数据类型版本:
升级前:如果查询的表字段为非法参数,返回结果为乱码。
升级后:如果查询的表字段为非法参数,返回结果为NULL。
例如,
CONV("00e04c9d034a", 2, 10)
返回结果为NULL。
2020年7月24日-MaxCompute新增聚合函数
MaxCompute新增聚合函数APPROX_DISTINCT(value)
、ANY_VALUE(value)
、ARG_MAX(valueToMaximize, valueToReturn)
和ARG_MIN(valueToMinimize, valueToReturn)
。函数功能如下:
APPROX_DISTINCT(value)
:返回输入的非重复值的近似数目。ANY_VALUE(value)
:返回取值范围内的任意一个值。ARG_MAX(valueToMaximize, valueToReturn)
:返回valueToMaximize最大值对应行的valueToReturn。ARG_MIN(valueToMinimize, valueToReturn)
:返回valueToMinimize最小值对应行的valueToReturn。
新增聚合函数详情请参见聚合函数。
2020年7月29日-新增项目的默认数据类型版本从1.0变更为2.0
MaxCompute通过DataWorks控制台新增项目时,项目的默认数据类型版本从1.0变更为2.0。该变更将于2020年7月29日到2020年8月6日陆续对国际站各个区域进行升级。如果您之前创建过存量项目,新建项目时需要选择合适的数据类型版本。不同数据类型版本的项目进行数据交互时可能会引起兼容性问题。
MaxCompute有3个数据类型版本,不同数据类型版本在定义和行为上有一定的差异。MaxCompute将数据类型相关属性组成3个组合,分别对应1.0数据类型版本、2.0数据类型版本和Hive兼容数据类型版本。详情请参见数据类型版本说明。
此功能对存量项目的数据类型版本无影响。如果存量项目需要更新数据类型版本,请参见修改项目的数据类型版本。
2020年6月29日-新增项目支持选择数据类型版本功能上线
MaxCompute新增项目初始化数据类型版本的功能将于2020年6月29日到2020年7月15日陆续对国际站各个区域进行升级。升级完成后,您在创建新项目时,将需要选择初始化数据类型版本。
MaxCompute有3个数据类型版本,不同数据类型版本在定义和行为上有一定的差异。MaxCompute将数据类型相关属性组成3个组合,分别对应1.0数据类型版本、2.0数据类型版本和Hive兼容数据类型版本。详情请参见数据类型版本说明。
此功能对存量项目的数据类型版本无影响。如果存量项目需要更新数据类型版本,请参见修改项目的数据类型版本。
2020年3月15日-MaxCompute存储降价
MaxCompute于2020年3月15日开始,对现有的存储费用(按量计费)进行降价,降价原则:
将原来的5个阶梯价调成3个阶梯价,减少存储计费复杂度。
将新阶梯单价调低,最终达到降价目的。
2020年3月15日前,原存储阶梯价如下。
存储量 | 阶梯单价 | 固定价 |
大于0 GB小于等于1 GB | 不涉及 | 0.00 USD/天 |
大于1 GB小于等于100 GB | 0.0028 USD/GB/天 | 不涉及 |
大于100 GB小于等于1 TB | 0.0014 USD/GB/天 | 不涉及 |
大于1 TB小于等于10 TB | 0.0013 USD/GB/天 | 不涉及 |
大于10 TB小于等于100 TB | 0.0011 USD/GB/天 | 不涉及 |
大于100 TB | 0.0009 USD/GB/天 | 不涉及 |
2020年3月15日起,新存储阶梯价如下。
存储量 | 阶梯单价 | 固定价 |
大于0 GB小于等于1 GB | 不涉及 | 0.00 USD/天 |
大于1 GB小于等于10 TB | 0.0011 USD/GB/天 | 不涉及 |
大于10TB小于等于100 TB | 0.0009 USD/GB/天 | 不涉及 |
大于100 TB | 0.0006 USD/GB/天 | 不涉及 |
存储计费统计方式不变,更多信息请参见存储费用(按量计费):
存储到MaxCompute的数据,包括表(Table)和资源(Resource)等,会按照其数据容量的大小进行阶梯计费,计费周期为天。
以小时级别采集您每个项目空间下当前的存储使用情况,并以项目空间为基本单位,计算您当天的存储平均值再乘以单价。由于MaxCompute以项目空间为基本单位计算您当天的存储平均值。因此数据越集中存放在某个项目空间中,存储费用会越低。
假设您的某个项目的每天存储平均值为1 PB,原阶梯单价每天收取的费用如下。
(100-1)GB*0.0028 USD/GB/天
+(1024-100)GB*0.0014 USD/GB/天
+(10240-1024)GB*0.0013 USD/GB/天
+(102400-10240)GB*0.0011 USD/GB/天
+(10240*10240-102400)GB*0.0009 USD/GB/天
=966.486 USD/天
新阶梯单价每天收取费用如下:
(10240-1)GB*0.0011 USD/GB/天
+(102400-10240)GB*0.0009 USD/GB/天
+(10240*10240-102400)GB*0.0006 USD/GB/天
=661.9125 USD/天
2020年2月24日-SQL兼容性升级
SQL兼容性升级时间预计如下,如有变更,请以实际通知时间为准。
批次 | 站点 | 升级时间 |
第一批 | 印度尼西亚(雅加达) 、英国(伦敦)、印度(孟买) | 2月24日 |
第二批 | 中东东部 1(迪拜)、美国东部 1(弗吉尼亚)、华北2政务云(北京)、中国(香港) | 2月26日 |
第三批 | 马来西亚(吉隆坡)、日本(东京)、德国(法兰克福) | 3月2日 |
第四批 | 美国西部1(硅谷)、亚太东南1(新加坡)、亚太东南2(悉尼) | 3月4日 |
GET_IDCARD_AGE函数行为变更:
Get_Idcard_Age函数规则中”如果当前年份减去出生年份差值大于100则返回NULL“,升级为“返回年份减去出生年份差值”,即不存在大于100则返回NULL的情况。例如,
get_idcard_age('110101190001011009')
结果返回NULL,升级后结果为120。如果您希望升级后,该函数返回结果保留现状,则需要找出对应的查询,评估后进行改造。可以通过
get_idcard_age
结果加IF函数或者CASE WHEN表达式来解决。原始查询
修改后查询
GET_IDCARD_AGE(idcardno)
if(GET_IDCARD_AGE(idcardno) > 100, NULL, GET_IDCARD_AGE(idcardno))
GET_IDCARD_AGE(idcardno)
CASE WHEN GET_IDCARD_AGE(idcardno) > 100 THEN NULL ELSE GET_IDCARD_AGE(idcardno) END
CONCAT_WS函数行为变更:
升级前,在查询运行时CONCAT_WS函数没有打开Hive兼容并且有3个及以上参数,其中有一个参数是ARRAY类型时,参数中的
array item
不会出现在最终的结果中。例如,concat_ws(',', array('a'), array('b', 'c'))
,期望结果为"a,b,c"
,但是当前结果为",,,"
。升级后,无需打开Hive兼容,CONCAT_WS的参数支持STRING类型和ARRAY类型混合。
concat_ws(',', array('a'), array('b', 'c'))
的结果为"a,b,c"
。
Like%%
查询输入为空时返回值变更。Like字符匹配函数,当它的输入是空字符串,而Pattern是
%%
时,当前返回为False;升级后,则返回True。--创建表,向表中插入空字符串。 create table if not exists table_test (a string) lifecycle 3; insert into table table_test values (''); select a like '%%' from table_test; --当前返回如下。 +------+ | _c0 | +------+ | false | +------+ --升级后返回如下。 +------+ | _c0 | +------+ | true | +------+
2019年12月25日-开源地理空间UDF
MaxCompute支持兼容ESRI专门为Apache Hive实现的开源地理空间UDF,您可以将此开源地理空间UDF注册到MaxCompute中,以兼容开源Hive UDF的方式实现地理空间函数使用,详情请参见UDF(地理空间)。
2019年10月11日-MaxCompute SQL新功能
JOIN与SETOP支持括号指定优先级
SELECT * FROM src JOIN (src2 JOIN src3 on xxx) ON yyy; SELECT * FROM src UNION ALL (SELECT * FROM src2 UNION ALL SELECT * FROM src3);
支持odps.sql.orderby.position.alias以及odps.sql.groupby.position.alias
当打开这两个Flag的时候,对应ORDER BY和GROUP BY中的整型常量被当做SELECT的列序号处理。
表src的列为key和value SELECT * FROM src ORDER BY 1; --等同于 SELECT * FROM src ORDER BY key;
详细内容请参见SELECT语法。
新增内置函数
新增内置函数
STRING JSON_TUPLE(STRING json,STRING key1,STRING key2,…)
:传入一组key和一个JSON字符串,返回一个元组。JSON_TUPLE()
支持包含中文的JSON数据解析,支持多层嵌套以及包含多重嵌套的数组的JSON数据解析。在需要对同一个JSON字符串多次解析的情况下,相比于多次调用get_json_object,json_tuple可以一次输入多个key,且JSON字符串只被解析一次,效率更高。 详情请参见字符串函数。新增内置函数
INT EXTRACT(datepart from timestamp)
:提取日期的一部分,datepart支持YEAR、MONTH、DAY等时间描述,timestamp 为Timestamp类型数据。 详细请参见日期与时间函数。
支持指定表的列默认值
DEFAULT VALUE允许您创建TABLE的时候指定默认值,INSERT的时候如果不指定该列,则插入默认值,举例如下。
CREATE TABLE t (a bigint default 10, b bigint); INSERT INTO TABLE t(b) SELECT 100; --等同于 INSERT INTO TABLE t(a, b) SELECT 10, 100;
支持自然连接
自然连接(Natural Join)即参与JOIN的两张表根据字段名字自动决定连接字段。支持
outer natural join
,支持使用using
字段执行JOIN,输出字段中公共字段只出现一次,举例如下。--表src的列(key1, key2, a1, a2),表src2的列(key1, key2, b1, b2) SELECT * FROM src NATURAL JOIN src2; --由于 src 和 src2 有两个同名字段 (key1, key2) ,所以上面的JOIN相当于: SELECT src.key1 as key1, src.key2 as key2, src.a1, src.a2, src2.b1, src2.b2 FROM src INNER JOIN src2 ON src.key1 = src2.key1 AND src.key2 = src2.key2;
详细请参见JOIN。
支持LIMIT OFFSET
OFFSET语句和ORDER BY LIMIT语句配合,可以指定跳过OFFSET数目的行。如下面的语句将
src
按照key
从小到大排序后,输出第11到第20行 (OFFSET 10指定跳过前10行,LIMIT 10指定最多输出10行)。SELECT * FROM src ORDER BY key LIMIT 10 OFFSET 10;
详细请参见SELECT语法。
其他内置语法结构
支持IS DISTINCT FROM语法结构:
a is distinct from b
相当于not(a <=> b)
,a is not distinct from b
相当于a <=> b
。支持字符串连接操作符(||):
a || b || c
相当于concat(a, b, c)
。
详细请参见运算符。
分区合并
MaxCompute有分区数量上限6万的限制,当分区数量过多时,可使用合并分区功能,对数仓数据进行归档,降低分区数量。合并分区功能会将同一个表下多个分区数据快速合并成一个分区,并删除之前分区,把数据移动到指定的分区下。语法格式如下,详细内容请参见分区和列操作。
ALTER TABLE <tableName> MERGE [IF EXISTS] PARTITION(<predicate>) [, PARTITION(<predicate2>) ...] OVERWRITE PARTITION(<fullPartitionSpec>) ;
Add/Drop Partitions
支持一次性增加或者删除多个分区,语法格式如下。
ALTER TABLE t ADD [IF NOT EXISTS] PARTITION (p = '1') PARTITION (p = '2'); ALTER TABLE t DROP [IF EXISTS] PARTITION (p = '1'), PARTITION (p = '2'); --注意ADD多个分区之间没有逗号,DROP的多个分区间有逗号。
2019年8月29日-外表自定义storagehandler实现Outputer接口升级
北京时间2019年8月29日,MaxCompute进行版本升级。期间,您在使用外表自定义storagehandler实现Outputer接口时,如果通过列名而非数字下标获取列数据,可能会引起作业失败。
升级时间:北京时间,2019年8月29日14:00~23:00
升级Region:美国西部1(硅谷)、亚太东南1(新加坡)
2019年8月21日-外表自定义storagehandler实现Outputer接口升级
北京时间2019年8月21日,MaxCompute进行版本升级。期间,您在使用外表自定义storagehandler实现Outputer接口时,如果通过列名而非数字下标获取列数据,可能会引起作业失败。
升级时间:北京时间,2019年8月21日14:00~23:00
升级Region:亚太东北1(东京)、欧洲中部1(法兰克福)、中国(香港)、亚太东南2(悉尼)
影响原因:Outputer.output(Record record)
中,传入的record为Outputer的上一个Operator产生的记录,列名可能发生变化,系统无法保证固定列名。
例如,表达式some_function(column_a)
产生的列名是一个临时列名。因此,使用record.get(列名)
方式来获取列内容的用法都有可能受到影响,建议使用record.get(index)方式
获取。Outputer里如需获取表的列名,请调用 DataAttributes.getFullTableColumns()
。
2019年7月24日-MaxCompute Spark开放
开放Region:华东1、华北2、华南1、美西1、中国(香港)、德国、新加坡、印度。
2019年3月26日-SQL语言功能升级
支持Grouping Set多维聚合分析(Cube,Roll up),适配需要对a列做聚合,也要对b列做聚合,或者同时要按照a、b两列做聚合的场景。具体的使用方法请参见GROUPING SETS。
支持INTERSECT/MINUS/EXCEPT,具体使用方法请参见交集(INTERSECT)、并集(UNION)和补集(EXCEPT)。
通过外表读取OSS上的ORC和Parquet格式的文件时,支持对文件的列裁剪,有效减少IO量,节省计算资源和成本。
Java UDX类型系统增强:UDF支持Writable参数,具体使用方法请参见UDF开发(Java)。
SQL性能优化
DynamicDAG:动态优化的必要机制,它可以将一个优化(可能是资源配置或算法选择)延迟到运行时,以便提高优化的精准度,降低产生较差计划的可能性。
ShuffleRemove Optimization:针对Shuffle的优化。 从本次版本升级开始,MaxCompute将支持对inner join时右表key相同的场景进行Shuffle Remove优化。
2019年3月1日-MaxCompute 外部表开始收费
从2019年3月1日开始,MaxCompute SQL外部表(处理OSS/Table Store数据)功能开始计费。
计费标准为:
一次SQL计算费用=计算输入数据量*SQL价格
SQL价格为0.0044 USD/GB。当天的所有计量信息在第二天做一次性汇总收费,并直接体现在您的账户账单中。详情请参见计费项与计费方式概述。
2019年1月15日16:00~20:00-中国(香港)Region底层优化
为向您提供更好的产品性能和稳定性,MaxCompute将于北京时间2019年1月15日16:00~20:00对中国(香港)Region底层元数据仓库组件进行优化。在优化期间,中国(香港)Region用户的应用可能出现1分钟左右任务无法提交、运行中任务失败的情况。极端情况下,应用不可用时间将延长至30分钟。请您尽量避免在迁移窗口提交作业。其他Region不受影响。如果您有任何问题,可随时通过企业钉钉群反馈。
2018年12月24日-MaxCompute支持时区配置
MaxCompute Project时区默认是中国的东八区,在用到DATETIME、TIMESTAMP或DATE类型相关的字段以及相关时间内置函数都是按东八区进行计算,2018年12月24日MaxCompute开始支持时区配置,有以下两种方式:
Session级别:
set odps.sql.timezone=<timezoneid>;
,该语句需要与计算语句一起提交。set odps.sql.timezone=Asia/Tokyo; select getdate(); --结果如下。 output: +------------+ | _c0 | +------------+ | 2018-10-30 23:49:50 | +------------+
Project级别:
setProject odps.sql.timezone=<timezoneid>;
,该语句需要Project Owner执行。执行此命令后该Project下相关的时间计算就会取设置后的时区,因此对于原有的任务数据会有影响,所以该操作需谨慎。建议仅对新增Project进行设置,对已有数据的Project不设置。
使用限制及注意事项:
时区配置支持范围为:SQL内置日期函数、UDF、UDT、UDJ、
select transform
都支持获取Project Timezone属性来支持时区。时区支持的格式为
Asia/Shanghai
(存在夏令时跳变),不支持GMT+9格式。当SDK时区与Project时区不同时,DATETIME类型转化为STRING类型操作需设置GMT时区。
时区配置后,通过DataWorks执行相关SQL时,日期显示某些时间段会有时间差异。例如,1900~1928年的日期时间差异5分52秒,1900年之前的日期时间差异9秒。
为了保证MaxCompute在多个时区DATETIME类型数据的正确性,MaxCompute服务、Java SDK以及配套的客户端将在近期进行版本更新(
-oversea
后缀的Java SDK、客户端版本),更新后可能影响MaxCompute中已经存储的早于1928年的DATETIME类型数据的显示。建议(非中国东八区的Region)同步更新Java SDK、客户端版本,以便保证SQL计算结果及Tunnel传输数据在1900-01-01之后范围的准确性和一致性。而对于早于1900-01-01的DATETIME数据,SQL的计算显示结果和Tunnel传输数据仍旧可能存在343秒的差异。对于新版本SDK、客户端之前已经上传的早于1928-01-01的DateTime数据,在新版本中会减少352秒。
如果继续沿用不带有
-oversea
后缀的SDK、客户端,将存在SQL计算结果和Tunnel传输数据存在差异的风险。例如,早于1900-01-01的数据差异为9秒,1900-01-01~1928-01-01的数据差异为352秒。说明Java SDK、客户端版本更新配置时区不影响DataWorks的时区配置,因此时区会存在差异,需要您对DataWorks中定时任务调度的影响进行计算评估。在日本Region,DataWorks服务器是GMT+9时区,在新加坡Region,DataWorks服务器是GMT+8时区。
通过JDBC连接的第三方客户端需要在客户端设置时区,保证与服务端时区设置一致性。
MapReduce支持时区功能。
Spark支持时区功能。
对于提交到MaxCompute计算集群的任务形式,可以自动获取Project时区。
通过yarn-client模式启动(例如spark-shell,spark-sql,pyspark等)的设置,需要您手动配置Driver的启动参数(spark-defaults.conf),增加
spark.driver.extraJavaOptions -Duser.timezone=America/Los_Angeles
,Timezone是要使用的时区。
PAI支持时区功能。
Graph支持时区功能。