Skip to content

Commit 10bab0f

Browse files
This release supports additional ConversionSpec parameter as part of IntegrationPartition Structure in CreateIntegrationTableProperty API. This parameter is referred to apply appropriate column transformation for columns that are used for timestamp based partitioning
1 parent b8f6fb0 commit 10bab0f

File tree

10 files changed

+109
-10
lines changed

10 files changed

+109
-10
lines changed

generator/ServiceModels/glue/glue-2017-03-31.api.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10868,7 +10868,8 @@
1086810868
"type":"structure",
1086910869
"members":{
1087010870
"FieldName":{"shape":"String128"},
10871-
"FunctionSpec":{"shape":"String128"}
10871+
"FunctionSpec":{"shape":"String128"},
10872+
"ConversionSpec":{"shape":"String128"}
1087210873
}
1087310874
},
1087410875
"IntegrationPartitionSpecList":{

generator/ServiceModels/glue/glue-2017-03-31.docs.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9513,7 +9513,7 @@
95139513
"CreateIntegrationResponse$TargetArn": "<p>The ARN of the target resource for the integration.</p>",
95149514
"CreateIntegrationResponse$IntegrationName": "<p>A unique name for an integration in Glue.</p>",
95159515
"CreateIntegrationResponse$IntegrationArn": "<p>The Amazon Resource Name (ARN) for the created integration.</p>",
9516-
"CreateIntegrationTablePropertiesRequest$ResourceArn": "<p>The connection ARN of the source, or the database ARN of the target.</p>",
9516+
"CreateIntegrationTablePropertiesRequest$ResourceArn": "<p>The Amazon Resource Name (ARN) of the target table for which to create integration table properties. Currently, this API only supports creating integration table properties for target tables, and the provided ARN should be the ARN of the target table in the Glue Data Catalog. Support for creating integration table properties for source connections (using the connection ARN) is not yet implemented and will be added in a future release. </p>",
95179517
"CreateIntegrationTablePropertiesRequest$TableName": "<p>The name of the table to be replicated.</p>",
95189518
"DeleteIntegrationRequest$IntegrationIdentifier": "<p>The Amazon Resource Name (ARN) for the integration.</p>",
95199519
"DeleteIntegrationResponse$SourceArn": "<p>The ARN of the source for the integration.</p>",
@@ -9531,9 +9531,9 @@
95319531
"DescribeIntegrationsResponse$Marker": "<p>A value that indicates the starting point for the next set of response records in a subsequent request.</p>",
95329532
"GetIntegrationResourcePropertyRequest$ResourceArn": "<p>The connection ARN of the source, or the database ARN of the target.</p>",
95339533
"GetIntegrationResourcePropertyResponse$ResourceArn": "<p>The connection ARN of the source, or the database ARN of the target.</p>",
9534-
"GetIntegrationTablePropertiesRequest$ResourceArn": "<p>The connection ARN of the source, or the database ARN of the target.</p>",
9534+
"GetIntegrationTablePropertiesRequest$ResourceArn": "<p>The Amazon Resource Name (ARN) of the target table for which to retrieve integration table properties. Currently, this API only supports retrieving properties for target tables, and the provided ARN should be the ARN of the target table in the Glue Data Catalog. Support for retrieving integration table properties for source connections (using the connection ARN) is not yet implemented and will be added in a future release. </p>",
95359535
"GetIntegrationTablePropertiesRequest$TableName": "<p>The name of the table to be replicated.</p>",
9536-
"GetIntegrationTablePropertiesResponse$ResourceArn": "<p>The connection ARN of the source, or the database ARN of the target.</p>",
9536+
"GetIntegrationTablePropertiesResponse$ResourceArn": "<p>The Amazon Resource Name (ARN) of the target table for which to retrieve integration table properties. Currently, this API only supports retrieving properties for target tables, and the provided ARN should be the ARN of the target table in the Glue Data Catalog. Support for retrieving integration table properties for source connections (using the connection ARN) is not yet implemented and will be added in a future release. </p>",
95379537
"GetIntegrationTablePropertiesResponse$TableName": "<p>The name of the table to be replicated.</p>",
95389538
"InboundIntegration$SourceArn": "<p>The ARN of the source resource for the integration.</p>",
95399539
"InboundIntegration$TargetArn": "<p>The ARN of the target resource for the integration.</p>",
@@ -9548,6 +9548,7 @@
95489548
"IntegrationFilterValues$member": null,
95499549
"IntegrationPartition$FieldName": "<p>The field name used to partition data on the target. Avoid using columns that have unique values for each row (for example, `LastModifiedTimestamp`, `SystemModTimeStamp`) as the partition column. These columns are not suitable for partitioning because they create a large number of small partitions, which can lead to performance issues.</p>",
95509550
"IntegrationPartition$FunctionSpec": "<p>Specifies the function used to partition data on the target. The only accepted value for this parameter is `'identity'` (string). The `'identity'` function ensures that the data partitioning on the target follows the same scheme as the source. In other words, the partitioning structure of the source data is preserved in the target destination.</p>",
9551+
"IntegrationPartition$ConversionSpec": "<p>Specifies the timestamp format of the source data. Valid values are:</p> <ul> <li> <p> <code>epoch_sec</code> - Unix epoch timestamp in seconds</p> </li> <li> <p> <code>epoch_milli</code> - Unix epoch timestamp in milliseconds</p> </li> <li> <p> <code>iso</code> - ISO 8601 formatted timestamp</p> </li> </ul> <note> <p> Only specify <code>ConversionSpec</code> when using timestamp-based partition functions (year, month, day, or hour). Glue Zero-ETL uses this parameter to correctly transform source data into timestamp format before partitioning. </p> <p> Do not use high-cardinality columns with the <code>identity</code> partition function. High-cardinality columns include: </p> <ul> <li> <p>Primary keys</p> </li> <li> <p>Timestamp fields (such as <code>LastModifiedTimestamp</code>, <code>CreatedDate</code>)</p> </li> <li> <p>System-generated timestamps</p> </li> </ul> <p> Using high-cardinality columns with identity partitioning creates many small partitions, which can significantly degrade ingestion performance. </p> </note>",
95519552
"ModifyIntegrationRequest$IntegrationIdentifier": "<p>The Amazon Resource Name (ARN) for the integration.</p>",
95529553
"ModifyIntegrationRequest$IntegrationName": "<p>A unique name for an integration in Glue.</p>",
95539554
"ModifyIntegrationResponse$SourceArn": "<p>The ARN of the source for the integration.</p>",

generator/ServiceModels/glue/glue-2017-03-31.normal.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9154,7 +9154,7 @@
91549154
"members":{
91559155
"ResourceArn":{
91569156
"shape":"String128",
9157-
"documentation":"<p>The connection ARN of the source, or the database ARN of the target.</p>"
9157+
"documentation":"<p>The Amazon Resource Name (ARN) of the target table for which to create integration table properties. Currently, this API only supports creating integration table properties for target tables, and the provided ARN should be the ARN of the target table in the Glue Data Catalog. Support for creating integration table properties for source connections (using the connection ARN) is not yet implemented and will be added in a future release. </p>"
91589158
},
91599159
"TableName":{
91609160
"shape":"String128",
@@ -14466,7 +14466,7 @@
1446614466
"members":{
1446714467
"ResourceArn":{
1446814468
"shape":"String128",
14469-
"documentation":"<p>The connection ARN of the source, or the database ARN of the target.</p>"
14469+
"documentation":"<p>The Amazon Resource Name (ARN) of the target table for which to retrieve integration table properties. Currently, this API only supports retrieving properties for target tables, and the provided ARN should be the ARN of the target table in the Glue Data Catalog. Support for retrieving integration table properties for source connections (using the connection ARN) is not yet implemented and will be added in a future release. </p>"
1447014470
},
1447114471
"TableName":{
1447214472
"shape":"String128",
@@ -14479,7 +14479,7 @@
1447914479
"members":{
1448014480
"ResourceArn":{
1448114481
"shape":"String128",
14482-
"documentation":"<p>The connection ARN of the source, or the database ARN of the target.</p>"
14482+
"documentation":"<p>The Amazon Resource Name (ARN) of the target table for which to retrieve integration table properties. Currently, this API only supports retrieving properties for target tables, and the provided ARN should be the ARN of the target table in the Glue Data Catalog. Support for retrieving integration table properties for source connections (using the connection ARN) is not yet implemented and will be added in a future release. </p>"
1448314483
},
1448414484
"TableName":{
1448514485
"shape":"String128",
@@ -16963,6 +16963,10 @@
1696316963
"FunctionSpec":{
1696416964
"shape":"String128",
1696516965
"documentation":"<p>Specifies the function used to partition data on the target. The only accepted value for this parameter is `'identity'` (string). The `'identity'` function ensures that the data partitioning on the target follows the same scheme as the source. In other words, the partitioning structure of the source data is preserved in the target destination.</p>"
16966+
},
16967+
"ConversionSpec":{
16968+
"shape":"String128",
16969+
"documentation":"<p>Specifies the timestamp format of the source data. Valid values are:</p> <ul> <li> <p> <code>epoch_sec</code> - Unix epoch timestamp in seconds</p> </li> <li> <p> <code>epoch_milli</code> - Unix epoch timestamp in milliseconds</p> </li> <li> <p> <code>iso</code> - ISO 8601 formatted timestamp</p> </li> </ul> <note> <p> Only specify <code>ConversionSpec</code> when using timestamp-based partition functions (year, month, day, or hour). Glue Zero-ETL uses this parameter to correctly transform source data into timestamp format before partitioning. </p> <p> Do not use high-cardinality columns with the <code>identity</code> partition function. High-cardinality columns include: </p> <ul> <li> <p>Primary keys</p> </li> <li> <p>Timestamp fields (such as <code>LastModifiedTimestamp</code>, <code>CreatedDate</code>)</p> </li> <li> <p>System-generated timestamps</p> </li> </ul> <p> Using high-cardinality columns with identity partitioning creates many small partitions, which can significantly degrade ingestion performance. </p> </note>"
1696616970
}
1696716971
},
1696816972
"documentation":"<p>A structure that describes how data is partitioned on the target.</p>"

sdk/code-analysis/ServiceAnalysis/Glue/Generated/PropertyValueRules.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5025,6 +5025,11 @@
50255025
<min>1</min>
50265026
<max>128</max>
50275027
</property-value-rule>
5028+
<property-value-rule>
5029+
<property>Amazon.Glue.Model.IntegrationPartition.ConversionSpec</property>
5030+
<min>1</min>
5031+
<max>128</max>
5032+
</property-value-rule>
50285033
<property-value-rule>
50295034
<property>Amazon.Glue.Model.IntegrationPartition.FieldName</property>
50305035
<min>1</min>

sdk/src/Services/Glue/Generated/Model/CreateIntegrationTablePropertiesRequest.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,12 @@ public partial class CreateIntegrationTablePropertiesRequest : AmazonGlueRequest
4747
/// <summary>
4848
/// Gets and sets the property ResourceArn.
4949
/// <para>
50-
/// The connection ARN of the source, or the database ARN of the target.
50+
/// The Amazon Resource Name (ARN) of the target table for which to create integration
51+
/// table properties. Currently, this API only supports creating integration table properties
52+
/// for target tables, and the provided ARN should be the ARN of the target table in the
53+
/// Glue Data Catalog. Support for creating integration table properties for source connections
54+
/// (using the connection ARN) is not yet implemented and will be added in a future release.
55+
///
5156
/// </para>
5257
/// </summary>
5358
[AWSProperty(Required=true, Min=1, Max=128)]

sdk/src/Services/Glue/Generated/Model/GetIntegrationTablePropertiesRequest.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,12 @@ public partial class GetIntegrationTablePropertiesRequest : AmazonGlueRequest
4343
/// <summary>
4444
/// Gets and sets the property ResourceArn.
4545
/// <para>
46-
/// The connection ARN of the source, or the database ARN of the target.
46+
/// The Amazon Resource Name (ARN) of the target table for which to retrieve integration
47+
/// table properties. Currently, this API only supports retrieving properties for target
48+
/// tables, and the provided ARN should be the ARN of the target table in the Glue Data
49+
/// Catalog. Support for retrieving integration table properties for source connections
50+
/// (using the connection ARN) is not yet implemented and will be added in a future release.
51+
///
4752
/// </para>
4853
/// </summary>
4954
[AWSProperty(Required=true, Min=1, Max=128)]

sdk/src/Services/Glue/Generated/Model/GetIntegrationTablePropertiesResponse.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,12 @@ public partial class GetIntegrationTablePropertiesResponse : AmazonWebServiceRes
4242
/// <summary>
4343
/// Gets and sets the property ResourceArn.
4444
/// <para>
45-
/// The connection ARN of the source, or the database ARN of the target.
45+
/// The Amazon Resource Name (ARN) of the target table for which to retrieve integration
46+
/// table properties. Currently, this API only supports retrieving properties for target
47+
/// tables, and the provided ARN should be the ARN of the target table in the Glue Data
48+
/// Catalog. Support for retrieving integration table properties for source connections
49+
/// (using the connection ARN) is not yet implemented and will be added in a future release.
50+
///
4651
/// </para>
4752
/// </summary>
4853
[AWSProperty(Min=1, Max=128)]

sdk/src/Services/Glue/Generated/Model/IntegrationPartition.cs

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,70 @@ namespace Amazon.Glue.Model
3434
/// </summary>
3535
public partial class IntegrationPartition
3636
{
37+
private string _conversionSpec;
3738
private string _fieldName;
3839
private string _functionSpec;
3940

41+
/// <summary>
42+
/// Gets and sets the property ConversionSpec.
43+
/// <para>
44+
/// Specifies the timestamp format of the source data. Valid values are:
45+
/// </para>
46+
/// <ul> <li>
47+
/// <para>
48+
/// <c>epoch_sec</c> - Unix epoch timestamp in seconds
49+
/// </para>
50+
/// </li> <li>
51+
/// <para>
52+
/// <c>epoch_milli</c> - Unix epoch timestamp in milliseconds
53+
/// </para>
54+
/// </li> <li>
55+
/// <para>
56+
/// <c>iso</c> - ISO 8601 formatted timestamp
57+
/// </para>
58+
/// </li> </ul> <note>
59+
/// <para>
60+
/// Only specify <c>ConversionSpec</c> when using timestamp-based partition functions
61+
/// (year, month, day, or hour). Glue Zero-ETL uses this parameter to correctly transform
62+
/// source data into timestamp format before partitioning.
63+
/// </para>
64+
///
65+
/// <para>
66+
/// Do not use high-cardinality columns with the <c>identity</c> partition function.
67+
/// High-cardinality columns include:
68+
/// </para>
69+
/// <ul> <li>
70+
/// <para>
71+
/// Primary keys
72+
/// </para>
73+
/// </li> <li>
74+
/// <para>
75+
/// Timestamp fields (such as <c>LastModifiedTimestamp</c>, <c>CreatedDate</c>)
76+
/// </para>
77+
/// </li> <li>
78+
/// <para>
79+
/// System-generated timestamps
80+
/// </para>
81+
/// </li> </ul>
82+
/// <para>
83+
/// Using high-cardinality columns with identity partitioning creates many small partitions,
84+
/// which can significantly degrade ingestion performance.
85+
/// </para>
86+
/// </note>
87+
/// </summary>
88+
[AWSProperty(Min=1, Max=128)]
89+
public string ConversionSpec
90+
{
91+
get { return this._conversionSpec; }
92+
set { this._conversionSpec = value; }
93+
}
94+
95+
// Check to see if ConversionSpec property is set
96+
internal bool IsSetConversionSpec()
97+
{
98+
return this._conversionSpec != null;
99+
}
100+
40101
/// <summary>
41102
/// Gets and sets the property FieldName.
42103
/// <para>

sdk/src/Services/Glue/Generated/Model/Internal/MarshallTransformations/IntegrationPartitionMarshaller.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ public void Marshall(IntegrationPartition requestObject, JsonMarshallerContext c
4848
{
4949
if(requestObject == null)
5050
return;
51+
if(requestObject.IsSetConversionSpec())
52+
{
53+
context.Writer.WritePropertyName("ConversionSpec");
54+
context.Writer.Write(requestObject.ConversionSpec);
55+
}
56+
5157
if(requestObject.IsSetFieldName())
5258
{
5359
context.Writer.WritePropertyName("FieldName");

sdk/src/Services/Glue/Generated/Model/Internal/MarshallTransformations/IntegrationPartitionUnmarshaller.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@ public IntegrationPartition Unmarshall(JsonUnmarshallerContext context)
6666
int targetDepth = context.CurrentDepth;
6767
while (context.ReadAtDepth(targetDepth))
6868
{
69+
if (context.TestExpression("ConversionSpec", targetDepth))
70+
{
71+
var unmarshaller = StringUnmarshaller.Instance;
72+
unmarshalledObject.ConversionSpec = unmarshaller.Unmarshall(context);
73+
continue;
74+
}
6975
if (context.TestExpression("FieldName", targetDepth))
7076
{
7177
var unmarshaller = StringUnmarshaller.Instance;

0 commit comments

Comments
 (0)