Я работаю над пользовательским соединителем для 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}]]
}