Visualizações do AWS Glue Data Catalog
Este tópico descreve como criar visualizações no AWS Glue Data Catalog. Você pode usar visualizações no Catálogo de Dados para acessar dados em diferentes fontes de dados usando o mesmo esquema.
Ao criar visualizações no Catálogo de Dados, você pode criar um único esquema de visualização comum e um objeto de metadados a ser usado em vários mecanismos, como Amazon Athena e Amazon EMR Spark. Isso permite a você usar as mesmas exibições nos data lakes e nos data warehouses para se adequar aos casos de uso. As exibições no Data Catalog são especiais por serem categorizadas como exibições definidoras, nas quais as permissões de acesso são definidas pelo usuário que criou a exibição, e não pelo usuário que consulta a exibição. Estes são alguns casos de uso e benefícios da criação de exibições no Data Catalog:
-
Crie uma exibição que restrinja o acesso aos dados com base nas permissões das quais o usuário precisa. Por exemplo, você pode usar as exibições do Data Catalog para evitar que funcionários que não trabalham no departamento de RH vejam informações de identificação pessoal (PII).
-
Verifique se os usuários não conseguem acessar registros incompletos. Aplicando determinados filtros à exibição do Data Catalog, você garante que os registros de dados em uma exibição do Data Catalog estejam sempre completos.
-
As exibições do Data Catalog têm um benefício de segurança incluído de garantir que a definição da consulta usada para criar a exibição seja concluída para criar a exibição. Esse benefício de segurança significa que as exibições no Data Catalog não são suscetíveis a comandos SQL de jogadores mal-intencionados.
-
As exibições no Data Catalog oferecem as mesmas vantagens das exibições normais, como permitir a usuários acessar uma exibição sem disponibilizar a tabela subjacente para usuários.
Para criar uma exibição no Data Catalog, você deve ter uma tabela externa do Spectrum, um objeto contido em uma unidade de compartilhamento de dados gerenciada pelo Lake Formation, ou uma tabela do Apache Iceberg.
As definições de exibição do Data Catalog são armazenadas no AWS Glue Data Catalog. Use o AWS Lake Formation para conceder acesso por meio das concessões de recursos, concessões de colunas ou dos controles de acesso baseados em etiquetas. Para obter mais informações sobre como conceder e revogar acesso no Lake Formation, consulte Granting and revoking permissions on Data Catalog resources.
Pré-requisitos
Para criar uma exibição no Data Catalog, verifique se você tem os seguintes pré-requisitos atendidos:
Verifique se o perfil do IAM tem a política de confiança a seguir.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "glue.amazonaws.com", "lakeformation.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
Você também precisa da politica da função da aprovação.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1", "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": [ "glue.amazonaws.com", "lakeformation.amazonaws.com" ] } } } ] }
Por fim, você também precisa das seguintes permissões:
Glue:GetDatabase
Glue:GetDatabases
Glue:CreateTable
Glue:GetTable
Glue:UpdateTable
Glue:DeleteTable
Glue:GetTables
Glue:SearchTables
Glue:BatchGetPartition
Glue:GetPartitions
Glue:GetPartition
Glue:GetTableVersion
Glue:GetTableVersions
Exemplo completo
Comece criando um esquema externo com base no banco de dados do Data Catalog.
CREATE EXTERNAL SCHEMA IF NOT EXISTS external_schema FROM DATA CATALOG DATABASE 'external_data_catalog_db' IAM_ROLE 'arn:aws:iam::123456789012:role/sample-role';
Você já pode criar uma exibição do Data Catalog.
CREATE EXTERNAL PROTECTED VIEW external_schema.remote_view AS SELECT * FROM external_schema.remote_table;
Você pode acabar começando a consultar a exibição.
SELECT * FROM external_schema.remote_view;
Para obter mais informações sobre os comandos SQL relacionados a exibições no Data Catalog, consulte CREATE EXTERNAL VIEW, ALTER EXTERNAL VIEW e DROP EXTERNAL VIEW.
Registro em log seguro
O Redshift mascara os metadados registrados nos logs do sistema do Redshift quando uma consulta faz referência a uma visualização do Glue com vários dialetos. Ter vários dialetos significa que a visualização é compatível com os dialetos SQL de diferentes mecanismos de consulta, como o Redshift e o Amazon EMR. Os dados nas tabelas a seguir são mascarados para todas as consultas com o mesmo ID de consulta. A tabela a seguir lista as visualizações e colunas do sistema com o registro em log seguro aplicado.
Tabela do sistema | Colunas sigilosas |
---|---|
SYS_EXTERNAL_QUERY_DETAIL | Colunas: source_type, total_partitions, qualified_partitions, scanned_files, returned_rows, returned_bytes, file_format, file_location, external_query_text, warning_message. Para obter mais informações, consulte SYS_EXTERNAL_QUERY_DETAIL. |
SYS_EXTERNAL_QUERY_ERROR | Colunas: file_location, rowid, column_name, original_value, modified_value, trigger, action, action_value, error_code. Para obter mais informações, consulte SYS_EXTERNAL_QUERY_ERROR. |
SYS_QUERY_DETAIL | Colunas: step_name, table_id, table_name, input_bytes, input_rows, output_bytes, output_rows, blocks_read, blocks_write, local_read_IO, remote_read_IO, spilled_block_local_disk, spilled_block_remote_disk. Para obter mais informações, consulte SYS_QUERY_DETAIL. |
SYS_QUERY_HISTORY | Colunas: returned_rows, returned_bytes. Para obter mais informações, consulte SYS_QUERY_HISTORY. |
STL_AGGR | Colunas: rows, bytes, tbl, type. Para obter mais informações, consulte STL_AGGR. |
STL_BCAST | Colunas: rows, bytes, packets. Para obter mais informações, consulte STL_BCAST. |
STL_DDLTEXT | Colunas: text. Para obter mais informações, consulte STL_DDLTEXT. |
STL_DELETE | Colunas: rows, tbl. Para obter mais informações, consulte STL_DELETE. |
STL_DIST | Colunas: rows, bytes, packets. Para obter mais informações, consulte STL_DIST. |
STL_EXPLAIN | Colunas: plannode, info. Para obter mais informações, consulte STL_EXPLAIN. |
STL_HASH | Colunas: rows, bytes, tbl, est_rows. Para obter mais informações, consulte STL_HASH. |
STL_HASHJOIN | Colunas: rows, tbl, num_parts, join_type. Para obter mais informações, consulte STL_HASHJOIN. |
STL_INSERT | Colunas: rows, tbl. Para obter mais informações, consulte STL_INSERT. |
STL_LIMIT | Colunas: rows. Para obter mais informações, consulte STL_LIMIT. |
STL_MERGE | Colunas: rows. Para obter mais informações, consulte STL_MERGE. |
STL_MERGEJOIN | Colunas: rows, tbl. Para obter mais informações, consulte STL_MERGEJOIN. |
STL_NESTLOOP | Colunas: rows, tbl. Para obter mais informações, consulte STL_NESTLOOP. |
STL_PARSE | Colunas: rows. Para obter mais informações, consulte STL_PARSE. |
STL_PLAN_INFO | Colunas: rows, bytes. Para obter mais informações, consulte STL_PLAN_INFO. |
STL_PROJECT | Colunas: rows, tbl. Para obter mais informações, consulte STL_PROJECT. |
STL_QUERY | Colunas: querytxt. Para obter mais informações, consulte STL_QUERY. |
STL_QUERY_METRICS | Colunas: max_rows, rows, max_blocks_read, blocks_read, max_blocks_to_disk, blocks_to_disk, max_query_scan_size, query_scan_size. Para obter mais informações, consulte STL_QUERY_METRICS. |
STL_QUERYTEXT | Colunas: text. Para obter mais informações, consulte STL_QUERYTEXT. |
STL_RETURN | Colunas: rows, bytes. Para obter mais informações, consulte STL_RETURN. |
STL_SAVE | Colunas: rows, bytes, tbl. Para obter mais informações, consulte STL_SAVE. |
STL_SCAN | Colunas: rows, bytes, fetches, type, tbl, rows_pre_filter, perm_table_name, scanned_mega_value. Para obter mais informações, consulte STL_SCAN. |
STL_SORT | Colunas: rows, bytes, tbl. Para obter mais informações, consulte STL_SORT. |
STL_TR_CONFLICT | Colunas: table_id. Para obter mais informações, consulte STL_TR_CONFLICT. |
STL_UNDONE | Colunas: table_id. Para obter mais informações, consulte STL_UNDONE. |
STL_UNIQUE | Colunas: rows, type, bytes. Para obter mais informações, consulte STL_UNIQUE. |
STL_UTILITYTEXT | Colunas: text. Para obter mais informações, consulte STL_UTILITYTEXT. |
STL_WINDOW | Colunas: rows. Para obter mais informações, consulte STL_WINDOW. |
STV_BLOCKLIST | Colunas: col, tbl, num_values, minvalue, maxvalue. Para obter mais informações, consulte STV_BLOCKLIST. |
STV_EXEC_STATE | Colunas: rows, bytes, label. Para obter mais informações, consulte STV_EXEC_STATE. |
STV_LOCKS | Colunas: table_id. Para obter mais informações, consulte STV_LOCKS. |
STV_QUERY_METRICS | Colunas: rows, max_rows, blocks_read, max_blocks_read, max_blocks_to_disk, blocks_to_disk, max_query_scan_size, query_scan_size. Para obter mais informações, consulte STV_QUERY_METRICS. |
STV_STARTUP_RECOVERY_STATE | Colunas: table_id, table_name. Para obter mais informações, consulte STV_STARTUP_RECOVERY_STATE. |
STV_TBL_PERM | Colunas: id, rows, sorted_rows, temp, block_count, query_scan_size. Para obter mais informações, consulte STV_TBL_PERM. |
STV_TBL_TRANS | Colunas: id, rows, size. Para obter mais informações, consulte STV_TBL_TRANS. |
SVCS_EXPLAIN | Colunas: plannode, info. Para obter mais informações, consulte SVCS_EXPLAIN. |
SVCS_PLAN_INFO | Colunas: rows, bytes. Para obter mais informações, consulte SVCS_PLAN_INFO. |
SVCS_QUERY_SUMMARY | Colunas: step, rows, bytes, rate_row, rate_byte, label, rows_pre_filter. Para obter mais informações, consulte SVCS_QUERY_SUMMARY. |
SVCS_S3LIST | Colunas: bucket, prefix, max_file_size, avg_file_size. Para obter mais informações, consulte SVCS_QUERY_SUMMARY. |
SVCS_S3LOG | Colunas: message. Para obter mais informações, consulte SVCS_QUERY_SUMMARY. |
SVCS_S3PARTITION_SUMMARY | Colunas: total_partitions, qualified_partitions, min_assigned_partitions, max_assigned_partitions, avg_assigned_partitions. Para obter mais informações, consulte SVCS_S3PARTITION_SUMMARY. |
SVCS_S3QUERY_SUMMARY | Colunas: external_table_name, file_format, s3_scanned_rows, s3_scanned_bytes, s3query_returned_rows, s3query_returned_bytes. Para obter mais informações, consulte SVCS_S3QUERY_SUMMARY. |
SVL_QUERY_METRICS | Colunas: step_label, scan_row_count, join_row_count, nested_loop_join_row_count, return_row_count, spectrum_scan_row_count, spectrum_scan_size_mb. Para obter mais informações, consulte SVL_QUERY_METRICS. |
SVL_QUERY_METRICS_SUMMARY | Colunas: step_label, scan_row_count, join_row_count, nested_loop_join_row_count, return_row_count, spectrum_scan_row_count, spectrum_scan_size_mb. Para obter mais informações, consulte SVL_QUERY_METRICS_SUMMARY. |
SVL_QUERY_REPORT | Colunas: rows, bytes, label, rows_pre_filter. Para obter mais informações, consulte SVL_QUERY_REPORT. |
SVL_QUERY_SUMMARY | Colunas: rows, bytes, rows_pre_filter. Para obter mais informações, consulte SVL_QUERY_SUMMARY. |
SVL_S3LIST | Colunas: bucket, prefix, max_file_size, avg_file_size. Para obter mais informações, consulte SVL_S3LIST. |
SVL_S3LOG | Colunas: message. Para obter mais informações, consulte SVL_S3LOG. |
SVL_S3PARTITION | Colunas: rows, bytes, label, rows_pre_filter. Para obter mais informações, consulte SVL_S3PARTITION. |
SVL_S3PARTITION_SUMMARY | Colunas: total_partitions, qualified_partitions, min_assigned_partitions, max_assigned_partitions, avg_assigned_partitions. Para obter mais informações, consulte SVL_S3PARTITION_SUMMARY. |
SVL_S3QUERY | Colunas: external_table_name, file_format, s3_scanned_rows, s3_scanned_bytes, s3query_returned_rows, s3query_returned_bytes. Para obter mais informações, consulte SVL_S3QUERY. |
SVL_S3QUERY_SUMMARY | Colunas: external_table_name, file_format, s3_scanned_rows, s3_scanned_bytes, s3query_returned_rows, s3query_returned_bytes. Para obter mais informações, consulte SVL_S3QUERY_SUMMARY. |
SVL_S3RETRIES | Colunas: file_size, location, message. Para obter mais informações, consulte SVL_S3RETRIES. |
SVL_SPECTRUM_SCAN_ERROR | Colunas: location, rowid, colname, original_value, modified_value. Para obter mais informações, consulte SVL_SPECTRUM_SCAN_ERROR. |
SVL_STATEMENTTEXT | Colunas: type, text. Para obter mais informações, consulte SVL_STATEMENTTEXT. |
SVL_STORED_PROC_CALL | Colunas: querytxt. Para obter mais informações, consulte SVL_STORED_PROC_CALL. |
SVL_STORED_PROC_MESSAGES | Colunas: querytext. Para obter mais informações, consulte SVL_STORED_PROC_MESSAGES. |
SVL_UDF_LOG | Colunas: funcname. Para obter mais informações, consulte SVL_UDF_LOG. |
SVV_DISKUSAGE | Colunas: name, col, tbl, blocknum, num_values, minvalue, maxvalue. Para obter mais informações, consulte SVV_DISKUSAGE. |
SVV_QUERY_STATE | Colunas: rows, bytes, label. Para obter mais informações, consulte SVV_QUERY_STATE. |
SVV_TABLE_INFO | Colunas: table_id, table. Para obter mais informações, consulte SVV_TABLE_INFO. |
SVV_TRANSACTIONS | Colunas: relation. Para obter mais informações, consulte SVV_TRANSACTIONS. |
Considerações e limitações
Estas são considerações e limitações que podem se aplicar às exibições criadas no Data Catalog.
As visões do AWS Glue Data Catalog são aceitas apenas em clusters provisionados do RA3 ou grupos de trabalho do Redshift sem servidor.
Você não pode criar uma exibição do Data Catalog baseada em outra exibição.
Você só pode ter dez tabelas base em uma exibição do Data Catalog.
O definidor da exibição deve ter permissões
SELECT GRANTABLE
completas nas tabelas base.As exibições só podem conter objetos e integrações do Lake Formation. Os objetos a seguir não são permitidos dentro de uma exibição.
Tabelas de sistema
Funções definidas pelo usuário (UDFs)
Tabelas do Redshift, exibições, visões materializadas e exibições de vinculação tardia que não estejam em um compartilhamento de dados gerenciado pelo Lake Formation.
As exibições não podem conter tabelas do Redshift Spectrum aninhadas.
As representações AWS Glue dos objetos base de uma exibição devem estar na mesma Conta da AWS e na mesma região da exibição.