You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ADF数据流解析复杂JSON遇阻,求提取卖家ID/名称方案

提取非数组JSON中的卖家ID和名称:ADF数据流与PySpark解决方案

ADF数据流实现步骤

因为你的JSON是嵌套对象结构而非标准数组,直接用Flatten转换会失败,需先把对象转成数组再处理:

    1. 配置数据源:选择Blob存储的JSON文件,将文件模式设置为Single document(适配单个JSON对象,而非数组格式)。
    1. 添加派生列转换:新增一列(比如命名为sellers_array),使用ADF内置的entries()函数将卖家对象转换为键值对数组。假设卖家数据在根节点的sellers字段下,表达式写为:entries(sellers)。这个函数会把类似{"sellerA": {"seller ID": "123", "seller Name": "张三"}}的对象转成[{"key": "sellerA", "value": {"seller ID": "123", "seller Name": "张三"}}]的数组。
    1. 添加Flatten转换:将展开的数组列选择为sellers_array,展开后就能通过value.seller ID和value.seller Name访问目标字段。可以再添加派生列转换,把这两个字段重命名为更简洁的名称(比如seller_id、seller_name)。

PySpark实现代码

如果ADF数据流的方式暂时难以操作,用PySpark可以快速处理这种非数组JSON:

# 读取单个JSON文档(multiLine=True确保读取完整的JSON对象)
df = spark.read.json("abfss://your-container@your-storage.dfs.core.windows.net/path/to/file.json", multiLine=True)

# 导入所需函数
from pyspark.sql.functions import explode, map_entries, col

# 将卖家对象转成键值对数组并展开,提取目标字段
seller_df = df.select(explode(map_entries(col("sellers"))).alias("seller_item")) \
              .select(
                  col("seller_item.value.seller ID").alias("seller_id"),
                  col("seller_item.value.seller Name").alias("seller_name")
              )

# 查看处理结果
seller_df.display()

注:如果你的卖家数据不在sellers字段下,替换成实际的字段名即可。

内容的提问来源于stack exchange,提问作者Andy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:55:11