Data Studio社区连接器错误:数据中的列数与架构中的数不匹配

时间:2019-12-26 14:20:29

标签: google-data-studio

我正在按照推荐的codelab编写连接器,但面临一个问题,该问题已经在[另一个问题]上进行了讨论,但是并不能解决我的情况。

我什至以为一切正常,也收到了Data Studio Community Connector error: The number of columns in the data does not match the number in the schema.消息。

我仔细检查了要求的字段,只返回了要求的字段。它要求返回预期的7个数字字段。

感谢您的帮助。

我的getData()方法:

function getData(request) {
   try {
     console.log("getData - request", request);

     // Create schema for requested fields
     var requestedFieldIds = request.fields.map(function(field) {
       return field.name;
     });
     var requestedFields = getFields().forIds(requestedFieldIds);

     // Fetch and parse data from API
     var url = [
       'https://api.hubstaff.com',
       '/v2/organizations/',
       request.organizationId,
       '/activities/daily',
       '?date[start]=2019-12-19&date[stop]=2019-12-26'
     ];

     var response = UrlFetchApp.fetch(url.join(''));    
     var parsedResponse = JSON.parse(response);   
     var rows = responseToRows(requestedFields, parsedResponse);

     console.log("getData - rows", rows);

     return {
       schema: requestedFields.build(),
       rows: rows
     };

  } catch (e) { 
    e = (typeof e === 'string') ? new Error(e) : e;
    Logger.log("Catch", e);
    console.log("Catch", e);
    throw e;
  }
}

"getData - request"日志(来自StackDriver的“真实”补码调用):

{
   organizationId=XXXXXXXX, 
   fields=[
      {dataType=NUMBER, name=user_id, semantics={conceptType=DIMENSION, semanticType=NUMBER}}, 
      {dataType=NUMBER, name=tracked, semantics={isReaggregatable=true, conceptType=METRIC, semanticType=NUMBER}}, 
      {dataType=NUMBER, name=keyboard, semantics={isReaggregatable=true, conceptType=METRIC, semanticType=NUMBER}},
      {dataType=NUMBER, name=mouse, semantics={isReaggregatable=true, conceptType=METRIC, semanticType=NUMBER}},
      {dataType=NUMBER, name=overall, semantics={isReaggregatable=true, conceptType=METRIC, semanticType=NUMBER}}, 
      {dataType=NUMBER, name=idle, semantics={isReaggregatable=true, conceptType=METRIC, semanticType=NUMBER}}, 
      {dataType=NUMBER, name=resumed, semantics={isReaggregatable=true, conceptType=METRIC, semanticType=NUMBER}}
    ], 
    accessToken=XXXXXXXXX
}

"getData - rows"日志(来自StackDriver的“真实”补码调用):

[
   {values=[164079, 320317.0, 75110.0, 142879.0, 163043.0, 25266.0, 454.0]}, 
   {values=[642198, 301352.0, 73463.0, 135327.0, 154413.0, 24198.0, 0.0]}, 
   {values=[615157, 275512.0, 69592.0, 123441.0, 140382.0, 22181.0, 0.0]}, 
   {values=[741562, 258775.0, 66839.0, 115086.0, 130181.0, 22181.0, 0.0]}, 
   {values=[405833, 229674.0, 58363.0, 100779.0, 114785.0, 22181.0, 0.0]}
]

1 个答案:

答案 0 :(得分:0)

我解决了问题,但与我的预期相去甚远。

我不知道为什么,但是,在阅读日志时,我看到它们第一次由request.organizationId发送配置参数,而在下次调用时由request.configParams.organizationId发送配置参数。为了解决这个问题,我做到了:

var organizatioInd = request.organizationId || request.configParams.organizationId;
var accessToken = request.accessToken || request.configParams.accessToken;

这是我更改的唯一代码。

我在问题上留下的日志是第一个使用正确参数的调用,该日志记录了正确的结果。第二个调用(应该是真正的Studio调用)由于配置错误而失败。