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

使用resolveChoice转换类型后返回空DataFrame求助

问题分析与解决方案

问题重现

使用resolveChoice转换嵌套字段的数据类型为double,代码如下:

resolved_data = Get_Data_From_Dynamic_Frame_node1655725248083.resolveChoice(specs = [("items[].dimensions[].item.height.value", "cast:double")]).resolveChoice(specs = [("items[].dimensions[].item.length.value", "cast:double")]).resolveChoice(specs = [("items[].dimensions[].item.width.value", "cast:double")]).resolveChoice(specs = [("items[].dimensions[].item.weight.value", "cast:double")])

转换后将Dynamic Frame转为Data Frame,发现count()返回0,无数据写入S3。数据为嵌套结构:items数组 → dimensions数组 → item对象 → height/length/width/weight字段 → value子字段。

可能原因及修复方案

  1. JSON路径不匹配
    确认路径与实际数据结构完全一致,包括字段大小写、嵌套层级。比如若实际数据中dimensions是Dimensions,路径就会匹配失败,导致resolveChoice过滤所有数据。

  2. 非数值/空值导致转换失败
    默认情况下,cast:double会丢弃无法转换的行(比如value是字符串或null)。可以通过添加参数保留数据:

    resolved_data = Get_Data_From_Dynamic_Frame_node1655725248083.resolveChoice(
        specs = [
            ("items[].dimensions[].item.height.value", "cast:double"),
            ("items[].dimensions[].item.length.value", "cast:double"),
            ("items[].dimensions[].item.width.value", "cast:double"),
            ("items[].dimensions[].item.weight.value", "cast:double")
        ],
        option="keep_null"  # 保留空值行
        # 或用 option="coerce" 将非数值转为null
    )
    
  3. 链式调用resolveChoice的风险
    每次resolveChoice返回新的Dynamic Frame,若前一次调用已过滤数据,后续调用无数据可用。建议将所有规则合并到一次调用中,避免多次操作的意外过滤。

  4. 上游节点无数据
    先执行Get_Data_From_Dynamic_Frame_node1655725248083.show(),确认原始Dynamic Frame本身有数据,排除上游节点未输出数据的问题。


内容的提问来源于stack exchange,提问作者Nabeel Khan Ghauri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:40:50