Skip to content

aws.glue.get_unfiltered_table_metadata

Example SQL Queries

SELECT * FROM
aws.glue.get_unfiltered_table_metadata
WHERE
"catalog_id" = 'VALUE'
AND "database_name" = 'VALUE'
AND "name" = 'VALUE'
AND "supported_permission_types" = 'VALUE';

Description

Allows a third-party analytical engine to retrieve unfiltered table metadata from the Data Catalog.

For IAM authorization, the public IAM action associated with this API is glue:GetTable.

Table Definition

Column NameColumn Data Type
catalog_id Required Input Column

The catalog ID where the table resides.

VARCHAR
database_name Required Input Column

(Required) Specifies the name of a database that contains the table.

VARCHAR
name Required Input Column

(Required) Specifies the name of a table for which you are requesting metadata.

VARCHAR
supported_permission_types Required Input Column

Indicates the level of filtering a third-party analytical engine is capable of enforcing when calling the GetUnfilteredTableMetadata API operation. Accepted values are:

  • COLUMN_PERMISSION - Column permissions ensure that users can access only specific columns in the table. If there are particular columns contain sensitive data, data lake administrators can define column filters that exclude access to specific columns.

  • CELL_FILTER_PERMISSION - Cell-level filtering combines column filtering (include or exclude columns) and row filter expressions to restrict access to individual elements in the table.

  • NESTED_PERMISSION - Nested permissions combines cell-level filtering and nested column filtering to restrict access to columns and/or nested columns in specific rows based on row filter expressions.

  • NESTED_CELL_PERMISSION - Nested cell permissions combines nested permission with nested cell-level filtering. This allows different subsets of nested columns to be restricted based on an array of row filter expressions.

Note: Each of these permission types follows a hierarchical order where each subsequent permission type includes all permission of the previous type.

Important: If you provide a supported permission type that doesn't match the user's level of permissions on the table, then Lake Formation raises an exception. For example, if the third-party engine calling the GetUnfilteredTableMetadata operation can enforce only column-level filtering, and the user has nested cell filtering applied on the table, Lake Formation throws an exception, and will not return unfiltered table metadata and data access credentials.

VARCHAR[]
Show child fields
supported_permission_types[]
audit_context Input Column

A structure containing Lake Formation audit context information.

STRUCT(
"additional_audit_context" VARCHAR,
"requested_columns" VARCHAR[],
"all_columns_requested" BOOLEAN
)
Show child fields
audit_context.additional_audit_context

A string containing the additional audit context information.

audit_context.all_columns_requested

All columns request for audit.

audit_context.requested_columns[]
parent_resource_arn Input Column

The resource ARN of the view.

VARCHAR
permissions Input Column

The Lake Formation data permissions of the caller on the table. Used to authorize the call when no view context is found.

VARCHAR[]
Show child fields
permissions[]
query_session_context Input Column

A structure used as a protocol between query engines and Lake Formation or Glue. Contains both a Lake Formation generated authorization identifier and information from the request's authorization context.

STRUCT(
"query_id" VARCHAR,
"query_start_time" TIMESTAMP_S,
"cluster_id" VARCHAR,
"query_authorization_id" VARCHAR,
"additional_context" MAP(VARCHAR, VARCHAR)
)
Show child fields
query_session_context.additional_context

An opaque string-string map passed by the query engine.

query_session_context.cluster_id

An identifier string for the consumer cluster.

query_session_context.query_authorization_id

A cryptographically generated query identifier generated by Glue or Lake Formation.

query_session_context.query_id

A unique identifier generated by the query engine for the query.

query_session_context.query_start_time

A timestamp provided by the query engine for when the query started.

region Input Column

Specified only if the base tables belong to a different Amazon Web Services Region.

VARCHAR
root_resource_arn Input Column

The resource ARN of the root view in a chain of nested views.

VARCHAR
supported_dialect Input Column

A structure specifying the dialect and dialect version used by the query engine.

STRUCT(
"dialect" VARCHAR,
"dialect_version" VARCHAR
)
Show child fields
supported_dialect.dialect

