Google Data Studio自定义连接器Explore功能数据集配置错误排查
Google Data Studio自定义连接器Explore报错修复方案
问题描述
已完成外部API的GDS自定义连接器配置,部署后可正常查看字段列表,但运行Explore功能时触发通用错误:数据集配置错误 - Data Studio无法连接到您的数据集。当前使用的getData函数及测试数据如下:
原getData函数代码
function getData(request) { try { request.configParams = validateConfig(request.configParams); var requestedFields = getFields().forIds( request.fields.map(function(field) { return field.name; }) ); var data = JSON.parse(jsonSample).Table return { schema: requestedFields.build(), rows: data }; } catch (e) { cc.newUserError() .setDebugText('Error fetching data from API. Exception details: ' + e) .setText( 'The connector has encountered an unrecoverable error. Please try again later, or file an issue if this error persists.' ) .throwException(); } }
测试用jsonSample内容
{ "Table": [ { "Entity": "Houston Heights", "EntityD": "", "Consolidation": "USD", "ConsolidationD": "United States of America, Dollars", "Scenario": "Actual", "ScenarioD": "", "Time": "2010M1", "TimeD": "Jan 2010", "View": "Periodic", "ViewD": "", "Account": "IFRS Balance Sheet", "AccountD": "", "Flow": "None", "FlowD": "", "Origin": "BeforeAdj", "OriginD": "", "IC": "None", "ICD": "", "UD1": "None", "UD1D": "", "UD2": "None", "UD2D": "", "UD3": "None", "UD3D": "", "UD4": "None", "UD4D": "", "UD5": "None", "UD5D": "", "UD6": "None", "UD6D": "", "UD7": "None", "UD7D": "", "UD8": "None", "UD8D": "", "CellValue": 2.25000000000000000000 }, { "Entity": "Houston Heights", "EntityD": "", "Consolidation": "USD", "ConsolidationD": "United States of America, Dollars", "Scenario": "Actual", "ScenarioD": "", "Time": "2010M1", "TimeD": "Jan 2010", "View": "Periodic", "ViewD": "", "Account": "IFRS Balance Sheet", "AccountD": "", "Flow": "None", "FlowD": "", "Origin": "BeforeAdj", "OriginD": "", "IC": "None", "ICD": "", "UD1": "Admin", "UD1D": "Admin", "UD2": "None", "UD2D": "", "UD3": "None", "UD3D": "", "UD4": "None", "UD4D": "", "UD5": "None", "UD5D": "", "UD6": "None", "UD6D": "", "UD7": "None", "UD7D": "", "UD8": "None", "UD8D": "", "CellValue": 2.240000000000000000000 } ] }
问题根源
Google Data Studio要求getData返回的rows数组必须是包含values数组的对象结构,即每个行数据格式为{ values: [字段值1, 字段值2, ...] },而非直接的键值对对象。原代码直接将jsonSample.Table(键值对数组)赋值给rows,格式不匹配导致报错。
修复方案
修改getData函数,将键值对格式的行数据转换为GDS要求的结构,确保values数组的顺序与requestedFields的字段顺序完全对应:
function getData(request) { try { request.configParams = validateConfig(request.configParams); var requestedFields = getFields().forIds( request.fields.map(function(field) { return field.name; }) ); var data = JSON.parse(jsonSample).Table; // 转换数据格式为GDS要求的结构 var rows = data.map(function(rowObj) { return { values: requestedFields.asArray().map(function(field) { return rowObj[field.getId()]; }) }; }); return { schema: requestedFields.build(), rows: rows }; } catch (e) { cc.newUserError() .setDebugText('Error fetching data from API. Exception details: ' + e) .setText( '连接器遇到不可恢复的错误,请稍后重试,若问题持续请提交反馈。' ) .throwException(); } }
验证要点
- 确认
requestedFields.asArray()的字段顺序与values数组的元素顺序完全一致,GDS依赖该顺序映射字段与对应值 - 检查连接器配置的字段类型与返回值类型匹配(如
CellValue为数值型,需对应GDS中的数字字段) - 后续接入真实API时,需确保API返回的数据结构与测试用
jsonSample一致,保证转换逻辑通用
内容的提问来源于stack exchange,提问作者Mik1893
相关产品推荐
相关产品推荐

