sliceDataset = (data, range) => {
  const {fields, columns} = data;
  const colIds = dotRange(...range);
  return {
    columns: colIds.map(colId => columns[colId]),
    fields: colIds.map(colId => fields[colId]),
  };
}
get sub dataset by start- and end- column ids
@param {Object} data contains {columns, fields}
@param {Array<Number>} range array of 2 elements with start (inclusive), end (non-inclusive) index of columns