反馈已提交

网络繁忙

解析并关联多个JSON数组字段(4.1.6.2及其后版本)

  • 文档创建者:Roxy
  • 历史版本:2
  • 最近更新:Roxy 于 2024-12-16
  • 注:本文方案适用于 4.1.6.2 之后版本。

    1. 概述

    1.1 应用场景

    用户的 JSON 数据中包含多个数组字段,如下图所示:

    希望解析数组字段,且解析后的字段一一对应。如下图所示:

    1.2 实现思路

    使用 Python 算子解析 JSON 数据。

    1.3 任务展示

    FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/ 「解析并关联多个JSON数组字段」。

    2. 示例

    2.1 获取 JSON 数据

    用户实际环境中 JSON 数据的来源多样,本示例直接创建一个包含数组的 JSON 数据。

    1)新建定时任务,拖入「数据转换」节点,进入「数据转换」节点。

    2)拖入「Spark SQL」算子,模拟用户场景,创建包含数组的 JSON 数据。如下图所示:

    SQL 语句如下所示:

    select '{
    "header": {
    "desc": "success",
    "failures": [],
    "oprs": 1,
    "succ": 1,
    "oprtime": 0,
    "quota": 1,
    "rquota": 200000000,
    "status": 0,
    "traceid": "a9874ba8-b3a0-11ed-8323-97b36044f232"
    },
    "body": {
    "data": [
    {
    "result": {
    "total": 20,
    "pageSum": [
    [
    386,
    130,
    279,
    212,
    189,
    41.98,
    263,
    71.06,
    230,
    8.61,
    "--",
    "--"
    ],
    [],
    []
    ],
    "timeSpan": [
    "2023/03/01 - 2023/03/02"
    ],
    "sum": [
    [
    364,
    200,
    249,
    212,
    82,
    41.98,
    253,
    71.06,
    220,
    1.61,
    "--",
    "--"
    ],
    []
    ],
    "fields": [
    "aa",
    "bb",
    "cc",
    "dd",
    "ee",
    "ff",
    "hh",
    "ii",
    "er",
    "ef",
    "qw",
    "dg"
    ]
    }
    }
    ],
    "expand": {}
    }
    }' as json

    2.2 解析数据

    使用 Python 算子解析 JSON 数据。

    1)拖入 Python 算子,输入语句,如下图所示:

    import pandas as pd

    import json

    # 假设你的 JSON 数据存储在一个 DataFrame 中

    data = $[Spark SQL] # 这里是你的输入数据源

    # 假设 DataFrame 中有一列包含 JSON 字符串,列名为 'json_column'

    # 你需要根据实际列名进行调整

    json_data = data['json'].apply(json.loads) 

    # 提取 sum 和 fields

    sum_values = json_data.apply(lambda x: x["body"]["data"][0]["result"]["sum"][0])

    fields = json_data.apply(lambda x: x["body"]["data"][0]["result"]["fields"])

    # 创建 DataFrame

    result_df = pd.DataFrame({

        'fields': fields.iloc[0],

        'sum': sum_values.iloc[0]

    })

    # 输出 DataFrame

    print(result_df)

    # ----------------------------------------

    output = result_df

    2)点击数据预览,即可看到解析后的表格数据,如下图所示:

    3)用户根据实际情况,继续数据进行处理或输出。


    附件列表


    主题: 数据开发-定时任务
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持