code: public SplitDataProperties<T> splitsPartitionedBy(String partitionMethodId, String partitionFields) {
  
  		if (partitionFields == null) {
  			throw new InvalidProgramException("PartitionFields may not be null.");
  		}
  
  		String[] partitionKeysA = partitionFields.split(";");
  		if (partitionKeysA.length == 0) {
  			throw new InvalidProgramException("PartitionFields may not be empty.");
  		}
  
  		this.splitPartitionKeys = getAllFlatKeys(partitionKeysA);
  		if (partitionMethodId != null) {
  			this.splitPartitioner = new SourcePartitionerMarker<>(partitionMethodId);
  		}
  		else {
  			this.splitPartitioner = null;
  		}
  
  		return this;
  	}
docs: Defines that data is partitioned using an identifiable method
  across input splits on the fields defined by field expressions.
  Multiple field expressions must be separated by the semicolon ';' character.
  All records sharing the same key (combination) must be contained in a single input split.
  
  <p><b>
  IMPORTANT: Providing wrong information with SplitDataProperties can cause wrong results!
  </b>
  
  @param partitionMethodId An ID for the method that was used to partition the data across splits.
  @param partitionFields The field expressions of the partitioning keys.
  @return This SplitDataProperties object.