как использовать управление фильтром с идентификаторами (ключ-значение) в Google Data Studio - PullRequest
0 голосов
/ 03 мая 2020

Я работаю над пользовательским соединителем для Google Datastudio, который подключается к определенной c службе API, следуя документации Google Data Studio Community и очень хорошей статье о Создание пользовательские Google Data Studio .

Схема данных:

function getFields(request) {
  var fields = cc.getFields();
  var types = cc.FieldType;
  var aggregations = cc.AggregationType;

  fields.newDimension().setId('id').setName('ID').setType(types.NUMBER);
  fields.newDimension().setId('date').setName('Date').setType(types.YEAR_MONTH_DAY);
  fields.newDimension().setId('user_id').setName('User ID').setType(types.NUMBER);
  fields.newDimension().setId('user').setName('User').setType(types.TEXT);

  //fields.newMetric().setId('time').setName('Time').setType(types.DURATION).setAggregation(aggregations.SUM);
  fields.newMetric().setId('time').setName('Time').setType(types.NUMBER).setAggregation(aggregations.SUM);
  fields.newMetric().setId('revenue').setName('Revenue').setType(types.CURRENCY_EUR).setAggregation(aggregations.SUM);

  fields.setDefaultDimension('user');
  fields.setDefaultMetric('time');

  return fields;
}

Поскольку данные, извлекаемые из API, могут быть довольно большими, я хочу применить фильтр, предоставленный Google Data Studio, непосредственно на уровне API. Проблема заключается в том, что элементы управления фильтрами в студии обычно отображают удобное для пользователя и удобочитаемое имя, такое как имя пользователя, и, конечно, не идентификатор пользователя. Но для уровня API требуется идентификатор пользователя для фильтрации. Запрос, который я получаю:

function getData(request) {
  // retrieve the data
}

, получает этот фильтр без идентификатора. И я не очень хочу показывать идентификаторы пользователей в пользовательском элементе управления фильтрами.

{
  scriptParams={lastRefresh=1588507514238}, 
  fields=[{name=time}, {forFilterOnly=true, name=user}], 
  dateRange={endDate=2020-05-02, startDate=2020-04-05}, 
  dimensionsFilters=[[{fieldName=user, type=INCLUDE, values=[John Doe], operator=IN_LIST}]]
}

Я вижу, что элемент управления фильтрами в студии не поддерживает значения ключей. Есть идеи, как этого добиться другим способом? Моя единственная мысль - сохранить известные комбинации user-user_id в кеше и преобразовать имя пользователя в идентификатор пользователя перед отправкой запроса API. Но, надеюсь, есть более простой способ?

Правильный фильтр должен быть таким:

{
  scriptParams={lastRefresh=1588507514238}, 
  fields=[{name=time}, {forFilterOnly=true, name=user_id}], 
  dateRange={endDate=2020-05-02, startDate=2020-04-05}, 
  dimensionsFilters=[[{fieldName=user_id, type=INCLUDE, values=[1234], operator=IN_LIST}]]
}
...