Class DataLayoutSpec

Object
io.delta.kernel.transaction.DataLayoutSpec

@Evolving public class DataLayoutSpec extends Object
Specification for the data layout of a Delta table, including partitioning and clustering configurations.

This class supports different layout strategies:

  • No data layout spec: No special data layout
  • Partitioned: Data is partitioned by specified columns.
  • Clustered: Data is clustered by specified columns.
Since:
3.4.0
  • Method Details

    • noDataLayout

      public static DataLayoutSpec noDataLayout()
      Creates data layout spec with no special layout.
      Returns:
      A new DataLayoutSpec with no special layout.
    • partitioned

      public static DataLayoutSpec partitioned(List<Column> partitionColumns)
      Creates a data layout specification for a partitioned table.
      Parameters:
      partitionColumns - The columns to partition by. Cannot be null or empty. Only top-level columns are supported for partitioning.
      Returns:
      A new DataLayoutSpec for a partitioned table.
    • clustered

      public static DataLayoutSpec clustered(List<Column> clusteringColumns)
      Creates a data layout specification for a clustered table.
      Parameters:
      clusteringColumns - The columns to cluster by. Cannot be null, but can be empty to indicate clustering is enabled without specific column definitions.
      Returns:
      A new DataLayoutSpec for a clustered table.
    • hasPartitioning

      public boolean hasPartitioning()
      Returns true if this layout specification includes partitioning.

      Partitioning requires non-empty partition columns. An empty list of partition columns is not considered valid partitioning.

    • hasClustering

      public boolean hasClustering()
      Returns true if this layout specification includes clustering.

      Clustering can be enabled even with empty clustering columns, which indicates that clustering is enabled on the table but no specific columns are defined yet.

    • hasNoDataLayoutSpec

      public boolean hasNoDataLayoutSpec()
      Returns true if this is a data layout spec with no special layout.

      This means it has neither partitioning nor clustering enabled.

    • getPartitionColumns

      public List<Column> getPartitionColumns()
      Returns the partition columns for this layout.
      Throws:
      IllegalStateException - if partitioning is not enabled on this layout. Use hasPartitioning() to check first.
    • getPartitionColumnsAsStrings

      public List<String> getPartitionColumnsAsStrings()
      Returns the partition columns for this layout as strings.
      Throws:
      IllegalStateException - if partitioning is not enabled on this layout. Use hasPartitioning() to check first.
    • getClusteringColumns

      public List<Column> getClusteringColumns()
      Returns the clustering columns for this layout.

      The returned list may be empty if clustering is enabled but no specific columns are defined.

      Throws:
      IllegalStateException - if clustering is not enabled on this layout. Use hasClustering() to check first.