searchTables method

Future<SearchTablesResponse> searchTables({
  1. String? catalogId,
  2. List<PropertyPredicate>? filters,
  3. int? maxResults,
  4. String? nextToken,
  5. ResourceShareType? resourceShareType,
  6. String? searchText,
  7. List<SortCriterion>? sortCriteria,
})

Searches a set of tables based on properties in the table metadata as well as on the parent database. You can search against text or filter conditions.

You can only get tables that you have access to based on the security policies defined in Lake Formation. You need at least a read-only access to the table for it to be returned. If you do not have access to all the columns in the table, these columns will not be searched against when returning the list of tables back to you. If you have access to the columns but not the data in the columns, those columns and the associated metadata for those columns will be included in the search.

May throw InternalServiceException. May throw InvalidInputException. May throw OperationTimeoutException.

Parameter catalogId : A unique identifier, consisting of account_id .

Parameter filters : A list of key-value pairs, and a comparator used to filter the search results. Returns all entities matching the predicate.

The Comparator member of the PropertyPredicate struct is used only for time fields, and can be omitted for other field types. Also, when comparing string values, such as when Key=Name, a fuzzy match algorithm is used. The Key field (for example, the value of the Name field) is split on certain punctuation characters, for example, -, :, #, etc. into tokens. Then each token is exact-match compared with the Value member of PropertyPredicate. For example, if Key=Name and Value=link, tables named customer-link and xx-link-yy are returned, but xxlinkyy is not returned.

Parameter maxResults : The maximum number of tables to return in a single response.

Parameter nextToken : A continuation token, included if this is a continuation call.

Parameter resourceShareType : Allows you to specify that you want to search the tables shared with your account. The allowable values are FOREIGN or ALL.

  • If set to FOREIGN, will search the tables shared with your account.
  • If set to ALL, will search the tables shared with your account, as well as the tables in yor local account.

Parameter searchText : A string used for a text search.

Specifying a value in quotes filters based on an exact match to the value.

Parameter sortCriteria : A list of criteria for sorting the results by a field name, in an ascending or descending order.

Implementation

Future<SearchTablesResponse> searchTables({
  String? catalogId,
  List<PropertyPredicate>? filters,
  int? maxResults,
  String? nextToken,
  ResourceShareType? resourceShareType,
  String? searchText,
  List<SortCriterion>? sortCriteria,
}) async {
  _s.validateStringLength(
    'catalogId',
    catalogId,
    1,
    255,
  );
  _s.validateNumRange(
    'maxResults',
    maxResults,
    1,
    1000,
  );
  _s.validateStringLength(
    'searchText',
    searchText,
    0,
    1024,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'AWSGlue.SearchTables'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      if (catalogId != null) 'CatalogId': catalogId,
      if (filters != null) 'Filters': filters,
      if (maxResults != null) 'MaxResults': maxResults,
      if (nextToken != null) 'NextToken': nextToken,
      if (resourceShareType != null)
        'ResourceShareType': resourceShareType.toValue(),
      if (searchText != null) 'SearchText': searchText,
      if (sortCriteria != null) 'SortCriteria': sortCriteria,
    },
  );

  return SearchTablesResponse.fromJson(jsonResponse.body);
}