Daniel Webb
Daniel Webb

Reputation: 41

How can I get my Community Connector to trigger a "Date Range Dimension" in Datastudio?

I've created a working Community Connector by following the Community Connector Codelab but how can I get it to have a 'Date Range Dimension' when it is selected as a datasource in datastudio ?

Here's what my datasource looks like (No 'Date Range Dimension'):

enter image description here

And here's an example of a datasource with a 'Date Range Dimension':

Data source with 'Date Range Dimension'

I don't understand what I'm missing. The connector returns date dimensions from getFields()

  fields.newDimension()
    .setId('date_created')
    .setType(types.YEAR_MONTH_DAY)
    .setGroup('Date');

We're setting the date range required to true in getConfig too:

function getConfig(request) {
  var cc = DataStudioApp.createCommunityConnector();
  var config = cc.getConfig();

  config.newInfo()
    .setId('instructions')
    .setText('Use the date range to specify what activities to return.');

  config.setDateRangeRequired(true);

  return config.build();
}

and here's the getSchema(), it's all basically ripped off from the codelab

function getSchema(request) {
  var fields = getFields(request).build();
  return { schema: fields };
}

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

  fields.newDimension()
    .setId('id')
    .setType(types.NUMBER);

  fields.newDimension()
    .setId('owner_id')
    .setType(types.NUMBER);

  fields.newDimension()
    .setId('subject')
    .setType(types.TEXT);

  fields.newDimension()
    .setId('medium')
    .setType(types.TEXT);

  fields.newDimension()
    .setId('date_logged')
    .setType(types.YEAR_MONTH_DAY);

  fields.newDimension()
    .setId('date_started')
    .setType(types.YEAR_MONTH_DAY);

  fields.newDimension()
    .setId('date_ended')
    .setType(types.YEAR_MONTH_DAY);

  fields.newMetric()
    .setId('billable')
    .setType(types.NUMBER)
    .setAggregation(aggregations.SUM);

  fields.newMetric()
    .setId('nonbillable')
    .setType(types.NUMBER)
    .setAggregation(aggregations.SUM);

 fields.newMetric()
    .setId('time_allocation')
    .setType(types.NUMBER)
    .setAggregation(aggregations.SUM);

  fields.newMetric()
    .setId('scheduled_duration')
    .setType(types.NUMBER)
    .setAggregation(aggregations.SUM);

  return fields;
}

Cheers.

Upvotes: 0

Views: 1395

Answers (2)

Kevin_B
Kevin_B

Reputation: 26

You don't have to check if date range is selected. If data range is not selected there is 1 month date range by default. So you can just save start and end date to the variables.

var sinceDate = request.dateRange.startDate;
var untilDate = request.dateRange.endDate;

For better understanding later, you can always console.log(request) and see what is requested.

Upvotes: 0

Matt Hamrick
Matt Hamrick

Reputation: 789

If config.setDateRangeRequired(true) is called, the Date Range Dimension picker won't be visible. This is due to how required date ranges work.

If it makes sense for your data source to have different date ranges for a chart (what that picker is for), then you should set config.setDateRangeRequired(false) and the picker will appear.

Upvotes: 2

Related Questions