新闻详情

新闻详情

首页 / 资讯中心 / 详情

MaxCompute中STRUCT函数

发布时间:2026/9/28 20:50:50来源:尧图网络
MaxCompute中STRUCT函数
文章目录一、分类总览1、函数分类2、全部函数二、STRUCT基础1、定义2、区别3、简单记忆4、案例三、构造类1、定义2、区别3、简单记忆4、案例四、读取类1、定义2、区别3、简单记忆4、案例五、展开类1、定义2、区别3、简单记忆4、案例六、最容易混淆的函数对比七、常用案例1、构造业务对象2、获取指定字段3、使用点号访问字段4、ARRAY中存储STRUCT5、展开ARRAYSTRUCT6、将整行字段封装成STRUCT八、参考资料一、分类总览1、函数分类分类主要解决的问题代表函数1、构造类将多个不同类型字段组合成一个 STRUCTSTRUCT、NAMED_STRUCT2、读取类获取 STRUCT 中指定成员变量的值FIELD3、展开类将ARRAYSTRUCT展开为多行多列INLINE2、全部函数分类函数功能1、构造类STRUCT使用给定Value列表建立STRUCT。1、构造类NAMED_STRUCT使用给定的Name、Value列表建立STRUCT。2、读取类FIELD获取STRUCT中的成员变量的取值。3、展开类INLINE将指定的STRUCT数组展开。每个数组元素对应一行每行每个STRUCT元素对应一列。二、STRUCT基础内容说明STRUCT将多个不同类型的字段组合成一个逻辑对象FieldSTRUCT 内部字段Field NameSTRUCT 中字段名称Field ValueSTRUCT 中字段对应的值ARRAYSTRUCT多个 STRUCT 组成的数组可通过INLINE展开1、定义STRUCT 是 MaxCompute 的复杂数据类型之一。它适合把一组有业务关联、但类型可能不同的字段组合为一个整体。例如{ user_id: 10001, user_name: LiLei, married: F, weight: 63.5 }其类型可以表示为STRUCT user_id: BIGINT, user_name: STRING, married: STRING, weight: DOUBLE 2、区别STRUCT 与 ARRAY、MAP 的核心区别类型结构特点ARRAYT[v1,v2,v3]元素类型通常一致按位置组织MAPK,V{key:value}Key-Value 结构STRUCT...{field:value}固定字段结构不同字段可以是不同类型STRUCT 更像一行“小表记录”或一个对象。3、简单记忆ARRAY 一列值。MAP Key-Value。STRUCT 多字段对象。4、案例-- 结果{col1:a,col2:123,col3:true,col4:56.9}SELECTSTRUCT(a,123,true,56.90);三、构造类函数功能STRUCT使用给定Value列表建立STRUCT。NAMED_STRUCT使用给定的Name、Value列表建立STRUCT。1、定义STRUCT直接传入多个 Value 构造 STRUCT字段名自动生成。NAMED_STRUCT按照字段名、字段值成对传入可自定义 STRUCT 字段名称。此外MaxCompute 还支持STRUCT EXPRESSION写法STRUCT(1ASa,abcASb)它不是独立函数列表中的函数但在实际开发中很常用。2、区别对比区别STRUCT只能传 Value字段名自动生成col1、col2…NAMED_STRUCT可以明确指定字段名称STRUCT EXPRESSION可以通过AS直接给字段命名STRUCT(*)STRUCT EXPRESSION 还支持将整行字段构造成 STRUCT例如STRUCT(1L,abc)结果结构STRUCTcol1:BIGINT,col2:STRING而NAMED_STRUCT(id,1L,name,abc)结果结构STRUCTid:BIGINT,name:STRINGNULL 使用方面需要特别注意STRUCT函数不支持字段值直接为 NULL。NAMED_STRUCT不支持字段值直接为 NULL。如果需要构造包含 NULL 的 STRUCT可开启 BigQuery 兼容模式并使用 STRUCT EXPRESSION。3、简单记忆STRUCT 只给值字段名系统自动生成。NAMED_STRUCT Name Value字段名自己定。STRUCT EXPRESSION 用AS给字段命名。4、案例-- 结果{col1:a,col2:123,col3:true,col4:56.9}SELECTSTRUCT(a,123,true,56.90);-- 结果{user_id:10001,user_name:LiLei,married:F,weight:63.5}SELECTNAMED_STRUCT(user_id,10001,user_name,LiLei,married,F,weight,63.50);四、读取类函数功能FIELD获取STRUCT中的成员变量的取值。1、定义FIELD用于从 STRUCT 中获取指定成员变量的值。基本形式FIELD(struct_value,field_name)也可以在已知字段名称时使用点号访问struct_col.field_name2、区别对比区别FIELD(struct, name)通过函数和字段名获取 Valuestruct.name通过点号直接访问字段FIELD字段名以字符串参数传入点号访问SQL 更简洁适合字段结构明确的场景3、简单记忆FIELD 从 STRUCT 里拿一个字段。4、案例-- 结果helloSELECTFIELD(NAMED_STRUCT(f1,hello,f2,3),f1)ASresult;五、展开类函数功能INLINE将指定的STRUCT数组展开。每个数组元素对应一行每行每个STRUCT元素对应一列。1、定义INLINE用于展开ARRAYSTRUCT...数组中的每一个 STRUCT 对应输出一行STRUCT 中的每一个 Field 对应输出一列。因此INLINE同时完成了数组展开 STRUCT 字段展开。2、区别INLINE与EXPLODE很容易混淆。假设输入[ {id:1,name:A}, {id:2,name:B} ]函数输出EXPLODE两行每行还是一个 STRUCTINLINE两行并直接展开成id、name两列因此EXPLODE只负责把 ARRAY 拆成多行。INLINE不仅拆行还会把 STRUCT 字段拆成多列。3、简单记忆INLINEARRAYSTRUCT一次性展开成“行 列”。4、案例-- 结果-- 1 A-- 2 BSELECTINLINE(ARRAY(NAMED_STRUCT(id,1,name,A),NAMED_STRUCT(id,2,name,B)));六、最容易混淆的函数对比函数组合最核心区别STRUCTvsNAMED_STRUCT自动字段名 vs 自定义字段名STRUCTvsSTRUCT EXPRESSION只传 Value vs 可用AS指定字段名NAMED_STRUCTvsSTRUCT EXPRESSIONName-Value 参数形式 vs SQL 表达式形式FIELDvsstruct.field函数取字段 vs 点号直接取字段INLINEvsEXPLODEARRAYSTRUCT展开成多行多列 vs 只把 ARRAY 展开为多行STRUCTvsMAP固定字段结构 vs 动态 Key-ValueSTRUCTvsARRAY多字段不同类型对象 vs 同类元素序列七、常用案例1、构造业务对象-- 结果{shop_id:10001,shop_name:北京朝阳店,platform:美团}SELECTNAMED_STRUCT(shop_id,10001,shop_name,北京朝阳店,platform,美团)ASshop_info;2、获取指定字段-- 结果北京朝阳店SELECTFIELD(NAMED_STRUCT(shop_id,10001,shop_name,北京朝阳店),shop_name)ASshop_name;3、使用点号访问字段-- 结果10001SELECTt.shop_info.shop_idFROM(SELECTNAMED_STRUCT(shop_id,10001,shop_name,北京朝阳店)ASshop_info)t;4、ARRAY中存储STRUCT-- 结果包含两个门店对象的 ARRAYSELECTARRAY(NAMED_STRUCT(shop_id,10001,shop_name,北京店),NAMED_STRUCT(shop_id,10002,shop_name,上海店))ASshop_list;5、展开ARRAYSTRUCT-- 结果-- 10001 北京店-- 10002 上海店SELECTINLINE(ARRAY(NAMED_STRUCT(shop_id,10001,shop_name,北京店),NAMED_STRUCT(shop_id,10002,shop_name,上海店)));6、将整行字段封装成STRUCT-- 结果将当前记录的指定字段组合为一个 STRUCTSELECTSTRUCT(shop_idASshop_id,shop_nameASshop_name,cityAScity)ASshop_infoFROMshop_table;八、参考资料阿里云 MaxCompute 官方文档https://help.aliyun.com/zh/maxcompute/struct-functionSTRUCT 数据类型说明https://help.aliyun.com/zh/maxcompute/user-guide/struct-data-type
网站建设高端定制企业官网
RELATED

