新闻详情

新闻详情

首页 / 资讯中心 / 详情

MaxCompute中ARRAY函数

发布时间:2026/9/28 20:49:51来源:尧图网络
MaxCompute中ARRAY函数
文章目录一、分类总览1、函数分类2、全部函数二、构造 / 生成类1、定义2、区别3、简单记忆4、案例三、判断 / 查找类1、定义2、区别3、简单记忆4、案例四、集合运算类1、定义2、区别3、简单记忆4、案例五、变换 / 过滤 / 排序类1、定义2、区别3、简单记忆4、案例六、合并 / 整形类1、定义2、区别3、简单记忆4、案例七、展开类1、定义2、区别3、简单记忆4、案例八、组合 / N元组类1、定义2、区别3、简单记忆4、案例九、聚合 / 归一化类1、定义2、区别3、简单记忆4、案例十、最容易混淆的函数对比十一、常用案例1、字符串拆分后判断是否包含值2、数组去重3、过滤无效值4、数组元素统一加工5、数组展开成明细行6、生成日期序列7、数组拼成字符串8、数组求和十二、参考资料一、分类总览1、函数分类分类主要解决的问题代表函数1、构造 / 生成类构造数组、重复元素、生成序列ARRAY、ARRAY_REPEAT、SEQUENCE2、判断 / 查找类判断元素、查位置、取元素、取最大最小ALL_MATCH、ANY_MATCH、ARRAY_CONTAINS、ARRAY_POSITION、INDEX、SIZE、ARRAY_MAX、ARRAY_MIN3、集合运算类去重、差集、交集、并集、重叠判断ARRAY_DISTINCT、ARRAY_EXCEPT、ARRAY_INTERSECT、ARRAY_UNION、ARRAYS_OVERLAP4、变换 / 过滤 / 排序类过滤、转换、删除、切片、排序、反转、随机排列FILTER、TRANSFORM、ARRAY_REMOVE、SLICE、ARRAY_SORT、SORT_ARRAY、REVERSE、SHUFFLE5、合并 / 整形类数组拼接、展开嵌套、按位置合并、转字符串CONCAT、FLATTEN、ARRAYS_ZIP、ZIP_WITH、ARRAY_JOIN6、展开类将数组一行展开成多行EXPLODE、POSEXPLODE7、组合 / N元组类生成组合、连续 N 元组COMBINATIONS、NGRAMS8、聚合 / 归一化类数组内部聚合、数值归一化ARRAY_REDUCE、ARRAY_NORMALIZE2、全部函数分类函数功能1、构造 / 生成类ARRAY使用指定值构造 ARRAY1、构造 / 生成类ARRAY_REPEAT将指定元素重复 N 次构造 ARRAY1、构造 / 生成类SEQUENCE按起点、终点和步长生成 ARRAY2、判断 / 查找类ALL_MATCH判断数组中是否所有元素都满足条件2、判断 / 查找类ANY_MATCH判断数组中是否存在元素满足条件2、判断 / 查找类ARRAY_CONTAINS判断数组是否包含指定值2、判断 / 查找类ARRAY_MAX返回数组最大值2、判断 / 查找类ARRAY_MIN返回数组最小值2、判断 / 查找类ARRAY_POSITION返回指定元素第一次出现的位置2、判断 / 查找类INDEX获取指定下标位置的元素2、判断 / 查找类SIZE返回数组元素数量3、集合运算类ARRAY_DISTINCT数组去重3、集合运算类ARRAY_EXCEPT计算 A 有、B 没有的元素并去重3、集合运算类ARRAY_INTERSECT计算两个数组交集3、集合运算类ARRAY_UNION计算两个数组并集并去重3、集合运算类ARRAYS_OVERLAP判断两个数组是否存在相同元素4、变换 / 过滤 / 排序类FILTER按条件过滤数组元素4、变换 / 过滤 / 排序类TRANSFORM对数组中每个元素执行转换4、变换 / 过滤 / 排序类ARRAY_REMOVE删除数组中的指定元素4、变换 / 过滤 / 排序类SLICE从指定位置切片数组4、变换 / 过滤 / 排序类ARRAY_SORT使用自定义比较器排序4、变换 / 过滤 / 排序类SORT_ARRAY按升序或降序排序4、变换 / 过滤 / 排序类REVERSE将数组元素倒序4、变换 / 过滤 / 排序类SHUFFLE随机打乱数组元素顺序5、合并 / 整形类CONCAT拼接多个 ARRAY5、合并 / 整形类FLATTEN将嵌套 ARRAY 展平为一层5、合并 / 整形类ARRAYS_ZIP多个数组按位置合并为结构数组5、合并 / 整形类ZIP_WITH两个数组按位置通过函数合并5、合并 / 整形类ARRAY_JOIN使用分隔符将数组元素拼接成字符串6、展开类EXPLODE将 ARRAY 一行展开为多行6、展开类POSEXPLODE将 ARRAY 展开为“下标 元素”多行7、组合 / N元组类COMBINATIONS生成数组元素的 N 元组合7、组合 / N元组类NGRAMS生成连续相邻元素的 N 元组8、聚合 / 归一化类ARRAY_REDUCE将数组元素聚合为一个结果8、聚合 / 归一化类ARRAY_NORMALIZE按指定 p 范数归一化数组二、构造 / 生成类函数功能ARRAY构造数组ARRAY_REPEAT重复元素构造数组SEQUENCE生成连续序列数组1、定义ARRAY将多个值按顺序构造成一个 ARRAY。ARRAY_REPEAT将同一个元素重复指定次数后组成 ARRAY。SEQUENCE按照起点、终点和步长生成 ARRAY可用于数值和日期序列。2、区别对比区别ARRAY手工指定每个元素ARRAY_REPEAT同一个元素重复 N 次SEQUENCE按规则自动生成连续序列3、简单记忆ARRAY 直接造数组。ARRAY_REPEAT 重复造数组。SEQUENCE 按规律生成数组。4、案例-- 结果[1,2,3]SELECTARRAY(1,2,3)ASarr;-- 结果[A,A,A]SELECTARRAY_REPEAT(A,3)ASarr;-- 结果[1,2,3,4,5]SELECTSEQUENCE(1,5)ASarr;三、判断 / 查找类函数功能ALL_MATCH是否全部满足条件ANY_MATCH是否至少一个满足条件ARRAY_CONTAINS是否包含指定元素ARRAY_POSITION指定元素第一次出现的位置INDEX根据数组下标取元素SIZE数组元素数量ARRAY_MAX最大元素ARRAY_MIN最小元素1、定义这一类用于判断数组内容、查找元素、获取指定位置或统计数组大小。2、区别对比区别ALL_MATCH所有元素都满足 Lambda 条件才返回 TRUEANY_MATCH至少一个元素满足 Lambda 条件就返回 TRUEARRAY_CONTAINS直接判断是否存在某个固定值ARRAY_POSITION返回指定值第一次出现的位置从 1 开始INDEX根据数组下标直接取元素下标从 0 开始SIZE只返回元素数量ARRAY_MAX / ARRAY_MIN直接取最大 / 最小元素最容易混淆的是ARRAY_POSITION找“值在哪”位置从1开始。INDEX是“知道下标取值”数组下标从0开始。3、简单记忆ALL 全部满足。ANY 有一个满足。CONTAINS 包不包含。POSITION 值的位置。INDEX 下标取值。SIZE 数量。MAX / MIN 最大 / 最小。4、案例-- 结果trueSELECTALL_MATCH(ARRAY(4,5,6),x-x3)ASresult;-- 结果trueSELECTANY_MATCH(ARRAY(1,2,100),x-x3)ASresult;-- 结果trueSELECTARRAY_CONTAINS(ARRAY(1,2,3),2)ASresult;-- 结果3位置从 1 开始SELECTARRAY_POSITION(ARRAY(3,2,1),1)ASpos;-- 结果b下标从 0 开始SELECTARRAY(a,b,c)[1]ASresult;-- 结果3SELECTSIZE(ARRAY(a,b,c))AScnt;-- 结果30SELECTARRAY_MAX(ARRAY(10,30,20))ASmax_value;-- 结果10SELECTARRAY_MIN(ARRAY(10,30,20))ASmin_value;四、集合运算类函数功能ARRAY_DISTINCT去重ARRAY_EXCEPT差集ARRAY_INTERSECT交集ARRAY_UNION并集ARRAYS_OVERLAP是否有交集1、定义这一类把 ARRAY 当成“集合”进行运算。2、区别假设A [1,2,3] B [2,3,4]函数结果含义ARRAY_DISTINCT(A)A 自身去重ARRAY_EXCEPT(A,B)A 中有、B 中没有ARRAY_INTERSECT(A,B)A 和 B 都有ARRAY_UNION(A,B)A 和 B 合并后去重ARRAYS_OVERLAP(A,B)只判断有没有共同元素3、简单记忆DISTINCT去重。EXCEPT差集。INTERSECT交集。UNION并集。OVERLAP只判断有没有交集。4、案例-- 结果[1,2,3]SELECTARRAY_DISTINCT(ARRAY(1,2,2,3))ASresult;-- 结果[1]SELECTARRAY_EXCEPT(ARRAY(1,2,3),ARRAY(2,3,4))ASresult;-- 结果[2,3]SELECTARRAY_INTERSECT(ARRAY(1,2,3),ARRAY(2,3,4))ASresult;-- 结果[1,2,3,4]SELECTARRAY_UNION(ARRAY(1,2,3),ARRAY(2,3,4))ASresult;-- 结果trueSELECTARRAYS_OVERLAP(ARRAY(1,2,3),ARRAY(3,4,5))ASresult;五、变换 / 过滤 / 排序类函数功能FILTER按条件过滤元素TRANSFORM对每个元素执行转换ARRAY_REMOVE删除指定元素SLICE数组切片ARRAY_SORT自定义比较器排序SORT_ARRAY直接升序 / 降序排序REVERSE数组倒序SHUFFLE随机打乱1、定义这一类用于对数组内部元素进行修改、筛选、排序或重新排列。2、区别对比区别FILTER保留满足条件的元素TRANSFORM每个元素都执行一次转换ARRAY_REMOVE直接删除某个指定值SLICE按位置截取一段数组ARRAY_SORT使用 Lambda 自定义排序逻辑SORT_ARRAY直接指定升序 / 降序更简单REVERSE直接倒序不做大小比较SHUFFLE随机重新排列最容易混淆SORT_ARRAY适合普通升降序。ARRAY_SORT适合需要自定义比较规则的场景。3、简单记忆FILTER 筛。TRANSFORM 改。REMOVE 删。SLICE 截。SORT 排。REVERSE 倒。SHUFFLE 随机打乱。4、案例-- 结果[2,3]SELECTFILTER(ARRAY(1,2,3),x-x1)ASresult;-- 结果[2,3,4]SELECTTRANSFORM(ARRAY(1,2,3),x-x1)ASresult;-- 结果[1,3]SELECTARRAY_REMOVE(ARRAY(1,2,2,3),2)ASresult;-- 结果[20,20,30]SELECTSLICE(ARRAY(10,20,20,30,40),2,3)ASresult;-- 结果[3,2,1]SELECTARRAY_SORT(ARRAY(1,3,2),(a,b)-CASEWHENabTHEN1WHENabTHEN-1ELSE0END)ASresult;-- 结果[3,2,1]SELECTSORT_ARRAY(ARRAY(1,3,2),false)ASresult;-- 结果[3,2,1]SELECTREVERSE(ARRAY(1,2,3))ASresult;-- 结果随机顺序例如 [2,1,3]SELECTSHUFFLE(ARRAY(1,2,3))ASresult;六、合并 / 整形类函数功能CONCAT拼接多个数组FLATTEN二维数组展开为一维ARRAYS_ZIP多个数组按位置合成 STRUCT 数组ZIP_WITH两个数组按位置通过函数合并ARRAY_JOIN数组元素拼成字符串1、定义这一类用于把多个数组合并、改变结构或者转换为字符串。2、区别对比区别CONCAT数组首尾直接连接FLATTENARRAYARRAY → ARRAYARRAYS_ZIP同位置元素合并为 STRUCTZIP_WITH同位置元素通过 Lambda 计算为新值ARRAY_JOINARRAY → STRINGARRAYS_ZIP与ZIP_WITHARRAYS_ZIP只是把相同位置元素“绑在一起”。ZIP_WITH会进一步对相同位置元素执行计算。3、简单记忆CONCAT 接起来。FLATTEN 拍平。ARRAYS_ZIP 按位置打包。ZIP_WITH 按位置计算。ARRAY_JOIN 拼成字符串。4、案例-- 结果[1,2,3,4]SELECTCONCAT(ARRAY(1,2),ARRAY(3,4))ASresult;-- 结果[1,2,3,4]SELECTFLATTEN(ARRAY(ARRAY(1,2),ARRAY(3,4)))ASresult;-- 结果[{0:1,1:4},{0:2,1:5},{0:3,1:NULL}]SELECTARRAYS_ZIP(ARRAY(1,2,3),ARRAY(4,5))ASresult;-- 结果[2,4,6,NULL]SELECTZIP_WITH(ARRAY(1,2,3),ARRAY(1,2,3,4),(x,y)-xy)ASresult;-- 结果A,B,CSELECTARRAY_JOIN(ARRAY(A,B,C),,)ASresult;七、展开类函数功能EXPLODEARRAY 展开为多行POSEXPLODEARRAY 展开为“下标 元素”多行1、定义EXPLODE把一行中的 ARRAY 拆成多行。POSEXPLODE在拆成多行的同时返回元素下标。这两个函数属于 UDTF。2、区别对比区别EXPLODE只返回元素POSEXPLODE返回下标 元素POSEXPLODE下标从 0 开始3、简单记忆EXPLODE 炸开。POSEXPLODE 炸开后还带 Position。4、案例-- 结果3 行分别为 A、B、CSELECTEXPLODE(ARRAY(A,B,C));-- 结果3 行分别为 (0,A)、(1,B)、(2,C)SELECTPOSEXPLODE(ARRAY(A,B,C));八、组合 / N元组类函数功能COMBINATIONS生成任意 N 元组合NGRAMS生成连续相邻 N 元组1、定义COMBINATIONS从整个数组中任选 N 个元素形成组合不要求相邻。NGRAMS只对相邻元素形成连续 N 元组。2、区别例如[A,B,C]取 2 个元素函数结果COMBINATIONS[A,B]、[A,C]、[B,C]NGRAMS[A,B]、[B,C]3、简单记忆COMBINATIONS 任意组合。NGRAMS 连续组合。4、案例-- 结果[[foo,bar],[foo,boo],[bar,boo]]SELECTCOMBINATIONS(ARRAY(foo,bar,boo),2)ASresult;-- 结果[[foo,bar],[bar,baz],[baz,foo]]SELECTNGRAMS(ARRAY(foo,bar,baz,foo),2)ASresult;九、聚合 / 归一化类函数功能ARRAY_REDUCE数组内部聚合ARRAY_NORMALIZE按 p 范数归一化1、定义ARRAY_REDUCE通过初始值和 Lambda将整个数组逐个元素聚合成一个结果。ARRAY_NORMALIZE将 FLOAT / DOUBLE 数组按照指定 p 范数进行归一化。2、区别对比区别ARRAY_REDUCE通用聚合可以自己定义逻辑ARRAY_NORMALIZE专门做数值向量归一化3、简单记忆REDUCE 多个元素压成一个结果。NORMALIZE 数值归一化。4、案例-- 结果6SELECTARRAY_REDUCE(ARRAY(1,2,3),0,(buf,e)-bufe,buf-buf)ASresult;-- 结果[0.125,0.25,0.625]SELECTARRAY_NORMALIZE(ARRAY(10.0,20.0,50.0),1.0)ASresult;十、最容易混淆的函数对比函数组合最核心区别ARRAYvsSEQUENCE手工构造数组 vs 按规律自动生成ARRAY_REPEATvsSEQUENCE重复同一个值 vs 生成连续序列ALL_MATCHvsANY_MATCH全部满足 vs 至少一个满足ANY_MATCHvsARRAY_CONTAINS按条件判断 vs 判断固定值是否存在ARRAY_POSITIONvsINDEX根据值找位置1 起始 vs 根据下标取值0 起始SIZEvsARRAY_POSITION数组长度 vs 元素位置ARRAY_DISTINCTvsARRAY_UNION单数组去重 vs 两数组合并并去重ARRAY_EXCEPTvsARRAY_INTERSECT差集 vs 交集ARRAY_INTERSECTvsARRAYS_OVERLAP返回共同元素 vs 只返回是否有共同元素FILTERvsARRAY_REMOVE按条件过滤 vs 删除固定值TRANSFORMvsARRAY_REDUCE每个元素转成新元素 vs 整个数组聚合成一个结果ARRAY_SORTvsSORT_ARRAY自定义比较器 vs 简单升降序REVERSEvsSORT_ARRAY(..., false)反转原顺序 vs 按值降序CONCATvsFLATTEN多个数组首尾拼接 vs 二维数组降一层ARRAYS_ZIPvsZIP_WITH同位置打包成 STRUCT vs 同位置按函数计算EXPLODEvsPOSEXPLODE只展开元素 vs 下标 元素COMBINATIONSvsNGRAMS任意 N 元组合 vs 连续 N 元组SLICEvsINDEX截取一段数组 vs 获取单个元素ARRAY_JOINvsCONCATARRAY→STRING vs ARRAY→ARRAY十一、常用案例1、字符串拆分后判断是否包含值-- 结果trueSELECTARRAY_CONTAINS(SPLIT(A,B,C,,),B)ASresult;2、数组去重-- 结果[A,B,C]SELECTARRAY_DISTINCT(ARRAY(A,B,A,C))ASresult;3、过滤无效值-- 结果[10,20,30]SELECTFILTER(ARRAY(10,-1,20,0,30),x-x0)ASresult;4、数组元素统一加工-- 结果[A,B,C]SELECTTRANSFORM(ARRAY(a,b,c),x-TOUPPER(x))ASresult;5、数组展开成明细行-- 结果一行拆为 3 行SELECTEXPLODE(ARRAY(美团,饿了么,京东))ASplatform;6、生成日期序列-- 结果[2026-09-01,2026-09-02,2026-09-03]SELECTSEQUENCE(DATE2026-09-01,DATE2026-09-03,INTERVAL1DAY)ASdate_list;7、数组拼成字符串-- 结果北京,上海,广州SELECTARRAY_JOIN(ARRAY(北京,上海,广州),,)AScity_list;8、数组求和-- 结果60SELECTARRAY_REDUCE(ARRAY(10,20,30),0,(sum_value,x)-sum_valuex,sum_value-sum_value)AStotal_amount;十二、参考资料阿里云 MaxCompute 官方文档https://help.aliyun.com/zh/maxcompute/array-function
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

