Commit 2696cd1
authored
feat(s3tables-alpha): add support for partition spec, sort order, and table properties (#36811)
### Reason for this change
This PR adds support for new S3 Tables Iceberg features to the L2 construct library, enabling users to configure partition specifications, sort orders, table properties, and schema field IDs when creating tables.
These features are essential for optimizing query performance and data organization in Iceberg tables.
### Description of changes
**Enhanced Table construct with new Iceberg metadata properties**:
- Added `id` field to `SchemaFieldProperty` for schema field identification
- Added `IcebergPartitionSpec` and `IcebergPartitionField` interfaces for partition configuration
- Added `IcebergSortOrder` and `IcebergSortField` interfaces for sort order configuration
- Added `tableProperties` support for custom Iceberg table properties
- Updated `IcebergMetadataProperty` to include optional `icebergPartitionSpec`, `icebergSortOrder`, and `tableProperties`
**Documentation**:
- Added comprehensive examples for `IcebergPartitionField`, `IcebergPartitionSpec`, and `IcebergSortOrder`
- Updated README with "Advanced Iceberg Table Configuration" section showing complete usage examples
### Description of how you validated changes
- **Unit tests**: Added comprehensive test coverage for new features (192 tests passing)
- **Integration test**: Created `integ.table-with-partition-sort.ts` to validate partition spec, sort order, and table properties
- **Manual testing**: Successfully deployed and validated in Gamma environment where the CloudFormation resource type with new properties is available. Verified that partition spec, sort order, and table properties are correctly applied to the Iceberg table metadata.
### Checklist
- [x] My code adheres to the [CONTRIBUTING GUIDE](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md) and [DESIGN GUIDELINES](https://github.com/aws/aws-cdk/blob/main/docs/DESIGN_GUIDELINES.md)
----
*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*1 parent 7e68304 commit 2696cd1
26 files changed
Lines changed: 70990 additions & 2 deletions
File tree
- packages/@aws-cdk/aws-s3tables-alpha
- lib
- rosetta
- test
- integration
- integ.table-partition-sort-required.js.snapshot
- asset.b5c2a7158e57582e84496b24c0499302cec1fd88624535b3dfb629311b3fdc2a.bundle
- integ.table-with-partition-sort.js.snapshot
- asset.b5c2a7158e57582e84496b24c0499302cec1fd88624535b3dfb629311b3fdc2a.bundle
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
94 | 94 | | |
95 | 95 | | |
96 | 96 | | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
97 | 173 | | |
98 | 174 | | |
99 | 175 | | |
| |||
0 commit comments