The dialect of the query engine.

supported_dialect.dialect_version

The version of the dialect of the query engine. For example, 3.0.0.

_aws_profile Input Column

The AWS profile defines the AWS identity used. It can be defined via credentials or by assuming a IAM role.

STRUCT(
"type" VARCHAR,
"name" VARCHAR,
"account_id" VARCHAR,
"via_profile_name" VARCHAR,
"assumed_role_arn" VARCHAR,
"organization" STRUCT(
"account_name" VARCHAR,
"id" VARCHAR,
"tags" STRUCT(
"key" VARCHAR,
"value" VARCHAR
)[],
"master_account" STRUCT(
"id" VARCHAR,
"email" VARCHAR
),
"parents" STRUCT(
"type" VARCHAR,
"id" VARCHAR,
"name" VARCHAR,
"tags" STRUCT(
"key" VARCHAR,
"value" VARCHAR
)[]
)[]
)
)
Show child fields
_aws_profile.account_id

The AWS account id

_aws_profile.assumed_role_arn

The ARN of the assumed role

_aws_profile.name

The unique name of the profile.

_aws_profile.organization

Information about this profile's membership in the AWS organization.

Show child fields
_aws_profile.organization.account_name

The name of account speciifed by the organization

_aws_profile.organization.id

The organization id

_aws_profile.organization.master_account
Show child fields
_aws_profile.organization.master_account.email

The organization master account email address

_aws_profile.organization.master_account.id

The organization master account id

_aws_profile.organization.parents[]
Show child fields
_aws_profile.organization.parents[].id

The id of the parent

_aws_profile.organization.parents[].name

The name of the parent

_aws_profile.organization.parents[].tags[]
Show child fields
_aws_profile.organization.parents[].tags[].key
_aws_profile.organization.parents[].tags[].value
_aws_profile.organization.parents[].type

The type of parent can be an organization unit or a root

_aws_profile.organization.tags[]
Show child fields
_aws_profile.organization.tags[].key
_aws_profile.organization.tags[].value
_aws_profile.type

The type of profile, either 'credentials' or 'assumed_role'

_aws_profile.via_profile_name

This IAM role for this profile is assumed by first utilizing another profile with this name to obtain credentials.

_aws_region Input Column

The AWS region to use.

VARCHAR
authorized_columns

A list of column names that the user has been granted access to.

VARCHAR[]
Show child fields
authorized_columns[]
cell_filters

A list of column row filters.

STRUCT(
"column_name" VARCHAR,
"row_filter_expression" VARCHAR
)[]
Show child fields
cell_filters[]
Show child fields
cell_filters[].column_name

A string containing the name of the column.

cell_filters[].row_filter_expression

A string containing the row-level filter expression.

is_multi_dialect_view

Specifies whether the view supports the SQL dialects of one or more different query engines and can therefore be read by those engines.

BOOLEAN
is_protected

A flag that instructs the engine not to push user-provided operations into the logical plan of the view during query planning. However, if set this flag does not guarantee that the engine will comply. Refer to the engine's documentation to understand the guarantees provided, if any.

BOOLEAN
is_registered_with_lake_formation

A Boolean value that indicates whether the partition location is registered with Lake Formation.

BOOLEAN
query_authorization_id

A cryptographically generated query identifier generated by Glue or Lake Formation.

VARCHAR
resource_arn

The resource ARN of the parent resource extracted from the request.

VARCHAR
row_filter

The filter that applies to the table. For example when applying the filter in SQL, it would go in the WHERE clause and can be evaluated by using an AND operator with any other predicates applied by the user querying the table.

VARCHAR
table

A Table object containing the table metadata.

