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

AWS Glue PySpark处理DynamoDB导出数据 移除数组多余Struct后写入目标表

转换逻辑调整方案

问题根因

当前代码仅提取了lineItems数组每个元素外层的M结构,但没有对M下每个属性(price/grade等)的类型层(N/S)做扁平化处理,Glue写入DynamoDB时会自动将嵌套struct识别为Map结构,额外添加一层M包装,最终导致输出多嵌套了两层不符合要求的结构。

调整后的转换代码

def MergeLineItems(rec):
    a = []
    for x in rec["lineItems"]:
        line_item_raw = x["M"]
        formatted_item = {}
        # 遍历每个属性,直接提取N/S对应的实际值,去掉多余嵌套层级
        for field, type_wrapper in line_item_raw.items():
            field_type, field_value = next(iter(type_wrapper.items()))
            formatted_item[field] = {field_type: field_value}
        a.append({"M": formatted_item})
    rec["lineItems1"] = a
    return rec
  
mapped_dyF =  Map.apply(frame = Transform0, f = MergeLineItems)

效果说明

调整后生成的lineItems1结构会完全匹配DynamoDB原生的List[Map]格式要求,写入时不会额外生成多余的M嵌套,输出结果和你期望的格式完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:09:03