Aggiunta di tabelle di data lake a un’unità di condivisione dati - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog.

Aggiunta di tabelle di data lake a un’unità di condivisione dati

Con un’unità di condivisione dati, un producer di dati può condividere in sicurezza oggetti di database con granularità fine, come schemi e tabelle, con i consumer nello stesso account AWS o in account diversi. Il producer può anche condividere oggetti tra Regioni. In questo argomento viene descritto come aggiungere oggetti da un data lake, in particolare dal catalogo di dati AWS Glue, a un’unità di condivisione dati. Supporta due casi d’uso:

  • Aggiunta di una vista con associazione tardiva a un’unità di condivisione dati che fa riferimento a una tabella di un data lake: questa operazione è utile per un consumer in quanto la configurazione preliminare, come la definizione delle autorizzazioni per i dati di origine esterna, ad esempio con Lake Formation, è probabilmente già completata. Un ulteriore vantaggio è che una vista aggiunta a un’unità di condivisione dati può effettuare il join delle tabelle di data lake con le tabelle native di Redshift.

  • Aggiunta di una tabella da uno schema esterno direttamente in un’unità di condivisione dati: in questo modo gli oggetti del data lake sono disponibili per i consumer senza livelli o logiche aggiuntivi. I consumer possono eseguire query sulla tabella o effettuarne il join con le tabelle sul consumer.

Questi casi sono applicabili dopo che hai fatto riferimento a una tabella dal catalogo dati AWS in Redshift utilizzando CREATE EXTERNAL SCHEMA. Qualsiasi tabella del catalogo dati AWS può essere l’origine.

Nota

Le tabelle di data lake che aggiungi a un’unità di condivisione dati possono includere tabelle registrate con Lake Formation e le tabelle del catalogo dati AWS Glue.

Creare uno schema esterno e una tabella esterna

Crea uno schema esterno e una tabella esterna per aggiungerli all’unità di condivisione dati nelle sezioni seguenti. Queste fasi sono preliminari. Se lo hai già fatto, puoi ignorare questa sezione.

  1. Sul producer crea uno schema esterno che faccia riferimento ai dati del data lake archiviati in Amazon S3. Lo schema esterno fa riferimento al Catalogo dati AWS Glue. Il ruolo e la Regione nell’esempio sono esempi:

    CREATE EXTERNAL SCHEMA external_schema_name FROM DATA CATALOG DATABASE 'glue_database_name' IAM_ROLE 'arn:aws:iam::123456789012:role/sample-role' REGION 'us-east-1';
  2. Crea una tabelle di data lake nello schermo esterno.

    CREATE EXTERNAL TABLE external_schema_name.sales( salesid INTEGER, sellerid INTEGER, buyerid INTEGER, saledate DATE, pricepaid DECIMAL(8,2)) ROW FORMAT delimited FIELDS TERMINATED BY '\t' STORED AS textfile LOCATION 's3://redshift-downloads/tickit/spectrum/sales/';

    L’esempio include LOCATION. Deve essere nel formato s3://{bucket_name}/{folder}/, dove è specificata la cartella. La cartella deve essere lunga almeno un carattere. Facoltativamente puoi includere le sottocartelle. Per vedere altri esempi di creazione di tabelle in un data lake, consulta Esempi per CREATE EXTERNAL TABLE.

    Nota

    La condivisione è supportata solo per le tabelle in cui il ruolo IAM sul producer ha accesso SELECT per la tabella.

Aggiungere una vista con associazione tardiva che crea un riferimento per una tabella di data lake a un’unità di condivisione dati

Quando crei tabelle basate su uno schema esterno dal catalogo dati AWS e desideri aggiungerle a un’unità di condivisione dati, il modo più comune per farlo è aggiungere una vista con associazione tardiva Redshift che faccia riferimento alla tabella creata, che contiene i dati del data lake. Di seguito sono descritte le fasi della procedura:

  1. Crea una vista con associazione tardiva che faccia riferimento alla tabella esterna creata in precedenza:

    CREATE VIEW lbv AS select * from external_schema_name.sales, other_schema.t1 WITH NO SCHEMA BINDING;
  2. Aggiungi lo schema della vista all’unità di condivisione dati. Questo è lo schema locale che contiene la vista con associazione tardiva.

    ALTER DATASHARE dsx_datashare ADD SCHEMA public;
  3. Aggiungi lo schema che contiene la tabella a cui fa riferimento la vista con associazione tardiva all’unità di condivisione dati. L’aggiunta dello schema è necessaria per qualsiasi tabella di base a cui fai riferimento in una vista aggiunta a un’unità di condivisione dati, indipendentemente dal fatto che lo schema contenga oggetti di database locali oppure oggetti provenienti da un data lake. Tieni presente che devi aggiungere questo schema prima di aggiungere la vista con associazione tardiva.

    ALTER DATASHARE dsx_datashare ADD SCHEMA external_schema_name; ALTER DATASHARE dsx_datashare ADD SCHEMA other_schema;
  4. Aggiungi la vista all’unità di condivisione dati utilizzando un comando SQL. Tieni presente che il nome della tabella include il prefisso dello schema.

    ALTER DATASHARE my_datashare ADD TABLE public.lbv;
  5. Conferma che la vista e gli schemi sono stati aggiunti correttamente all’unità di condivisione dati:

    SELECT * FROM svv_datashare_objects WHERE share_name = 'my_datashare';
  6. L’amministratore consumer crea un database dall’unità di condivisione dati e quindi ne concede l’utilizzo agli utenti consumer.

