大数据计算MaxCompute我有一个字段是 event_body,结构如下
{
"startTime": "2023-11-02 19:05:44",
"startActionCode": "TripClaimAudit",
"startActionName": "审核差旅报销单",
"initData": {},
"actionList": [
{
"actionTime": "2023-11-02 19:05:44",
"actionCode": "TripClaimAudit",
"actionDesc": "审核差旅报销单"
},
{
"actionTime": "2023-11-02 19:06:29",
"actionCode": "TripClaimPayStrategy",
"actionDesc": "审核选择支付类型",
"actionData": 0
},
{
"actionTime": "2023-11-02 19:07:20",
"actionCode": "TripClaimPass",
"actionDesc": "通过差旅报销单"
}
],
"platform": 3,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/537.36",
"operatorId": 135013155632,
"displayName": "陈旭成",
"endTime": "2023-11-02 19:07:20",
"endActionCode": "TripClaimPass",
"endActionName": "通过差旅报销单",
"extraData": {}
}
josn 里边有字段 有数组
其中一个是actionList 是一个数组 我可以通过
get_json_object(event_body,'$.actionList[*]') as action_list, 我这么能获取到内容
但是我想要获取数组种元素的个数 如何做? 用size 报错 用str_to_array 后再size 告诉我没有用str_to_array的函数
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在MaxCompute中,你可以使用size
函数来获取数组的长度,即数组中元素的个数。但是需要注意的是,size
函数只能用于一维数组,对于多维数组,你需要先将其转换为扁平的一维数组,然后再使用size
函数。
在你的例子中,actionList
是一个JSON数组,你可以先使用get_json_object
函数将其转换为扁平的一维数组,然后使用size
函数获取其长度。具体的SQL语句如下:
select get_json_object(event_body,'$.actionList[*]') as action_list, size(action_list) as action_list_size from your_table;
在这个SQL语句中,get_json_object(event_body,'$.actionList[*]') as action_list
会将event_body
中的actionList
字段解析为扁平的一维数组,然后size(action_list) as action_list_size
会获取这个数组的长度。
size函数需要入参是array或者map类型,当前传入的是string类型,会有报错产生。
我研究一下怎么计算出array的长度
可以这样试下,我用上边发的测试数据试了下https://help.aliyun.com/zh/maxcompute/user-guide/string-functions?spm=a2c4g.11186623.0.0.56645be50VBJzv#section-143-hgq-bc6 ,此回答整理自钉群“MaxCompute开发者社区2群”
你可以使用json_object_keys
函数来获取数组中元素的个数。以下是一个示例:
SELECT json_object_keys(event_body) AS action_list, COUNT(*) AS count
FROM your_table;
这将返回一个包含actionList
和元素个数的表。
MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。