STRUCT(
"name" VARCHAR,
"database_name" VARCHAR,
"description" VARCHAR,
"owner" VARCHAR,
"create_time" TIMESTAMP_S,
"update_time" TIMESTAMP_S,
"last_access_time" TIMESTAMP_S,
"last_analyzed_time" TIMESTAMP_S,
"retention" BIGINT,
"storage_descriptor" STRUCT(
"columns" STRUCT(
"name" VARCHAR,
"type" VARCHAR,
"comment" VARCHAR,
"parameters" MAP(VARCHAR, VARCHAR)
)[],
"location" VARCHAR,
"additional_locations" VARCHAR[],
"input_format" VARCHAR,
"output_format" VARCHAR,
"compressed" BOOLEAN,
"number_of_buckets" BIGINT,
"serde_info" STRUCT(
"name" VARCHAR,
"serialization_library" VARCHAR,
"parameters" MAP(VARCHAR, VARCHAR)
),
"bucket_columns" VARCHAR[],
"sort_columns" STRUCT(
"column" VARCHAR,
"sort_order" BIGINT
)[],
"parameters" MAP(VARCHAR, VARCHAR),
"skewed_info" STRUCT(
"skewed_column_names" VARCHAR[],
"skewed_column_values" VARCHAR[],
"skewed_column_value_location_maps" MAP(VARCHAR, VARCHAR)
),
"stored_as_sub_directories" BOOLEAN,
"schema_reference" STRUCT(
"schema_id" STRUCT(
"schema_arn" VARCHAR,
"schema_name" VARCHAR,
"registry_name" VARCHAR
),
"schema_version_id" VARCHAR,
"schema_version_number" BIGINT
)
),
"partition_keys" STRUCT(
"name" VARCHAR,
"type" VARCHAR,
"comment" VARCHAR,
"parameters" MAP(VARCHAR, VARCHAR)
)[],
"view_original_text" VARCHAR,
"view_expanded_text" VARCHAR,
"table_type" VARCHAR,
"parameters" MAP(VARCHAR, VARCHAR),
"created_by" VARCHAR,
"is_registered_with_lake_formation" BOOLEAN,
"target_table" STRUCT(
"catalog_id" VARCHAR,
"database_name" VARCHAR,
"name" VARCHAR,
"region" VARCHAR
),
"catalog_id" VARCHAR,
"version_id" VARCHAR,
"federated_table" STRUCT(
"identifier" VARCHAR,
"database_identifier" VARCHAR,
"connection_name" VARCHAR
),
"view_definition" STRUCT(
"is_protected" BOOLEAN,
"definer" VARCHAR,
"sub_objects" VARCHAR[],
"representations" STRUCT(
"dialect" VARCHAR,
"dialect_version" VARCHAR,
"view_original_text" VARCHAR,
"view_expanded_text" VARCHAR,
"validation_connection" VARCHAR,
"is_stale" BOOLEAN
)[]
),
"is_multi_dialect_view" BOOLEAN,
"status" STRUCT(
"requested_by" VARCHAR,
"updated_by" VARCHAR,
"request_time" TIMESTAMP_S,
"update_time" TIMESTAMP_S,
"action" VARCHAR,
"state" VARCHAR,
"error" STRUCT(
"error_code" VARCHAR,
"error_message" VARCHAR
),
"details" STRUCT(
"view_validations" STRUCT(
"dialect" VARCHAR,
"dialect_version" VARCHAR,
"view_validation_text" VARCHAR,
"update_time" TIMESTAMP_S,
"state" VARCHAR,
"error" STRUCT(
"error_code" VARCHAR,
"error_message" VARCHAR
)
)[]
)
)
)
Show child fields
table.catalog_id

The ID of the Data Catalog in which the table resides.

table.create_time

The time when the table definition was created in the Data Catalog.

table.created_by

The person or entity who created the table.

table.database_name

The name of the database where the table metadata resides. For Hive compatibility, this must be all lowercase.

table.description

A description of the table.

table.federated_table

A FederatedTable structure that references an entity outside the Glue Data Catalog.

Show child fields
table.federated_table.connection_name

The name of the connection to the external metastore.

table.federated_table.database_identifier

A unique identifier for the federated database.

table.federated_table.identifier

A unique identifier for the federated table.

table.is_multi_dialect_view

Specifies whether the view supports the SQL dialects of one or more different query engines and can therefore be read by those engines.

