code: function updateEntitiesAndExtent(dataSource) {
    var tableStructure = dataSource._tableStructure;
    var legendHelper = dataSource._legendHelper;
    var tableStyle = legendHelper.tableStyle;
    var specialColumns = {
      longitude: tableStructure.columnsByType[VarType.LON][0],
      latitude: tableStructure.columnsByType[VarType.LAT][0],
      height: tableStructure.columnsByType[VarType.ALT][0],
      time: tableStructure.activeTimeColumn,
      value: legendHelper.tableColumn
    };
    if (defined(specialColumns.longitude) && defined(specialColumns.latitude)) {
      var rowObjects = tableStructure.toStringAndNumberRowObjects();
      var rowDescriptions = tableStructure.toRowDescriptions(
        tableStyle && tableStyle.featureInfoFields
      );
      dataSource._rowObjects = rowObjects;
      dataSource._rowDescriptions = rowDescriptions;
      var entities = dataSource._entityCollection;
      entities.suspendEvents();
      if (
        defined(specialColumns.time) &&
        defined(tableStructure.idColumnNames) &&
        tableStructure.idColumnNames.length > 0
      ) {
        setOneFeaturePerId(dataSource, tableStructure, specialColumns);
        dataSource._hasFeaturePerRow = false;
      } else {
        setOneFeaturePerRow(dataSource, tableStructure, specialColumns);
        dataSource._hasFeaturePerRow = true;
      }
      entities.resumeEvents();
  
      // Generate extent from all positions that aren't NaN
      dataSource._extent = Rectangle.fromCartographicArray(
        specialColumns.longitude.values
          .map((lon, i) => [lon, specialColumns.latitude.values[i]])
          .filter(pos => pos.every(v => !isNaN(v)))
          .map(pos => Cartographic.fromDegrees(...pos))
      );
    }
  }
docs: Set the features (entities) on this data source, using tableColumn to provide values and tableStyle + legendHelper.tableColumnStyle for styling. Set the extent based on those entities.