> **Experimental**
>
> `@aws-cdk/aws-s3tables-alpha` is an [**experimental**](/stability) (alpha) package: its API may change in any release, without a major version bump.
# TableProps

Properties for creating a new S3 Table.

Extends: TableProps
Used as props by: Table

- Stability: [Experimental](/cdk/api/stability.html)
- Source: [`lib/table.ts`](https://github.com/aws/aws-cdk/blob/v2.274.0-alpha.0/packages/@aws-cdk/aws-s3tables-alpha/lib/table.ts#L201)

## Example

```ts
// Build a table with partition spec (minimal configuration)
const partitionedTable = new Table(scope, 'PartitionedTable', {
    tableName: 'partitioned_table',
    namespace: namespace,
    openTableFormat: OpenTableFormat.ICEBERG,
    icebergMetadata: {
        icebergSchema: {
            schemaFieldList: [
                { name: 'event_date', type: 'date', required: true },
                { name: 'event_name', type: 'string' },
            ],
        },
        icebergPartitionSpec: {
            fields: [
                {
                    sourceId: 1,
                    transform: IcebergTransform.IDENTITY,
                    name: 'date_partition',
                },
            ],
        },
    },
});
```

## Properties

- `compaction`: [CompactionProperty](/cdk/api/v2/docs/@aws-cdk_aws-s3tables-alpha.CompactionProperty.html) — Settings governing the Compaction maintenance action.

  **Default:** Amazon S3 selects the best compaction strategy based on your table sort order.

- `icebergMetadata`: [IcebergMetadataProperty](/cdk/api/v2/docs/@aws-cdk_aws-s3tables-alpha.IcebergMetadataProperty.html) — Contains details about the metadata for an Iceberg table.

  **Default:** table is created without any metadata

- `namespace`: [INamespace](/cdk/api/v2/docs/@aws-cdk_aws-s3tables-alpha.INamespace.html) (required) — The namespace under which this table is created.

- `openTableFormat`: [OpenTableFormat](/cdk/api/v2/docs/@aws-cdk_aws-s3tables-alpha.OpenTableFormat.html) (required) — Format of this table.

  Currently, the only supported value is OpenTableFormat.ICEBERG.

- `removalPolicy`: [RemovalPolicy](/cdk/api/v2/docs/aws-cdk-lib.RemovalPolicy.html) = RETAIN — Controls what happens to this table it it stoped being managed by cloudformation.

- `snapshotManagement`: [SnapshotManagementProperty](/cdk/api/v2/docs/@aws-cdk_aws-s3tables-alpha.SnapshotManagementProperty.html) — Contains details about the snapshot management settings for an Iceberg table.

  **Default:** enabled: MinimumSnapshots is 1 by default and MaximumSnapshotAge is 120 hours by default.

- `storageClass`: [StorageClass](/cdk/api/v2/docs/@aws-cdk_aws-s3tables-alpha.StorageClass.html) — The storage class for the table.

  **Default:** Inherits from the table bucket's storage class configuration

  Determines the storage tier used for table data, allowing optimization
  for different access patterns and cost profiles.

  Note: This is a create-only property and cannot be changed after the table is created.

- `tableName`: string (required) — Name of this table, unique within the namespace.

- `withoutMetadata`: boolean = false — If true, indicates that you don't want to specify a schema for the table.

  This property is mutually exclusive to 'IcebergMetadata'.