table.is_registered_with_lake_formation

Indicates whether the table has been registered with Lake Formation.

table.last_access_time

The last time that the table was accessed. This is usually taken from HDFS, and might not be reliable.

table.last_analyzed_time

The last time that column statistics were computed for this table.

table.name

The table name. For Hive compatibility, this must be entirely lowercase.

table.owner

The owner of the table.

table.parameters

These key-value pairs define properties associated with the table.

table.partition_keys[]
Show child fields
table.partition_keys[].comment

A free-form text comment.

table.partition_keys[].name

The name of the Column.

table.partition_keys[].parameters

These key-value pairs define properties associated with the column.

table.partition_keys[].type

The data type of the Column.

table.retention

The retention time for this table.

table.status

A structure containing information about the state of an asynchronous change to a table.

Show child fields
table.status.action

Indicates which action was called on the table, currently only CREATE or UPDATE.

table.status.details

A StatusDetails object with information about the requested change.

Show child fields
table.status.details.view_validations[]
Show child fields
table.status.details.view_validations[].dialect

The dialect of the query engine.

table.status.details.view_validations[].dialect_version

The version of the dialect of the query engine. For example, 3.0.0.

table.status.details.view_validations[].error

An error associated with the validation.

Show child fields
table.status.details.view_validations[].error.error_code

The code associated with this error.

table.status.details.view_validations[].error.error_message

A message describing the error.

table.status.details.view_validations[].state

The state of the validation.

table.status.details.view_validations[].update_time

The time of the last update.

table.status.details.view_validations[].view_validation_text

The SELECT query that defines the view, as provided by the customer.

table.status.error

An error that will only appear when the state is "FAILED". This is a parent level exception message, there may be different Errors for each dialect.

Show child fields
table.status.error.error_code

The code associated with this error.

table.status.error.error_message

A message describing the error.

table.status.request_time

An ISO 8601 formatted date string indicating the time that the change was initiated.

table.status.requested_by

The ARN of the user who requested the asynchronous change.

table.status.state

A generic status for the change in progress, such as QUEUED, IN_PROGRESS, SUCCESS, or FAILED.

table.status.update_time

An ISO 8601 formatted date string indicating the time that the state was last updated.

table.status.updated_by

The ARN of the user to last manually alter the asynchronous change (requesting cancellation, etc).

table.storage_descriptor

A storage descriptor containing information about the physical storage of this table.

Show child fields
table.storage_descriptor.additional_locations[]
table.storage_descriptor.bucket_columns[]
table.storage_descriptor.columns[]
Show child fields
table.storage_descriptor.columns[].comment

A free-form text comment.

table.storage_descriptor.columns[].name

The name of the Column.

table.storage_descriptor.columns[].parameters

These key-value pairs define properties associated with the column.

table.storage_descriptor.columns[].type

The data type of the Column.

table.storage_descriptor.compressed

True if the data in the table is compressed, or False if not.

table.storage_descriptor.input_format

The input format: SequenceFileInputFormat (binary), or TextInputFormat, or a custom format.

table.storage_descriptor.location

The physical location of the table. By default, this takes the form of the warehouse location, followed by the database location in the warehouse, followed by the table name.

table.storage_descriptor.number_of_buckets

Must be specified if the table contains any dimension columns.

table.storage_descriptor.output_format

The output format: SequenceFileOutputFormat (binary), or IgnoreKeyTextOutputFormat, or a custom format.

table.storage_descriptor.parameters

The user-supplied properties in key-value form.

table.storage_descriptor.schema_reference

An object that references a schema stored in the Glue Schema Registry.

When creating a table, you can pass an empty list of columns for the schema, and instead use a schema reference.

Show child fields
table.storage_descriptor.schema_reference.schema_id

A structure that contains schema identity fields. Either this or the SchemaVersionId has to be provided.

Show child fields
table.storage_descriptor.schema_reference.schema_id.registry_name

The name of the schema registry that contains the schema.

table.storage_descriptor.schema_reference.schema_id.schema_arn

