Visualizações do AWS Glue Data Catalog - Amazon Redshift

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.