@aws-sdk/client-timestream-query 3.675.0 → 3.677.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,7 +13,7 @@ AWS SDK for JavaScript TimestreamQuery Client for Node.js, Browser and React Nat
13
13
 
14
14
  ## Installing
15
15
 
16
- To install the this package, simply type add or install @aws-sdk/client-timestream-query
16
+ To install this package, simply type add or install @aws-sdk/client-timestream-query
17
17
  using your favorite package manager:
18
18
 
19
19
  - `npm install @aws-sdk/client-timestream-query`
package/dist-cjs/index.js CHANGED
@@ -44,6 +44,7 @@ __export(src_exports, {
44
44
  PrepareQueryResponseFilterSensitiveLog: () => PrepareQueryResponseFilterSensitiveLog,
45
45
  QueryCommand: () => QueryCommand,
46
46
  QueryExecutionException: () => QueryExecutionException,
47
+ QueryInsightsMode: () => QueryInsightsMode,
47
48
  QueryPricingModel: () => QueryPricingModel,
48
49
  QueryRequestFilterSensitiveLog: () => QueryRequestFilterSensitiveLog,
49
50
  ResourceNotFoundException: () => ResourceNotFoundException,
@@ -51,6 +52,7 @@ __export(src_exports, {
51
52
  ScalarMeasureValueType: () => ScalarMeasureValueType,
52
53
  ScalarType: () => ScalarType,
53
54
  ScheduledQueryDescriptionFilterSensitiveLog: () => ScheduledQueryDescriptionFilterSensitiveLog,
55
+ ScheduledQueryInsightsMode: () => ScheduledQueryInsightsMode,
54
56
  ScheduledQueryRunStatus: () => ScheduledQueryRunStatus,
55
57
  ScheduledQueryState: () => ScheduledQueryState,
56
58
  ServiceQuotaExceededException: () => ServiceQuotaExceededException,
@@ -322,6 +324,10 @@ var ScheduledQueryState = {
322
324
  DISABLED: "DISABLED",
323
325
  ENABLED: "ENABLED"
324
326
  };
327
+ var ScheduledQueryInsightsMode = {
328
+ DISABLED: "DISABLED",
329
+ ENABLED_WITH_RATE_CONTROL: "ENABLED_WITH_RATE_CONTROL"
330
+ };
325
331
  var _QueryExecutionException = class _QueryExecutionException extends TimestreamQueryServiceException {
326
332
  /**
327
333
  * @internal
@@ -340,6 +346,10 @@ var _QueryExecutionException = class _QueryExecutionException extends Timestream
340
346
  };
341
347
  __name(_QueryExecutionException, "QueryExecutionException");
342
348
  var QueryExecutionException = _QueryExecutionException;
349
+ var QueryInsightsMode = {
350
+ DISABLED: "DISABLED",
351
+ ENABLED_WITH_RATE_CONTROL: "ENABLED_WITH_RATE_CONTROL"
352
+ };
343
353
  var CreateScheduledQueryRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({
344
354
  ...obj,
345
355
  ...obj.QueryString && { QueryString: import_smithy_client.SENSITIVE_STRING },
@@ -790,6 +800,7 @@ var se_ExecuteScheduledQueryRequest = /* @__PURE__ */ __name((input, context) =>
790
800
  return (0, import_smithy_client.take)(input, {
791
801
  ClientToken: [true, (_) => _ ?? (0, import_uuid.v4)()],
792
802
  InvocationTime: (_) => _.getTime() / 1e3,
803
+ QueryInsights: import_smithy_client._json,
793
804
  ScheduledQueryArn: []
794
805
  });
795
806
  }, "se_ExecuteScheduledQueryRequest");
@@ -798,6 +809,7 @@ var se_QueryRequest = /* @__PURE__ */ __name((input, context) => {
798
809
  ClientToken: [true, (_) => _ ?? (0, import_uuid.v4)()],
799
810
  MaxRows: [],
800
811
  NextToken: [],
812
+ QueryInsights: import_smithy_client._json,
801
813
  QueryString: []
802
814
  });
803
815
  }, "se_QueryRequest");
@@ -858,15 +870,40 @@ var de_PrepareQueryResponse = /* @__PURE__ */ __name((output, context) => {
858
870
  QueryString: import_smithy_client.expectString
859
871
  });
860
872
  }, "de_PrepareQueryResponse");
873
+ var de_QueryInsightsResponse = /* @__PURE__ */ __name((output, context) => {
874
+ return (0, import_smithy_client.take)(output, {
875
+ OutputBytes: import_smithy_client.expectLong,
876
+ OutputRows: import_smithy_client.expectLong,
877
+ QuerySpatialCoverage: (_) => de_QuerySpatialCoverage(_, context),
878
+ QueryTableCount: import_smithy_client.expectLong,
879
+ QueryTemporalRange: import_smithy_client._json,
880
+ UnloadPartitionCount: import_smithy_client.expectLong,
881
+ UnloadWrittenBytes: import_smithy_client.expectLong,
882
+ UnloadWrittenRows: import_smithy_client.expectLong
883
+ });
884
+ }, "de_QueryInsightsResponse");
861
885
  var de_QueryResponse = /* @__PURE__ */ __name((output, context) => {
862
886
  return (0, import_smithy_client.take)(output, {
863
887
  ColumnInfo: (_) => de_ColumnInfoList(_, context),
864
888
  NextToken: import_smithy_client.expectString,
865
889
  QueryId: import_smithy_client.expectString,
890
+ QueryInsightsResponse: (_) => de_QueryInsightsResponse(_, context),
866
891
  QueryStatus: (_) => de_QueryStatus(_, context),
867
892
  Rows: (_) => de_RowList(_, context)
868
893
  });
869
894
  }, "de_QueryResponse");
