Class S3Table.Builder

java.lang.Object
software.amazon.awscdk.services.glue.alpha.S3Table.Builder
All Implemented Interfaces:
software.amazon.jsii.Builder<S3Table>
Enclosing class:
S3Table

@Stability(Experimental) public static final class S3Table.Builder extends Object implements software.amazon.jsii.Builder<S3Table>
(experimental) A fluent builder for S3Table.
  • Method Details

    • create

      @Stability(Experimental) public static S3Table.Builder create(software.constructs.Construct scope, String id)
      Parameters:
      scope - This parameter is required.
      id - This parameter is required.
      Returns:
      a new instance of S3Table.Builder.
    • columns

      @Stability(Experimental) public S3Table.Builder columns(List<? extends Column> columns)
      (experimental) Columns of the table.

      Parameters:
      columns - Columns of the table. This parameter is required.
      Returns:
      this
    • database

      @Stability(Experimental) public S3Table.Builder database(IDatabase database)
      (experimental) Database in which to store the table.

      Parameters:
      database - Database in which to store the table. This parameter is required.
      Returns:
      this
    • dataFormat

      @Stability(Experimental) public S3Table.Builder dataFormat(DataFormat dataFormat)
      (experimental) Storage type of the table's data.

      Parameters:
      dataFormat - Storage type of the table's data. This parameter is required.
      Returns:
      this
    • compressed

      @Stability(Experimental) public S3Table.Builder compressed(Boolean compressed)
      (experimental) Indicates whether the table's data is compressed or not.

      Default: false

      Parameters:
      compressed - Indicates whether the table's data is compressed or not. This parameter is required.
      Returns:
      this
    • description

      @Stability(Experimental) public S3Table.Builder description(String description)
      (experimental) Description of the table.

      Default: generated

      Parameters:
      description - Description of the table. This parameter is required.
      Returns:
      this
    • enablePartitionFiltering

      @Stability(Experimental) public S3Table.Builder enablePartitionFiltering(Boolean enablePartitionFiltering)
      (experimental) Enables partition filtering.

      Default: - The parameter is not defined

      Parameters:
      enablePartitionFiltering - Enables partition filtering. This parameter is required.
      Returns:
      this
      See Also:
    • hasEncryptedData

      @Stability(Experimental) public S3Table.Builder hasEncryptedData(Boolean hasEncryptedData)
      (experimental) Whether the data stored in the table is encrypted.

      This sets the has_encrypted_data table parameter. Athena reads it when querying client-side (CSE-KMS) encrypted datasets; for server-side encrypted (SSE-S3 / SSE-KMS) or unencrypted data it has no effect, since Amazon S3 decrypts server-side encrypted objects transparently.

      Do not also set has_encrypted_data through parameters - use this property instead. A conflicting value in parameters is rejected.

      Default: true

      Parameters:
      hasEncryptedData - Whether the data stored in the table is encrypted. This parameter is required.
      Returns:
      this
      See Also:
    • parameters

      @Stability(Experimental) public S3Table.Builder parameters(Map<String,String> parameters)
      (experimental) The key/value pairs define properties associated with the table.

      The key/value pairs that are allowed to be submitted are not limited, however their functionality is not guaranteed.

      Default: - The parameter is not defined

      Parameters:
      parameters - The key/value pairs define properties associated with the table. This parameter is required.
      Returns:
      this
      See Also:
    • partitionIndexes

      @Stability(Experimental) public S3Table.Builder partitionIndexes(List<? extends PartitionIndex> partitionIndexes)
      (experimental) Partition indexes on the table.

      A maximum of 3 indexes are allowed on a table. Keys in the index must be part of the table's partition keys.

      Default: table has no partition indexes

      Parameters:
      partitionIndexes - Partition indexes on the table. This parameter is required.
      Returns:
      this
    • partitionKeys

      @Stability(Experimental) public S3Table.Builder partitionKeys(List<? extends Column> partitionKeys)
      (experimental) Partition columns of the table.

      Default: table is not partitioned

      Parameters:
      partitionKeys - Partition columns of the table. This parameter is required.
      Returns:
      this
    • partitionProjection

      @Stability(Experimental) public S3Table.Builder partitionProjection(Map<String,? extends PartitionProjectionConfiguration> partitionProjection)
      (experimental) Partition projection configuration for this table.

      Partition projection allows Athena to automatically add new partitions without requiring ALTER TABLE ADD PARTITION statements.

      Default: - No partition projection

      Parameters:
      partitionProjection - Partition projection configuration for this table. This parameter is required.
      Returns:
      this
      See Also:
    • storageParameters

      @Stability(Experimental) public S3Table.Builder storageParameters(List<? extends StorageParameter> storageParameters)
      (experimental) The user-supplied properties for the description of the physical storage of this table.

      These properties help describe the format of the data that is stored within the crawled data sources.

      The key/value pairs that are allowed to be submitted are not limited, however their functionality is not guaranteed.

      Some keys will be auto-populated by glue crawlers, however, you can override them by specifying the key and value in this property.

      Default: - The parameter is not defined

      Example:

       IDatabase glueDatabase;
       S3Table table = S3Table.Builder.create(this, "Table")
               .storageParameters(List.of(StorageParameter.skipHeaderLineCount(1), StorageParameter.compressionType(CompressionType.GZIP), StorageParameter.custom("foo", "bar"), StorageParameter.custom("separatorChar", ","), StorageParameter.custom(StorageParameters.WRITE_PARALLEL, "off")))
               // ...
               .database(glueDatabase)
               .columns(List.of(Column.builder()
                       .name("col1")
                       .type(Schema.STRING)
                       .build()))
               .dataFormat(DataFormat.CSV)
               .build();
       

      Parameters:
      storageParameters - The user-supplied properties for the description of the physical storage of this table. This parameter is required.
      Returns:
      this
      See Also:
    • storedAsSubDirectories

      @Stability(Experimental) public S3Table.Builder storedAsSubDirectories(Boolean storedAsSubDirectories)
      (experimental) Indicates whether the table data is stored in subdirectories.

      Default: false

      Parameters:
      storedAsSubDirectories - Indicates whether the table data is stored in subdirectories. This parameter is required.
      Returns:
      this
    • tableName

      @Stability(Experimental) public S3Table.Builder tableName(String tableName)
      (experimental) Name of the table.

      Default: - generated by CDK.

      Parameters:
      tableName - Name of the table. This parameter is required.
      Returns:
      this
    • clientSideEncryption

      @Stability(Experimental) public S3Table.Builder clientSideEncryption(TableClientSideEncryption clientSideEncryption)
      (experimental) Client-side encryption (CSE-KMS) for the table's data.

      Independent of the bucket's server-side encryption, and valid whether the bucket is managed or provided.

      Default: - no client-side encryption

      Parameters:
      clientSideEncryption - Client-side encryption (CSE-KMS) for the table's data. This parameter is required.
      Returns:
      this
    • s3Prefix

      @Stability(Experimental) public S3Table.Builder s3Prefix(String s3Prefix)
      (experimental) S3 prefix under which table objects are stored.

      When the table shares a bucket with other tables or consumers, set this so that the grant* methods scope S3 access to this table's data. Without a prefix, those grants cover the entire bucket.

      Default: - No prefix. The data will be stored under the root of the bucket.

      Parameters:
      s3Prefix - S3 prefix under which table objects are stored. This parameter is required.
      Returns:
      this
    • storage

      @Stability(Experimental) public S3Table.Builder storage(S3TableStorage storage)
      (experimental) Where the table's data is stored: a bucket created and managed by the table, or an existing bucket you provide.

      Default: - a managed bucket with S3-managed (SSE-S3) encryption

      Parameters:
      storage - Where the table's data is stored: a bucket created and managed by the table, or an existing bucket you provide. This parameter is required.
      Returns:
      this
    • build

      @Stability(Experimental) public S3Table build()
      Specified by:
      build in interface software.amazon.jsii.Builder<S3Table>
      Returns:
      a newly built instance of S3Table.