在 getData() 实现中为 facebook insights 连接器推送多个值

pushing multiple values in getData() implementation for facebook insights connector

我正在编写一个用于 google 数据工作室的 facebook 洞察连接器,但是在使用指标 page_fans_city[= 时我找不到正确的方法来处理响应32=] 在请求中。返回的数据格式如下:

{
  "data": [
    {
      "name": "page_fans_city",
      "period": "lifetime",
      "values": [
        {
          "value": {
            "Ancona, Marche, Italy": 61,
            "Arezzo, Tuscany, Italy": 42,
            "Bari, Puglia, Italy": 362,
            "Bergamo, Lombardia, Italy": 48,
            "Bologna, Emilia-Romagna, Italy": 388,
            "Brescia, Lombardia, Italy": 103,
            "Cagliari, Sardinia, Italy": 145,
            "Caserta, Campania, Italy": 64,
            "Catania, Sicilia, Italy": 272,
            "Ferrara, Emilia-Romagna, Italy": 50,
            ...
          },
          "end_time": "2017-11-13T08:00:00+0000"
        },
...
}

如您所见,"value" 不是单个项目(数字或字符串),而是一个对象。我的数据架构包括:

  {
    name: 'city_name',
    label: 'City',
    dataType: 'STRING',
    semantics: {
      conceptType: 'DIMENSION'
    }
  },  
  {
    name: 'city_likes',
    label: 'Likes per City',
    dataType: 'NUMBER',
    semantics: {
      conceptType: 'METRIC'
    }
  }

在我的 getData(request) 函数实现中,我需要推送所有城市名称对 - 在特定时间范围内的每一天都喜欢,所以我写道:

case 'city_name':
  var dataObj = response.data[1].values[0].value;
  var objKeys = Object.keys(dataObj);
  //pushing all the keys
  for (var n=0; n<objKeys.length; n++) {
    values.push(objKeys[n]);
  }
  break;

case 'city_likes':
  var dataObj = response.data[1].values[0].value;
  var objKeys = Object.keys(dataObj);
  //pushing all the values
  for (var n=0; n<objKeys.length; n++) {
    values.push(dataObj[objKeys[n]]);
  }                     
  break; 

但是如果我使用这些 dimension/metric 构建一个 table,我会在数据工作室仪表板上收到 系统错误 。有谁知道管理这种情况的正确方法?也许模式必须不同? 提前致谢。

更新

这是我目前发送的内容:

{
    schema=
    [
        {
            dataType=NUMBER, 
            name=city_likes, 
            label=Likes per City, 
            semantics=
            {
                conceptType=METRIC
            }
        }, 
        {
            dataType=STRING, 
            name=city_name, 
            label=City, 
            semantics=
            {
                conceptType=DIMENSION
            }
        }
    ], 
    rows=
    [
        {
            values=[62, 326, 78, 396, 130, 179, 73, 248, 48, 65, 450, 80, 47, 277, 57, 83, 85, 87, 82, 2065, 88, 901, 144, 466, 87, 140, 53, 102, 63, 89, 56, 81, 94, 85, 1992, 88, 71, 52, 98, 631, 50, 212, 164, 55, 49, Ancona, Bari, Bergamo, Bologna, Brescia, Cagliari, Caserta, Catania, Como, Ferrara, Florence, Foggia, Forlì, Genova, La Spezia, Lecce, Livorno, Lucca, Messina, Milan, Modena, Naples, Padua, Palermo, Parma, Perugia, Pesaro, Pescara, Pisa, Prato, Ravenna, Reggio di Calabria, Reggio nell Emilia, Rimini, Rome, Sassari, Taranto, Terni, Trieste, Turin, Udine, Venice, Verona, Vicenza, Vietri sul Mare]
        }
    ]
}

有什么想法吗?

您的回复应该更像这样:

{
schema=
[
    {
        dataType=NUMBER, 
        name=city_likes, 
        label=Likes per City, 
        semantics=
        {
            conceptType=METRIC
        }
    }, 
    {
        dataType=STRING, 
        name=city_name, 
        label=City, 
        semantics=
        {
            conceptType=DIMENSION
        }
    }
], 
rows=
[
  {
    "values": [62, "Ancona"]
  },
  {
    "values": [326, "Bari"]
  },
  {
    "values": [78, "Bergamo"]
  },
  {
    "values": [396, "Bologna"]
  },
...
]
}