大数据计算MaxCompute我有一个字段是 event_body,如何做?

大数据计算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的函数

展开
收起
真的很搞笑 2023-12-03 19:20:11 99 分享 版权
3 条回答
写回答
取消 提交回答
  • 在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会获取这个数组的长度。

    2023-12-04 16:56:55
    赞同 展开评论
  • size函数需要入参是array或者map类型,当前传入的是string类型,会有报错产生。

    我研究一下怎么计算出array的长度
    75a7a04828c291a9ecfde4bf28820dc7.png
    可以这样试下,我用上边发的测试数据试了下https://help.aliyun.com/zh/maxcompute/user-guide/string-functions?spm=a2c4g.11186623.0.0.56645be50VBJzv#section-143-hgq-bc6 ,此回答整理自钉群“MaxCompute开发者社区2群”

    2023-12-04 00:29:16
    赞同 展开评论
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    你可以使用json_object_keys函数来获取数组中元素的个数。以下是一个示例:

    SELECT json_object_keys(event_body) AS action_list, COUNT(*) AS count
    FROM your_table;
    

    这将返回一个包含actionList和元素个数的表。

    2023-12-03 21:25:48
    赞同 展开评论

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

还有其他疑问?
咨询AI助理