新闻详情

新闻详情

首页 / 资讯中心 / 详情

MaxCompute中STRUCT函数

发布时间:2026/11/13 18:05:34来源:尧图网络
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

相关资讯

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

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/13 0:43:49

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/13 10:09:00

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/13 13:31:48

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/13 16:11:45

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/13 0:02:27

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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