动态面板空间杜宾模型:从理论识别到效应分解的完整实战指南 2026/9/28 21:30:25

动态面板空间杜宾模型:从理论识别到效应分解的完整实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
FPGA实战:数字锁相环DPLL原理与Verilog实现详解 2026/9/28 21:30:10

FPGA实战:数字锁相环DPLL原理与Verilog实现详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
AWS Strands Harness 开源框架:AI 编程代理成本降低 45% 的架构解析与实操 2026/9/28 21:30:10

AWS Strands Harness 开源框架:AI 编程代理成本降低 45% 的架构解析与实操

1. 这个工具到底在解决什么问题AI 编程代理这个赛道,从 2024 年下半年开始就卷得不像话。Claude Code 和 Codex 这两家几乎占据了绝大多数开发者的日常使用场景,但真正把账单拉出来看的人都知道,按 token 计费的模式在重度使用下有多烧钱。一…

阅读更多 →
Cadence Virtuoso入门:一阶RC低通滤波器设计与仿真全流程解析 2026/9/28 21:29:49

Cadence Virtuoso入门:一阶RC低通滤波器设计与仿真全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Python+KNN手写拼音识别课程设计:图像预处理与分类实战 2026/9/28 21:29:28

Python+KNN手写拼音识别课程设计:图像预处理与分类实战

简介:面向高校机器学习课程设计场景,这份基于Python开发的手写拼音识别资源以KNN(K最近邻)算法为分类核心,覆盖从手写图像输入到拼音类别输出的完整流程。包体包含2589个文件,主体为1649个txt与924个jpg&am…

阅读更多 →
ESP32-C3中GPIO8/GPIO9的I2C硬件直连原理与实战应用 2026/9/28 21:29:22

ESP32-C3中GPIO8/GPIO9的I2C硬件直连原理与实战应用

1. 为什么GPIO8和GPIO9在ESP32-C3-Super-Mini上“不按常理出牌”?刚拿到ESP32-C3-Super-Mini开发板时,我第一反应是——这板子太小了,小到连USB口都得靠Type-C转接线才能插稳。但真正让我停下调试进度、反复翻手册的,不是它的尺寸…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