如何从Amazon QuickSight提取仪表盘或图表数据为JSON格式?
提取Amazon QuickSight仪表盘/图表数据为JSON的可行方案
方案1:通过QuickSight API直接获取JSON数据
这是最原生的解决方案,无需中间格式转换:
- 使用
ExecuteDataSetQueryAPI可以直接查询SPICE或直接查询型数据集,并返回JSON格式结果。需要确保你的IAM角色拥有quicksight:ExecuteDataSetQuery和quicksight:DescribeDataSet权限。 - Python示例代码:
import boto3 quicksight_client = boto3.client('quicksight', region_name='你的AWS区域') response = quicksight_client.execute_data_set_query( AwsAccountId='你的AWS账户ID', DataSetId='目标数据集ID', QueryConfiguration={ 'SelectColumns': { 'Columns': [{'Name': '列名1'}, {'Name': '列名2'}] } }, ResultSetConfiguration={ 'Format': 'JSON' } ) # 提取并处理返回的JSON数据 json_result = response['ResultSet']['Rows']
- 如果需要针对特定仪表盘的可视化数据,可以结合
DescribeDashboard获取可视化ID,再通过相关API提取对应数据。
方案2:CSV导出后转JSON
如果API调用暂时受限,可以先导出CSV再转换:
- 手动在QuickSight控制台导出图表/仪表盘数据为CSV,或用
StartDashboardExportJobAPI自动导出CSV - 用脚本快速转换为JSON:
Python示例:
import csv import json # 读取CSV并转为JSON with open('quicksight_export.csv', 'r', encoding='utf-8') as csv_f: csv_reader = csv.DictReader(csv_f) data = list(csv_reader) with open('output.json', 'w', encoding='utf-8') as json_f: json.dump(data, json_f, indent=4)
Node.js示例(需先安装csv-parser包):
const fs = require('fs'); const csv = require('csv-parser'); const output = []; fs.createReadStream('quicksight_export.csv') .pipe(csv()) .on('data', row => output.push(row)) .on('end', () => { fs.writeFileSync('output.json', JSON.stringify(output, null, 2)); });
方案3:嵌入场景下通过前端SDK获取
如果你的仪表盘是嵌入到应用中的,可以用QuickSight嵌入SDK直接获取可视化数据:
- 嵌入完成后,监听
visualRendered事件,调用getVisualData获取JSON格式数据:
quicksightEmbedding.on('visualRendered', (event) => { const targetVisualId = event.detail.visualId; quicksightEmbedding.getVisualData({ visualId: targetVisualId, format: 'JSON' }).then(visualData => { // 处理获取到的JSON数据 console.log(visualData); }); });
- 注意:此方法需要配置正确的嵌入权限,仅适用于嵌入集成场景。
内容的提问来源于stack exchange,提问作者Deepa singh
相关产品推荐
相关产品推荐