The Amazon Resource Name (ARN) of the schema. One of SchemaArn or SchemaName has to be provided.

table.storage_descriptor.schema_reference.schema_id.schema_name

The name of the schema. One of SchemaArn or SchemaName has to be provided.

table.storage_descriptor.schema_reference.schema_version_id

The unique ID assigned to a version of the schema. Either this or the SchemaId has to be provided.

table.storage_descriptor.schema_reference.schema_version_number

The version number of the schema.

table.storage_descriptor.serde_info

The serialization/deserialization (SerDe) information.

Show child fields
table.storage_descriptor.serde_info.name

Name of the SerDe.

table.storage_descriptor.serde_info.parameters

These key-value pairs define initialization parameters for the SerDe.

table.storage_descriptor.serde_info.serialization_library

Usually the class that implements the SerDe. An example is org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe.

table.storage_descriptor.skewed_info

The information about values that appear frequently in a column (skewed values).

Show child fields
table.storage_descriptor.skewed_info.skewed_column_names[]
table.storage_descriptor.skewed_info.skewed_column_value_location_maps

A mapping of skewed values to the columns that contain them.

table.storage_descriptor.skewed_info.skewed_column_values[]
table.storage_descriptor.sort_columns[]
Show child fields
table.storage_descriptor.sort_columns[].column

The name of the column.

table.storage_descriptor.sort_columns[].sort_order

Indicates that the column is sorted in ascending order (== 1), or in descending order (==0).

table.storage_descriptor.stored_as_sub_directories

True if the table data is stored in subdirectories, or False if not.

table.table_type

The type of this table. Glue will create tables with the EXTERNAL_TABLE type. Other services, such as Athena, may create tables with additional table types.

Glue related table types:

EXTERNAL_TABLE

Hive compatible attribute - indicates a non-Hive managed table.

GOVERNED

Used by Lake Formation. The Glue Data Catalog understands GOVERNED.

table.target_table

A TableIdentifier structure that describes a target table for resource linking.

Show child fields
table.target_table.catalog_id

The ID of the Data Catalog in which the table resides.

table.target_table.database_name

The name of the catalog database that contains the target table.

table.target_table.name

The name of the target table.

table.target_table.region

Region of the target table.

table.update_time

The last time that the table was updated.

table.version_id

The ID of the table version.

table.view_definition

A structure that contains all the information that defines the view, including the dialect or dialects for the view, and the query.

Show child fields
table.view_definition.definer

The definer of a view in SQL.

table.view_definition.is_protected

You can set this flag as true to instruct the engine not to push user-provided operations into the logical plan of the view during query planning. However, setting this flag does not guarantee that the engine will comply. Refer to the engine's documentation to understand the guarantees provided, if any.

table.view_definition.representations[]
Show child fields
table.view_definition.representations[].dialect

The dialect of the query engine.

table.view_definition.representations[].dialect_version

The version of the dialect of the query engine. For example, 3.0.0.

table.view_definition.representations[].is_stale

Dialects marked as stale are no longer valid and must be updated before they can be queried in their respective query engines.

table.view_definition.representations[].validation_connection

The name of the connection to be used to validate the specific representation of the view.

table.view_definition.representations[].view_expanded_text

The expanded SQL for the view. This SQL is used by engines while processing a query on a view. Engines may perform operations during view creation to transform ViewOriginalText to ViewExpandedText. For example:

  • Fully qualified identifiers: SELECT * from table1 -> SELECT * from db1.table1

table.view_definition.representations[].view_original_text

The SELECT query provided by the customer during CREATE VIEW DDL. This SQL is not used during a query on a view (ViewExpandedText is used instead). ViewOriginalText is used for cases like SHOW CREATE VIEW where users want to see the original DDL command that created the view.

table.view_definition.sub_objects[]
table.view_expanded_text

Included for Apache Hive compatibility. Not used in the normal course of Glue operations.

table.view_original_text

Included for Apache Hive compatibility. Not used in the normal course of Glue operations. If the table is a VIRTUAL_VIEW, certain Athena configuration encoded in base64.