Dopo avere completato le fasi, gli utenti consumer del database con accesso alla visualizzazione dell’unità di condivisione dati possono eseguire query sui dati.

Aggiungere una tabella di data lake direttamente a un’unità di condivisione dati

L’aggiunta di una tabella in uno schema esterno a un’unità di condivisione dati è simile all’aggiunta di una vista. Ciò è utile nel caso in cui un consumer desideri eseguire query sulla tabella del data lake nello stato originale o desideri effettuarne il join con le tabelle del data warehouse consumer. Le fasi seguenti mostrano come aggiungere una tabella di data lake a un’unità di condivisione dati con SQL.

  1. Crea uno schema esterno e una tabella esterna, come descritto nella prima sezione di questo argomento.

  2. Scopri le tabelle esistenti nello schema esterno per confermare che la tabella che hai creato è disponibile:

    SELECT * FROM svv_external_tables WHERE schemaname = 'external_schema_name';
  3. Aggiungi lo schema esterno all’unità di condivisione dati:

    ALTER DATASHARE my_datashare ADD SCHEMA external_schema_name;
  4. Aggiungi la tabella esterna all’unità di condivisione dati. Tieni presente che il nome della tabella include il prefisso dello schema:

    ALTER DATASHARE my_datashare ADD TABLE external_schema_name.sales;
  5. Conferma che la tabella è stata aggiunta correttamente all’unità di condivisione dati:

    SELECT * FROM svv_datashare_objects WHERE share_name = 'my_datashare';

    Per istruzioni più dettagliate, consulta Condivisione dell’accesso in lettura ai dati all’interno di un account AWS.

  6. Sul consumer, ossia il database che riceve i dati condivisi, l’amministratore associa l’unità di condivisione dati per rendere disponibili le tabelle condivise su cui gli utenti possono eseguire le query. Per ulteriori informazioni su come completare questa fase, consulta Gestione delle unità di condivisione dati da altri account in qualità di consumer.

Dopo che gli amministratori hanno completato le fasi, gli utenti del database sul consumer possono scrivere query per recuperare i dati dalla tabella condivisa ed effettuarne il join con altre tabelle sul consumer.

Note per l’utilizzo per l’aggiunta di oggetti di data lake a un’unità di condivisione dati

Ci sono diversi elementi da tenere in considerazione quando utilizzi tabelle e viste da un data lake in un’unità di condivisione dati:

  • Registrazione di log con AWS CloudTrail: l’account del producer di dati può utilizzare i log AWS CloudTrail per verificare quando viene effettuato l’accesso alle tabelle di data lake condivise tramite un’unità di condivisione dati:

    • Utilizzo dei dati di log per controllare l’accesso ai dati: CloudTrail registra i dettagli dei record su chi accede alle tabelle condivise, inclusi i producer e i consumer di unità di condivisione dati Redshift. Gli identificatori sono disponibili nel campo ExternalId nei log CloudTrail AssumeRole. Il proprietario dei dati può configurare ulteriori limitazioni all’accesso ai dati in una policy IAM mediante azioni. Per ulteriori informazioni sulla definizione dell’accesso ai dati tramite policy, consulta Accesso agli account AWS di proprietà di terze parti.

  • Sicurezza e autorizzazioni per i consumer: per le tabelle registrate di Lake Formation, le risorse Amazon S3 sono protette da Lake Formation e rese disponibili utilizzando le credenziali fornite da Lake Formation.

Considerazioni sulla fatturazione per l’aggiunta di oggetti del data lake a un’unità di condivisione dati

Di seguito vengono descritti in dettaglio come vengono attribuiti i costi per la memorizzazione e la scansione degli oggetti del data lake in un’unità di condivisione dati:

  • Quando un consumer esegue query sugli oggetti condivisi di un data lake, il costo della scansione viene fatturato al consumer.

    • Quando il consumer è un cluster con provisioning, Redshift utilizza Redshift Spectrum per scansionare i dati di Amazon S3. Pertanto il costo di Spectrum viene fatturato sull’account del consumer.

    • Quando il consumer è un gruppo di lavoro Amazon Redshift serverless, per Spectrum non è previsto alcun costo separato.

  • I costi di archiviazione e le operazioni di Amazon S3, come i bucket di elenchi, vengono fatturati sull’account proprietario di ogni bucket Amazon S3.

Per ulteriori dettagli sulla fatturazione per Amazon Redshift serverless, consulta Fatturazione per Amazon Redshift serverless. Ulteriori informazioni sulla fatturazione e sui prezzi sono disponibili nella pagina Prezzi di Amazon Redshift.