895
+ var de_QuerySpatialCoverage = /* @__PURE__ */ __name((output, context) => {
896
+ return (0, import_smithy_client.take)(output, {
897
+ Max: (_) => de_QuerySpatialCoverageMax(_, context)
898
+ });
899
+ }, "de_QuerySpatialCoverage");
900
+ var de_QuerySpatialCoverageMax = /* @__PURE__ */ __name((output, context) => {
901
+ return (0, import_smithy_client.take)(output, {
902
+ PartitionKey: import_smithy_client._json,
903
+ TableArn: import_smithy_client.expectString,
904
+ Value: import_smithy_client.limitedParseDouble
905
+ });
906
+ }, "de_QuerySpatialCoverageMax");
870
907
  var de_QueryStatus = /* @__PURE__ */ __name((output, context) => {
871
908
  return (0, import_smithy_client.take)(output, {
872
909
  CumulativeBytesMetered: import_smithy_client.expectLong,
@@ -917,6 +954,15 @@ var de_ScheduledQueryDescription = /* @__PURE__ */ __name((output, context) => {
917
954
  TargetConfiguration: import_smithy_client._json
918
955
  });
919
956
  }, "de_ScheduledQueryDescription");
957
+ var de_ScheduledQueryInsightsResponse = /* @__PURE__ */ __name((output, context) => {
958
+ return (0, import_smithy_client.take)(output, {
959
+ OutputBytes: import_smithy_client.expectLong,
960
+ OutputRows: import_smithy_client.expectLong,
961
+ QuerySpatialCoverage: (_) => de_QuerySpatialCoverage(_, context),
962
+ QueryTableCount: import_smithy_client.expectLong,
963
+ QueryTemporalRange: import_smithy_client._json
964
+ });
965
+ }, "de_ScheduledQueryInsightsResponse");
920
966
  var de_ScheduledQueryList = /* @__PURE__ */ __name((output, context) => {
921
967
  const retVal = (output || []).filter((e) => e != null).map((entry) => {
922
968
  return de_ScheduledQuery(entry, context);
@@ -929,6 +975,7 @@ var de_ScheduledQueryRunSummary = /* @__PURE__ */ __name((output, context) => {
929
975
  ExecutionStats: import_smithy_client._json,
930
976
  FailureReason: import_smithy_client.expectString,
931
977
  InvocationTime: (_) => (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseEpochTimestamp)((0, import_smithy_client.expectNumber)(_))),
978
+ QueryInsightsResponse: (_) => de_ScheduledQueryInsightsResponse(_, context),
932
979
  RunStatus: import_smithy_client.expectString,
933
980
  TriggerTime: (_) => (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseEpochTimestamp)((0, import_smithy_client.expectNumber)(_)))
934
981
  });
@@ -1489,7 +1536,9 @@ var paginateQuery = (0, import_core5.createPaginator)(TimestreamQueryClient, Que
1489
1536
  QueryPricingModel,
1490
1537
  ScheduledQueryRunStatus,
1491
1538
  ScheduledQueryState,
1539
+ ScheduledQueryInsightsMode,
1492
1540
  QueryExecutionException,
1541
+ QueryInsightsMode,
1493
1542
  CreateScheduledQueryRequestFilterSensitiveLog,
1494
1543
  ScheduledQueryDescriptionFilterSensitiveLog,
1495
1544
  DescribeScheduledQueryResponseFilterSensitiveLog,
@@ -153,6 +153,10 @@ export const ScheduledQueryState = {
153
153
  DISABLED: "DISABLED",
154
154
  ENABLED: "ENABLED",
155
155
  };
156
+ export const ScheduledQueryInsightsMode = {
157
+ DISABLED: "DISABLED",
158
+ ENABLED_WITH_RATE_CONTROL: "ENABLED_WITH_RATE_CONTROL",
159
+ };
156
160
  export class QueryExecutionException extends __BaseException {
157
161
  constructor(opts) {
158
162
  super({
@@ -166,6 +170,10 @@ export class QueryExecutionException extends __BaseException {
166
170
  this.Message = opts.Message;
167
171
  }
168
172
  }
173
+ export const QueryInsightsMode = {
174
+ DISABLED: "DISABLED",
175
+ ENABLED_WITH_RATE_CONTROL: "ENABLED_WITH_RATE_CONTROL",
176
+ };
169
177
  export const CreateScheduledQueryRequestFilterSensitiveLog = (obj) => ({
170
178
  ...obj,
171
179
  ...(obj.QueryString && { QueryString: SENSITIVE_STRING }),
@@ -422,6 +422,7 @@ const se_ExecuteScheduledQueryRequest = (input, context) => {
422
422
  return take(input, {
423
423
  ClientToken: [true, (_) => _ ?? generateIdempotencyToken()],
424
424
  InvocationTime: (_) => _.getTime() / 1000,
425
+ QueryInsights: _json,
425
426
  ScheduledQueryArn: [],
426
427
  });
427
428
  };
@@ -430,6 +431,7 @@ const se_QueryRequest = (input, context) => {
430
431
  ClientToken: [true, (_) => _ ?? generateIdempotencyToken()],
431
432
  MaxRows: [],
432
433
  NextToken: [],
434
+ QueryInsights: _json,
433
435
  QueryString: [],
434
436
  });
435
437
  };
@@ -496,15 +498,40 @@ const de_PrepareQueryResponse = (output, context) => {
496
498
  QueryString: __expectString,
497
499
  });
498
500
  };
501
+ const de_QueryInsightsResponse = (output, context) => {
502
+ return take(output, {
503
+ OutputBytes: __expectLong,
504
+ OutputRows: __expectLong,
505
+ QuerySpatialCoverage: (_) => de_QuerySpatialCoverage(_, context),
506
+ QueryTableCount: __expectLong,
507
+ QueryTemporalRange: _json,
508
+ UnloadPartitionCount: __expectLong,
509
+ UnloadWrittenBytes: __expectLong,
510
+ UnloadWrittenRows: __expectLong,
511
+ });
512
+ };
499
513
  const de_QueryResponse = (output, context) => {
500
514
  return take(output, {
501
515
  ColumnInfo: (_) => de_ColumnInfoList(_, context),
502
516
  NextToken: __expectString,
503
517
  QueryId: __expectString,
518
+ QueryInsightsResponse: (_) => de_QueryInsightsResponse(_, context),
504
519
  QueryStatus: (_) => de_QueryStatus(_, context),
505
520
  Rows: (_) => de_RowList(_, context),
506
521
  });
507
522
  };
523
+ const de_QuerySpatialCoverage = (output, context) => {
524
+ return take(output, {
525
+ Max: (_) => de_QuerySpatialCoverageMax(_, context),
526
+ });
527
+ };
528
+ const de_QuerySpatialCoverageMax = (output, context) => {
529
+ return take(output, {
530
+ PartitionKey: _json,
531
+ TableArn: __expectString,
532
+ Value: __limitedParseDouble,
533
+ });
534
+ };
508
535
  const de_QueryStatus = (output, context) => {
509
536
  return take(output, {
510
537
  CumulativeBytesMetered: __expectLong,
@@ -557,6 +584,15 @@ const de_ScheduledQueryDescription = (output, context) => {
557
584
  TargetConfiguration: _json,
558
585
  });
559
586
  };
587
+ const de_ScheduledQueryInsightsResponse = (output, context) => {
588
+ return take(output, {
589
+ OutputBytes: __expectLong,
590
+ OutputRows: __expectLong,
591
+ QuerySpatialCoverage: (_) => de_QuerySpatialCoverage(_, context),
592
+ QueryTableCount: __expectLong,
593
+ QueryTemporalRange: _json,
594
+ });
595
+ };
560
596
  const de_ScheduledQueryList = (output, context) => {
561
597
  const retVal = (output || [])
562
598
  .filter((e) => e != null)
@@ -571,6 +607,7 @@ const de_ScheduledQueryRunSummary = (output, context) => {
571
607
  ExecutionStats: _json,
572
608
  FailureReason: __expectString,
573
609
  InvocationTime: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),
610
+ QueryInsightsResponse: (_) => de_ScheduledQueryInsightsResponse(_, context),
574
611
  RunStatus: __expectString,
575
612
  TriggerTime: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),
576
613
  });
@@ -116,6 +116,26 @@ declare const DescribeScheduledQueryCommand_base: {
116
116
  * // RecordsIngested: Number("long"),
117
117
  * // QueryResultRows: Number("long"),
118
118
  * // },
119
+ * // QueryInsightsResponse: { // ScheduledQueryInsightsResponse
120
+ * // QuerySpatialCoverage: { // QuerySpatialCoverage
121
+ * // Max: { // QuerySpatialCoverageMax
122
+ * // Value: Number("double"),
123
+ * // TableArn: "STRING_VALUE",
124
+ * // PartitionKey: [ // PartitionKeyList
125
+ * // "STRING_VALUE",
126
+ * // ],
127
+ * // },
128
+ * // },
129
+ * // QueryTemporalRange: { // QueryTemporalRange
130
+ * // Max: { // QueryTemporalRangeMax
131
+ * // Value: Number("long"),
132
+ * // TableArn: "STRING_VALUE",
133
+ * // },
134
+ * // },
135
+ * // QueryTableCount: Number("long"),
136
+ * // OutputRows: Number("long"),
137
+ * // OutputBytes: Number("long"),
138
+ * // },
119
139
  * // ErrorReportLocation: { // ErrorReportLocation
120
140
  * // S3ReportLocation: { // S3ReportLocation
121
141
  * // BucketName: "STRING_VALUE",
@@ -137,6 +157,26 @@ declare const DescribeScheduledQueryCommand_base: {
137
157
  * // RecordsIngested: Number("long"),
138
158
  * // QueryResultRows: Number("long"),
139
159
  * // },
160
+ * // QueryInsightsResponse: {
161
+ * // QuerySpatialCoverage: {
162
+ * // Max: {
163
+ * // Value: Number("double"),
164
+ * // TableArn: "STRING_VALUE",
165
+ * // PartitionKey: [
166
+ * // "STRING_VALUE",
167
+ * // ],
168
+ * // },
169
+ * // },
170
+ * // QueryTemporalRange: {
171
+ * // Max: {
172
+ * // Value: Number("long"),
173
+ * // TableArn: "STRING_VALUE",
174
+ * // },
175
+ * // },
176
+ * // QueryTableCount: Number("long"),
177
+ * // OutputRows: Number("long"),
178
+ * // OutputBytes: Number("long"),
179
+ * // },
140
180
  * // ErrorReportLocation: {
141
181
  * // S3ReportLocation: {
142
182
  * // BucketName: "STRING_VALUE",
@@ -28,6 +28,7 @@ declare const ExecuteScheduledQueryCommand_base: {
28
28
  };
29
29
  /**
30
30
  * <p> You can use this API to run a scheduled query manually. </p>
31
+ * <p>If you enabled <code>QueryInsights</code>, this API also returns insights and metrics related to the query that you executed as part of an Amazon SNS notification. <code>QueryInsights</code> helps with performance tuning of your query.</p>
31
32
  * @example
32
33
  * Use a bare-bones client and the command you need to make an API call.
33
34
  * ```javascript
@@ -38,6 +39,9 @@ declare const ExecuteScheduledQueryCommand_base: {
38
39
  * ScheduledQueryArn: "STRING_VALUE", // required
39
40
  * InvocationTime: new Date("TIMESTAMP"), // required
40
41
  * ClientToken: "STRING_VALUE",
42
+ * QueryInsights: { // ScheduledQueryInsights
43
+ * Mode: "ENABLED_WITH_RATE_CONTROL" || "DISABLED", // required
44
+ * },
41
45
  * };
42
46
  * const command = new ExecuteScheduledQueryCommand(input);
43
47
  * const response = await client.send(command);
@@ -29,7 +29,13 @@ declare const QueryCommand_base: {
29
29
  /**
30
30
  * <p>
31
31
  * <code>Query</code> is a synchronous operation that enables you to run a query against
32
- * your Amazon Timestream data. <code>Query</code> will time out after 60 seconds.
32
+ * your Amazon Timestream data.</p>
33
+ * <p>If you enabled <code>QueryInsights</code>, this API also returns insights and metrics related to the query that you executed. <code>QueryInsights</code> helps with performance tuning of your query.</p>
34
+ * <note>
35
+ * <p>The maximum number of <code>Query</code> API requests you're allowed to make with <code>QueryInsights</code> enabled is 1 query per second (QPS). If you exceed this query rate, it might result in throttling.</p>
36
+ * </note>
37
+ * <p>
38
+ * <code>Query</code> will time out after 60 seconds.
33
39
  * You must update the default timeout in the SDK to support a timeout of 60 seconds. See
34
40
  * the <a href="https://docs.aws.amazon.com/timestream/latest/developerguide/code-samples.run-query.html">code
35
41
  * sample</a> for details. </p>
@@ -69,6 +75,9 @@ declare const QueryCommand_base: {
69
75
  * ClientToken: "STRING_VALUE",
70
76
  * NextToken: "STRING_VALUE",
71
77
  * MaxRows: Number("int"),
78
+ * QueryInsights: { // QueryInsights
79
+ * Mode: "ENABLED_WITH_RATE_CONTROL" || "DISABLED", // required
80
+ * },
72
81
  * };
73
82
  * const command = new QueryCommand(input);
74
83
  * const response = await client.send(command);
@@ -134,6 +143,29 @@ declare const QueryCommand_base: {
134
143
  * // CumulativeBytesScanned: Number("long"),
135
144
  * // CumulativeBytesMetered: Number("long"),
136
145
  * // },
146
+ * // QueryInsightsResponse: { // QueryInsightsResponse
147
+ * // QuerySpatialCoverage: { // QuerySpatialCoverage
148
+ * // Max: { // QuerySpatialCoverageMax
149
+ * // Value: Number("double"),
150
+ * // TableArn: "STRING_VALUE",
151
+ * // PartitionKey: [ // PartitionKeyList
152
+ * // "STRING_VALUE",
153
+ * // ],
154
+ * // },
155
+ * // },
156
+ * // QueryTemporalRange: { // QueryTemporalRange
157
+ * // Max: { // QueryTemporalRangeMax
158
+ * // Value: Number("long"),
159
+ * // TableArn: "STRING_VALUE",
160
+ * // },
161
+ * // },
162
+ * // QueryTableCount: Number("long"),
163
+ * // OutputRows: Number("long"),
164
+ * // OutputBytes: Number("long"),
165
+ * // UnloadPartitionCount: Number("long"),
166
+ * // UnloadWrittenRows: Number("long"),
167
+ * // UnloadWrittenBytes: Number("long"),
168
+ * // },
137
169
  * // };
138
170
  *
139
171
  * ```
@@ -696,6 +696,140 @@ export interface ExecutionStats {
696
696
  */
697
697
  QueryResultRows?: number;
698
698
  }
699
+ /**
700
+ * <p>Provides insights into the table with the most sub-optimal spatial range scanned by your query.</p>
701
+ * @public
702
+ */
703
+ export interface QuerySpatialCoverageMax {
704
+ /**
705
+ * <p>The maximum ratio of spatial coverage.</p>
706
+ * @public
707
+ */
708
+ Value?: number;
709
+ /**
710
+ * <p>The Amazon Resource Name (ARN) of the table with the most sub-optimal spatial pruning.</p>
711
+ * @public
712
+ */
713
+ TableArn?: string;
714
+ /**
715
+ * <p>The partition key used for partitioning, which can be a default <code>measure_name</code> or a <a href="https://docs.aws.amazon.com/timestream/latest/developerguide/customer-defined-partition-keys.html">customer defined partition key</a>.</p>
716
+ * @public
717
+ */
718
+ PartitionKey?: string[];
719
+ }
720
+ /**
721
+ * <p>Provides insights into the spatial coverage of the query, including the table with sub-optimal (max) spatial pruning. This information can help you identify areas for improvement in your partitioning strategy to enhance spatial pruning</p>
722
+ * <p>For example, you can do the following with the <code>QuerySpatialCoverage</code> information:</p>
723
+ * <ul>
724
+ * <li>
725
+ * <p>Add measure_name or use <a href="https://docs.aws.amazon.com/timestream/latest/developerguide/customer-defined-partition-keys.html">customer-defined partition key</a> (CDPK) predicates.</p>
726
+ * </li>
727
+ * <li>
728
+ * <p>If you've already done the preceding action, remove functions around them or clauses, such as <code>LIKE</code>.</p>
729
+ * </li>
730
+ * </ul>
731
+ * @public
732
+ */
733
+ export interface QuerySpatialCoverage {
734
+ /**
735
+ * <p>Provides insights into the spatial coverage of the executed query and the table with the most inefficient spatial pruning.</p>
736
+ * <ul>
737
+ * <li>
738
+ * <p>
739
+ * <code>Value</code> – The maximum ratio of spatial coverage.</p>
740
+ * </li>
741
+ * <li>
742
+ * <p>
743
+ * <code>TableArn</code> – The Amazon Resource Name (ARN) of the table with sub-optimal spatial pruning.</p>
744
+ * </li>
745
+ * <li>
746
+ * <p>
747
+ * <code>PartitionKey</code> – The partition key used for partitioning, which can be a default <code>measure_name</code> or a CDPK.</p>
748
+ * </li>
749
+ * </ul>
750
+ * @public
751
+ */
752
+ Max?: QuerySpatialCoverageMax;
753
+ }
754
+ /**
755
+ * <p>Provides insights into the table with the most sub-optimal temporal pruning scanned by your query.</p>
756
+ * @public
757
+ */
758
+ export interface QueryTemporalRangeMax {
759
+ /**
760
+ * <p>The maximum duration in nanoseconds between the start and end of the query.</p>
761
+ * @public
762
+ */
763
+ Value?: number;
764
+ /**
765
+ * <p>The Amazon Resource Name (ARN) of the table which is queried with the largest time range.</p>
766
+ * @public
767
+ */
768
+ TableArn?: string;
769
+ }
770
+ /**
771
+ * <p>Provides insights into the temporal range of the query, including the table with the largest (max) time range.</p>
772
+ * @public
773
+ */
774
+ export interface QueryTemporalRange {
775
+ /**
776
+ * <p>Encapsulates the following properties that provide insights into the most sub-optimal performing table on the temporal axis:</p>
777
+ * <ul>
778
+ * <li>
779
+ * <p>
780
+ * <code>Value</code> – The maximum duration in nanoseconds between the start and end of the query.</p>
781
+ * </li>
782
+ * <li>
783
+ * <p>
784
+ * <code>TableArn</code> – The Amazon Resource Name (ARN) of the table which is queried with the largest time range.</p>
785
+ * </li>
786
+ * </ul>
787
+ * @public
788
+ */
789
+ Max?: QueryTemporalRangeMax;
790
+ }
791
+ /**
792
+ * <p>Provides various insights and metrics related to the <code>ExecuteScheduledQueryRequest</code> that was executed.</p>
793
+ * @public
794
+ */
795
+ export interface ScheduledQueryInsightsResponse {
796
+ /**
797
+ * <p>Provides insights into the spatial coverage of the query, including the table with sub-optimal (max) spatial pruning. This information can help you identify areas for improvement in your partitioning strategy to enhance spatial pruning.</p>
798
+ * @public
799
+ */
800
+ QuerySpatialCoverage?: QuerySpatialCoverage;
801
+ /**
802
+ * <p>Provides insights into the temporal range of the query, including the table with the largest (max) time range. Following are some of the potential options for optimizing time-based pruning:</p>
803
+ * <ul>
804
+ * <li>
805
+ * <p>Add missing time-predicates.</p>
806
+ * </li>
807
+ * <li>
808
+ * <p>Remove functions around the time predicates.</p>
809
+ * </li>
810
+ * <li>
811
+ * <p>Add time predicates to all the sub-queries.</p>
812
+ * </li>
813
+ * </ul>
814
+ * @public
815
+ */
816
+ QueryTemporalRange?: QueryTemporalRange;
817
+ /**
818
+ * <p>Indicates the number of tables in the query.</p>
819
+ * @public
820
+ */
821
+ QueryTableCount?: number;
822
+ /**
823
+ * <p>Indicates the total number of rows returned as part of the query result set. You can use this data to validate if the number of rows in the result set have changed as part of the query tuning exercise.</p>
824
+ * @public
825
+ */
826
+ OutputRows?: number;
827
+ /**
828
+ * <p>Indicates the size of query result set in bytes. You can use this data to validate if the result set has changed as part of the query tuning exercise.</p>
829
+ * @public
830
+ */
831
+ OutputBytes?: number;
832
+ }
699
833
  /**
700
834
  * @public
701
835
  * @enum
@@ -737,6 +871,11 @@ export interface ScheduledQueryRunSummary {
737
871
  * @public
738
872
  */
739
873
  ExecutionStats?: ExecutionStats;
874
+ /**
875
+ * <p>Provides various insights and metrics related to the run summary of the scheduled query.</p>
876
+ * @public
877
+ */
878
+ QueryInsightsResponse?: ScheduledQueryInsightsResponse;
740
879
  /**
741
880
  * <p>S3 location for error report.</p>
742
881
  * @public
@@ -852,6 +991,39 @@ export interface DescribeScheduledQueryResponse {
852
991
  */
853
992
  ScheduledQuery: ScheduledQueryDescription | undefined;
854
993
  }
994
+ /**
995
+ * @public
996
+ * @enum
997
+ */
998
+ export declare const ScheduledQueryInsightsMode: {
999
+ readonly DISABLED: "DISABLED";
1000
+ readonly ENABLED_WITH_RATE_CONTROL: "ENABLED_WITH_RATE_CONTROL";
1001
+ };
1002
+ /**
1003
+ * @public
1004
+ */
1005
+ export type ScheduledQueryInsightsMode = (typeof ScheduledQueryInsightsMode)[keyof typeof ScheduledQueryInsightsMode];
1006
+ /**
1007
+ * <p>Encapsulates settings for enabling <code>QueryInsights</code> on an <code>ExecuteScheduledQueryRequest</code>.</p>
1008
+ * @public
1009
+ */
1010
+ export interface ScheduledQueryInsights {
1011
+ /**
1012
+ * <p>Provides the following modes to enable <code>ScheduledQueryInsights</code>:</p>
1013
+ * <ul>
1014
+ * <li>
1015
+ * <p>
1016
+ * <code>ENABLED_WITH_RATE_CONTROL</code> – Enables <code>ScheduledQueryInsights</code> for the queries being processed. This mode also includes a rate control mechanism, which limits the <code>QueryInsights</code> feature to 1 query per second (QPS).</p>
1017
+ * </li>
1018
+ * <li>
1019
+ * <p>
1020
+ * <code>DISABLED</code> – Disables <code>ScheduledQueryInsights</code>.</p>
1021
+ * </li>
1022
+ * </ul>
1023
+ * @public
1024
+ */
1025
+ Mode: ScheduledQueryInsightsMode | undefined;
1026
+ }
855
1027
  /**
856
1028
  * @public
857
1029
  */
@@ -872,6 +1044,12 @@ export interface ExecuteScheduledQueryRequest {
872
1044
  * @public
873
1045
  */
874
1046
  ClientToken?: string;
1047
+ /**
1048
+ * <p>Encapsulates settings for enabling <code>QueryInsights</code>.</p>
1049
+ * <p>Enabling <code>QueryInsights</code> returns insights and metrics as a part of the Amazon SNS notification for the query that you executed. You can use <code>QueryInsights</code> to tune your query performance and cost.</p>
1050
+ * @public
1051
+ */
1052
+ QueryInsights?: ScheduledQueryInsights;
875
1053
  }
876
1054
  /**
877
1055
  * @public
@@ -1056,6 +1234,62 @@ export declare class QueryExecutionException extends __BaseException {
1056
1234
  */
1057
1235
  constructor(opts: __ExceptionOptionType<QueryExecutionException, __BaseException>);
1058
1236
  }
1237
+ /**
1238
+ * @public
1239
+ * @enum
1240
+ */
1241
+ export declare const QueryInsightsMode: {
1242
+ readonly DISABLED: "DISABLED";
1243
+ readonly ENABLED_WITH_RATE_CONTROL: "ENABLED_WITH_RATE_CONTROL";
1244
+ };
1245
+ /**
1246
+ * @public
1247
+ */
1248
+ export type QueryInsightsMode = (typeof QueryInsightsMode)[keyof typeof QueryInsightsMode];
1249
+ /**
1250
+ * <p>
1251
+ * <code>QueryInsights</code> is a performance tuning feature that helps you optimize your queries, reducing costs and improving performance. With <code>QueryInsights</code>, you can assess the pruning efficiency of your queries and identify areas for improvement to enhance query performance. With <code>QueryInsights</code>, you can also analyze the effectiveness of your queries in terms of temporal and spatial pruning, and identify opportunities to improve performance. Specifically, you can evaluate how well your queries use time-based and partition key-based indexing strategies to optimize data retrieval. To optimize query performance, it's essential that you fine-tune both the temporal and spatial parameters that govern query execution.</p>
1252
+ * <p>The key metrics provided by <code>QueryInsights</code> are <code>QuerySpatialCoverage</code> and <code>QueryTemporalRange</code>. <code>QuerySpatialCoverage</code> indicates how much of the spatial axis the query scans, with lower values being more efficient. <code>QueryTemporalRange</code> shows the time range scanned, with narrower ranges being more performant.</p>
1253
+ * <p>
1254
+ * <b>Benefits of QueryInsights</b>
1255
+ * </p>
1256
+ * <p>The following are the key benefits of using <code>QueryInsights</code>:</p>
1257
+ * <ul>
1258
+ * <li>
1259
+ * <p>
1260
+ * <b>Identifying inefficient queries</b> – <code>QueryInsights</code> provides information on the time-based and attribute-based pruning of the tables accessed by the query. This information helps you identify the tables that are sub-optimally accessed.</p>
1261
+ * </li>
1262
+ * <li>
1263
+ * <p>
1264
+ * <b>Optimizing your data model and partitioning</b> – You can use the <code>QueryInsights</code> information to access and fine-tune your data model and partitioning strategy.</p>
1265
+ * </li>
1266
+ * <li>
1267
+ * <p>
1268
+ * <b>Tuning queries</b> – <code>QueryInsights</code> highlights opportunities to use indexes more effectively.</p>
1269
+ * </li>
1270
+ * </ul>
1271
+ * <note>
1272
+ * <p>The maximum number of <code>Query</code> API requests you're allowed to make with <code>QueryInsights</code> enabled is 1 query per second (QPS). If you exceed this query rate, it might result in throttling.</p>
1273
+ * </note>
1274
+ * @public
1275
+ */
1276
+ export interface QueryInsights {
1277
+ /**
1278
+ * <p>Provides the following modes to enable <code>QueryInsights</code>:</p>
1279
+ * <ul>
1280
+ * <li>
1281
+ * <p>
1282
+ * <code>ENABLED_WITH_RATE_CONTROL</code> – Enables <code>QueryInsights</code> for the queries being processed. This mode also includes a rate control mechanism, which limits the <code>QueryInsights</code> feature to 1 query per second (QPS).</p>
1283
+ * </li>
1284
+ * <li>
1285
+ * <p>
1286
+ * <code>DISABLED</code> – Disables <code>QueryInsights</code>.</p>
1287
+ * </li>
1288
+ * </ul>
1289
+ * @public
1290
+ */
1291
+ Mode: QueryInsightsMode | undefined;
1292
+ }
1059
1293
  /**
1060
1294
  * @public
1061
1295
  */
@@ -1163,6 +1397,69 @@ export interface QueryRequest {
1163
1397
  * @public
1164
1398
  */
1165
1399
  MaxRows?: number;
1400
+ /**
1401
+ * <p>Encapsulates settings for enabling <code>QueryInsights</code>.</p>
1402
+ * <p>Enabling <code>QueryInsights</code> returns insights and metrics in addition to query results for the query that you executed. You can use <code>QueryInsights</code> to tune your query performance.</p>
1403
+ * @public
1404
+ */
1405
+ QueryInsights?: QueryInsights;
1406
+ }
1407
+ /**
1408
+ * <p>Provides various insights and metrics related to the query that you executed.</p>
1409
+ * @public
1410
+ */
1411
+ export interface QueryInsightsResponse {
1412
+ /**
1413
+ * <p>Provides insights into the spatial coverage of the query, including the table with sub-optimal (max) spatial pruning. This information can help you identify areas for improvement in your partitioning strategy to enhance spatial pruning. </p>
1414
+ * @public
1415
+ */
1416
+ QuerySpatialCoverage?: QuerySpatialCoverage;
1417
+ /**
1418
+ * <p>Provides insights into the temporal range of the query, including the table with the largest (max) time range. Following are some of the potential options for optimizing time-based pruning:</p>
1419
+ * <ul>
1420
+ * <li>
1421
+ * <p>Add missing time-predicates.</p>
1422
+ * </li>
1423
+ * <li>
1424
+ * <p>Remove functions around the time predicates.</p>
1425
+ * </li>
1426
+ * <li>
1427
+ * <p>Add time predicates to all the sub-queries.</p>
1428
+ * </li>
1429
+ * </ul>
1430
+ * @public
1431
+ */
1432
+ QueryTemporalRange?: QueryTemporalRange;
1433
+ /**
1434
+ * <p>Indicates the number of tables in the query.</p>
1435
+ * @public
1436
+ */
1437
+ QueryTableCount?: number;
1438
+ /**
1439
+ * <p>Indicates the total number of rows returned as part of the query result set. You can use this data to validate if the number of rows in the result set have changed as part of the query tuning exercise.</p>
1440
+ * @public
1441
+ */
1442
+ OutputRows?: number;
1443
+ /**
1444
+ * <p>Indicates the size of query result set in bytes. You can use this data to validate if the result set has changed as part of the query tuning exercise.</p>
1445
+ * @public
1446
+ */
1447
+ OutputBytes?: number;
1448
+ /**
1449
+ * <p>Indicates the partitions created by the <code>Unload</code> operation.</p>
1450
+ * @public
1451
+ */
1452
+ UnloadPartitionCount?: number;
1453
+ /**
1454
+ * <p>Indicates the rows written by the <code>Unload</code> query.</p>
1455
+ * @public
1456
+ */
1457
+ UnloadWrittenRows?: number;
1458
+ /**
1459
+ * <p>Indicates the size, in bytes, written by the <code>Unload</code> operation.</p>
1460
+ * @public
1461
+ */
1462
+ UnloadWrittenBytes?: number;
1166
1463
  }
1167
1464
  /**
1168
1465
  * <p>Information about the status of the query, including progress and bytes
@@ -1479,6 +1776,11 @@ export interface QueryResponse {
1479
1776
  * @public
1480
1777
  */
1481
1778
  QueryStatus?: QueryStatus;
1779
+ /**
1780
+ * <p>Encapsulates <code>QueryInsights</code> containing insights and metrics related to the query that you executed.</p>
1781
+ * @public
1782
+ */
1783
+ QueryInsightsResponse?: QueryInsightsResponse;
1482
1784
  }
1483
1785
  /**
1484
1786
  * @public
@@ -220,6 +220,28 @@ export interface ExecutionStats {
220
220
  RecordsIngested?: number;
221
221
  QueryResultRows?: number;
222
222
  }
223
+ export interface QuerySpatialCoverageMax {
224
+ Value?: number;
225
+ TableArn?: string;
226
+ PartitionKey?: string[];
227
+ }
228
+ export interface QuerySpatialCoverage {
229
+ Max?: QuerySpatialCoverageMax;
230
+ }
231
+ export interface QueryTemporalRangeMax {
232
+ Value?: number;
233
+ TableArn?: string;
234
+ }
235
+ export interface QueryTemporalRange {
236
+ Max?: QueryTemporalRangeMax;
237
+ }
238
+ export interface ScheduledQueryInsightsResponse {
239
+ QuerySpatialCoverage?: QuerySpatialCoverage;
240
+ QueryTemporalRange?: QueryTemporalRange;
241
+ QueryTableCount?: number;
242
+ OutputRows?: number;
243
+ OutputBytes?: number;
244
+ }
223
245
  export declare const ScheduledQueryRunStatus: {
224
246
  readonly AUTO_TRIGGER_FAILURE: "AUTO_TRIGGER_FAILURE";
225
247
  readonly AUTO_TRIGGER_SUCCESS: "AUTO_TRIGGER_SUCCESS";
@@ -233,6 +255,7 @@ export interface ScheduledQueryRunSummary {
233
255
  TriggerTime?: Date;
234
256
  RunStatus?: ScheduledQueryRunStatus;
235
257
  ExecutionStats?: ExecutionStats;
258
+ QueryInsightsResponse?: ScheduledQueryInsightsResponse;
236
259
  ErrorReportLocation?: ErrorReportLocation;
237
260
  FailureReason?: string;
238
261
  }
@@ -262,10 +285,20 @@ export interface ScheduledQueryDescription {
262
285
  export interface DescribeScheduledQueryResponse {
263
286
  ScheduledQuery: ScheduledQueryDescription | undefined;
264
287
  }
288
+ export declare const ScheduledQueryInsightsMode: {
289
+ readonly DISABLED: "DISABLED";
290
+ readonly ENABLED_WITH_RATE_CONTROL: "ENABLED_WITH_RATE_CONTROL";
291
+ };
292
+ export type ScheduledQueryInsightsMode =
293
+ (typeof ScheduledQueryInsightsMode)[keyof typeof ScheduledQueryInsightsMode];
294
+ export interface ScheduledQueryInsights {
295
+ Mode: ScheduledQueryInsightsMode | undefined;
296
+ }
265
297
  export interface ExecuteScheduledQueryRequest {
266
298
  ScheduledQueryArn: string | undefined;
267
299
  InvocationTime: Date | undefined;
268
300
  ClientToken?: string;
301
+ QueryInsights?: ScheduledQueryInsights;
269
302
  }
270
303
  export interface ListScheduledQueriesRequest {
271
304
  MaxResults?: number;
@@ -314,11 +347,31 @@ export declare class QueryExecutionException extends __BaseException {
314
347
  opts: __ExceptionOptionType<QueryExecutionException, __BaseException>
315
348
  );
316
349
  }
350
+ export declare const QueryInsightsMode: {
351
+ readonly DISABLED: "DISABLED";
352
+ readonly ENABLED_WITH_RATE_CONTROL: "ENABLED_WITH_RATE_CONTROL";
353
+ };
354
+ export type QueryInsightsMode =
355
+ (typeof QueryInsightsMode)[keyof typeof QueryInsightsMode];
356
+ export interface QueryInsights {
357
+ Mode: QueryInsightsMode | undefined;
358
+ }
317
359
  export interface QueryRequest {
318
360
  QueryString: string | undefined;
319
361
  ClientToken?: string;
320
362
  NextToken?: string;
321
363
  MaxRows?: number;
364
+ QueryInsights?: QueryInsights;
365
+ }
366
+ export interface QueryInsightsResponse {
367
+ QuerySpatialCoverage?: QuerySpatialCoverage;
368
+ QueryTemporalRange?: QueryTemporalRange;
369
+ QueryTableCount?: number;
370
+ OutputRows?: number;
371
+ OutputBytes?: number;
372
+ UnloadPartitionCount?: number;
373
+ UnloadWrittenRows?: number;
374
+ UnloadWrittenBytes?: number;
322
375
  }
323
376
  export interface QueryStatus {
324
377
  ProgressPercentage?: number;
@@ -388,6 +441,7 @@ export interface QueryResponse {
388
441
  Rows: Row[] | undefined;
389
442
  ColumnInfo: ColumnInfo[] | undefined;
390
443
  QueryStatus?: QueryStatus;
444
+ QueryInsightsResponse?: QueryInsightsResponse;
391
445
  }
392
446
  export interface PrepareQueryResponse {
393
447
  QueryString: string | undefined;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-sdk/client-timestream-query",
3
3
  "description": "AWS SDK for JavaScript Timestream Query Client for Node.js, Browser and React Native",
4
- "version": "3.675.0",
4
+ "version": "3.677.0",
5
5
  "scripts": {
6
6
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'",
7
7
  "build:cjs": "node ../../scripts/compilation/inline client-timestream-query",
@@ -20,20 +20,20 @@
20
20
  "dependencies": {
21
21
  "@aws-crypto/sha256-browser": "5.2.0",
22
22
  "@aws-crypto/sha256-js": "5.2.0",
23
- "@aws-sdk/client-sso-oidc": "3.675.0",
24
- "@aws-sdk/client-sts": "3.675.0",
25
- "@aws-sdk/core": "3.667.0",
26
- "@aws-sdk/credential-provider-node": "3.675.0",
23
+ "@aws-sdk/client-sso-oidc": "3.677.0",
24
+ "@aws-sdk/client-sts": "3.677.0",
25
+ "@aws-sdk/core": "3.677.0",
26
+ "@aws-sdk/credential-provider-node": "3.677.0",
27
27
  "@aws-sdk/middleware-endpoint-discovery": "3.667.0",
28
28
  "@aws-sdk/middleware-host-header": "3.667.0",
29
29
  "@aws-sdk/middleware-logger": "3.667.0",
30
30
  "@aws-sdk/middleware-recursion-detection": "3.667.0",
31
- "@aws-sdk/middleware-user-agent": "3.669.0",
31
+ "@aws-sdk/middleware-user-agent": "3.677.0",
32
32
  "@aws-sdk/region-config-resolver": "3.667.0",
33
33
  "@aws-sdk/types": "3.667.0",
34
34
  "@aws-sdk/util-endpoints": "3.667.0",
35
35
  "@aws-sdk/util-user-agent-browser": "3.675.0",
36
- "@aws-sdk/util-user-agent-node": "3.669.0",
36
+ "@aws-sdk/util-user-agent-node": "3.677.0",
37
37
  "@smithy/config-resolver": "^3.0.9",
38
38
  "@smithy/core": "^2.4.8",
39
39
  "@smithy/fetch-http-handler": "^3.2.9",