相关资讯

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

较早相关资讯

最新相关资讯

WorkBuddy国际版免费接入DeepSeek-V4.1-Flash:配置与实战指南 2026/9/28 23:29:14

WorkBuddy国际版免费接入DeepSeek-V4.1-Flash:配置与实战指南

最近圈子里讨论最多的,应该就是 WorkBuddy 国际版 把 DeepSeek-V4.1-Flash 直接放开免费额度这件事了。我第一时间装了国际版客户端试了一周多,整个过程比我想象的顺利。先说结论:这块免费模型不是拿来当噱头的摆设,日常写代码、改…

阅读更多 →
Pi Agent 从零安装到跑通:CLI、桌面端、源码一条龙实测指南 2026/9/28 23:29:13

Pi Agent 从零安装到跑通:CLI、桌面端、源码一条龙实测指南

上周发完《Pi Agent 从 0 到 1(一)》之后,我后台收到最多的留言不是“原理没看懂”,而是“我到底该怎么装?”说真的,我第一次装 Pi Agent 的时候也没那么顺利,官方文档把安装过程写得特别简略&a…

阅读更多 →
基于Flask的足球比赛数据分析与可视化平台构建实战 2026/9/28 23:29:13

基于Flask的足球比赛数据分析与可视化平台构建实战

