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

AWS QuickSight无法解析S3中JSON文件的问题求助

解决QuickSight无法读取S3中JSON数据并使用parseJson的问题

看起来你遇到的核心问题是S3文件格式和QuickSight导入配置不匹配,导致系统把JSON字符串当成纯文本处理,自然就没有parseJson命令可用了。咱们一步步来解决:

1. 修正QuickSight数据源配置,正确识别JSON Lines格式

你当前的清单文件用了CSV格式配置,这会让QuickSight把每行的JSON当成单个文本字段。需要改成JSON格式,并指定每行是独立的JSON文档(也就是JSON Lines格式)。调整后的清单文件如下:

{
  "fileLocations": [
    {
      "URIs": [
        "https://s3.amazonaws.com/my-bucket2/2018-05-20-12-32-49/12345-a279-1234-2269-491212345"
      ]
    }
  ],
  "globalUploadSettings": {
    "format": "JSON",
    "jsonType": "DOCUMENT_PER_LINE"
  }
}
  • format: "JSON"告诉QuickSight这是JSON文件
  • jsonType: "DOCUMENT_PER_LINE"明确每行是一个独立的JSON对象,匹配你S3里的文件结构

2. 处理DynamoDB嵌套的JSON结构

你的JSON是DynamoDB导出的格式(带类型标识如s表示字符串),即使正确解析后,还需要提取实际的温度和时间戳数值:

方法1:在QuickSight中用计算字段解析

当parseJson命令可用后,创建计算字段提取温度:

toDecimal(parseJson(payload).m.$Temperature.s)

转换时间戳(注意是毫秒级,要转成秒):

fromUnixTimestamp(toDecimal(parseJson(timestamp).s)/1000)

方法2:在Data Pipeline阶段提前转换格式

更高效的方式是在Data Pipeline导出到S3时,把DynamoDB的结构化数据转换成扁平的JSON,比如输出成:

{"timestamp": 1526819850637, "temperature": 42.000}

这样QuickSight导入后可以直接使用字段,无需额外解析。你可以在Data Pipeline的转换步骤中添加Lambda函数来完成这个格式转换。

3. 验证数据管道输出

确认Data Pipeline从DynamoDB导出到S3的文件确实是每行一个JSON对象,而非整个数组格式。如果是数组格式,需要把jsonType改成FILE,但你的S3内容看起来符合DOCUMENT_PER_LINE的要求,所以第一步配置应该就能解决核心问题。

4. 检查QuickSight数据类型

导入数据后,进入数据集编辑页面,确认字段类型是否正确:

  • 把转换后的时间戳字段设置为日期时间类型
  • 把温度字段设置为数值类型,这样才能正常生成图表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:11:43