Package io.delta.kernel.transaction
Class DataLayoutSpec
Object
io.delta.kernel.transaction.DataLayoutSpec
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 Summary
Modifier and TypeMethodDescriptionstatic DataLayoutSpecCreates a data layout specification for a clustered table.Returns the clustering columns for this layout.Returns the partition columns for this layout.Returns the partition columns for this layout as strings.booleanReturns true if this layout specification includes clustering.booleanReturns true if this is a data layout spec with no special layout.booleanReturns true if this layout specification includes partitioning.static DataLayoutSpecCreates data layout spec with no special layout.static DataLayoutSpecpartitioned(List<Column> partitionColumns) Creates a data layout specification for a partitioned table.
-
Method Details
-
noDataLayout
Creates data layout spec with no special layout.- Returns:
- A new
DataLayoutSpecwith no special layout.
-
partitioned
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
DataLayoutSpecfor a partitioned table.
-
clustered
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
DataLayoutSpecfor 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
Returns the partition columns for this layout.- Throws:
IllegalStateException- if partitioning is not enabled on this layout. UsehasPartitioning()to check first.
-
getPartitionColumnsAsStrings
Returns the partition columns for this layout as strings.- Throws:
IllegalStateException- if partitioning is not enabled on this layout. UsehasPartitioning()to check first.
-
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. UsehasClustering()to check first.
-