1. 选题背后的真实考量:足球数据平台到底解决了什么问题做计算机毕设选题的时候,我见过太多人卡在第一步。有人跟着教程做了一个管理系统,答辩的时候评委问"你的系统解决了什么实际问题",答不上来;有人选了一…

阅读更多 →
DeepSeek生态实战:从Hermes微调到Harness编排部署指南 2026/9/28 23:29:13

DeepSeek生态实战:从Hermes微调到Harness编排部署指南

这阵子AI圈最热闹的话题,不是哪家大模型又刷榜,而是“DeepSeek迎来最强对手”的讨论在社区里炸开了锅。打开社交平台,“deepseek hermes”“codex接deepseek”“本地部署deepseek”“deepseek harness”连续挂了好几天热搜。有意思的是&#…

阅读更多 →
从视觉塔到MoE:DeepSeek-V4.1-Flash多模态架构与部署实战 2026/9/28 23:29:13

从视觉塔到MoE:DeepSeek-V4.1-Flash多模态架构与部署实战

我其实很少对一个还没正式开源的版本这么上心。DeepSeek-V4.1-Flash 的灰度包放出来之后,我第一时间把它拉起来跑了一遍图片问答、截图理解、音频转写和视频帧混合输入测试,感受只有一个:多模态架构终于不是“把几个 Encoder 拼在一起”了。从…

阅读更多 →
UE5 C++多人射击:射线检测与命中点网络同步优化实践 2026/9/28 23:29:00

UE5 C++多人射击:射线检测与命中点网络同步优化实践

刚在项目里调一个手感问题:联机射击时,服务器上的射线检测明明命中了掩体,客户端拉回来的弹孔却飘在半空,跟实际瞄准点差出好几个厘米。查到最后,问题出在两个平时不太起眼的技术点上:射线检测的LinetraceB…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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