

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Gestione del Catalogo dati
<a name="manage-catalog"></a>

 AWS Glue Data Catalog È un repository di metadati centrale che archivia i metadati strutturali e operativi per i set di dati Amazon S3. La gestione efficace del Catalogo dati è fondamentale per mantenere la qualità, le prestazioni, la sicurezza e la governance dei dati.

 Comprendendo e applicando queste pratiche di gestione del Catalogo dati, puoi garantire che i metadati rimangano accurati, performanti, sicuri e ben governati man mano che il panorama dei dati si evolve. 

Questa sezione tratta i seguenti aspetti della gestione del Catalogo dati:
+ *Aggiornamento dello schema della tabella e delle partizioni*   Man mano che i dati evolvono, potrebbe essere necessario aggiornare lo schema della tabella o la struttura delle partizioni definiti nel Catalogo dati. Per ulteriori informazioni su come effettuare questi aggiornamenti a livello di codice utilizzando l'ETL, consulta. AWS Glue [Aggiornamento dello schema e aggiunta di nuove partizioni nel catalogo dati usando processi ETL AWS Glue](update-from-job.md)
+ *Gestione delle statistiche sulle colonne*: le statistiche accurate sulle colonne aiutano a ottimizzare i piani di query e a migliorare le prestazioni. Per ulteriori informazioni su come generare, aggiornare e gestire le statistiche sulle colonne, vedere[Ottimizzazione delle prestazioni delle query con le statistiche delle colonne](column-statistics.md). 
+  *Crittografia del catalogo dati* Per proteggere i metadati sensibili, puoi crittografare il catalogo dati utilizzando (). AWS Key Management Service AWS KMS In questa sezione viene descritto come abilitare e gestire la crittografia per il catalogo dati. 
+ *Proteggere il Catalogo dati con AWS Lake Formation*   Lake Formation offre un approccio completo alla sicurezza dei data lake e al controllo degli accessi. Puoi utilizzare Lake Formation per proteggere e gestire l'accesso al tuo Catalogo dati e ai dati sottostanti. 

**Topics**
+ [Aggiornamento dello schema e aggiunta di nuove partizioni nel catalogo dati usando processi ETL AWS Glue](update-from-job.md)
+ [Ottimizzazione delle prestazioni delle query con le statistiche delle colonne](column-statistics.md)
+ [Crittografia del catalogo dati](catalog-encryption.md)
+ [Protezione del catalogo dati con Lake Formation](secure-catalog.md)
+ [Lavorare con AWS Glue Data Catalog le viste in AWS Glue](catalog-views.md)

# Aggiornamento dello schema e aggiunta di nuove partizioni nel catalogo dati usando processi ETL AWS Glue
<a name="update-from-job"></a>

Il processo di estrazione, trasformazione e caricamento (ETL) potrebbe creare nuove partizioni di tabella nell'archivio dati di destinazione. Lo schema del set di dati può evolversi e divergere dallo schema del catalogo dati AWS Glue nel corso del tempo. AWS Glue I processi ETL ora forniscono diverse funzionalità che puoi utilizzare all'interno dello script ETL per aggiornare lo schema e le partizioni nel catalogo dati. Queste caratteristiche ti consentono di vedere i risultati del processo ETL nel catalogo dati, senza dover eseguire nuovamente il crawler.

## Nuove partizioni
<a name="update-from-job-partitions"></a>

Se desideri visualizzare le nuove partizioni in AWS Glue Data Catalog, puoi effettuare una delle seguenti operazioni:
+ Al termine del processo, esegui nuovamente il crawler e visualizza le nuove partizioni sulla console al termine del crawler.
+ Al termine del processo, visualizza immediatamente le nuove partizioni sulla console, senza dover eseguire nuovamente il crawler. Puoi abilitare questa caratteristica aggiungendo alcune righe di codice allo script ETL, come mostrato negli esempi seguenti. Il codice utilizza l'argomento `enableUpdateCatalog` per indicare che il catalogo dati deve essere aggiornato durante l'esecuzione del processo quando vengono create nuove partizioni.

**Metodo 1**  
Passare `enableUpdateCatalog` e `partitionKeys` in un argomento opzioni.  

```
additionalOptions = {"enableUpdateCatalog": True}
additionalOptions["partitionKeys"] = ["region", "year", "month", "day"]


sink = glueContext.write_dynamic_frame_from_catalog(frame=last_transform, database=<target_db_name>,
                                                    table_name=<target_table_name>, transformation_ctx="write_sink",
                                                    additional_options=additionalOptions)
```

```
val options = JsonOptions(Map(
    "path" -> <S3_output_path>, 
    "partitionKeys" -> Seq("region", "year", "month", "day"), 
    "enableUpdateCatalog" -> true))
val sink = glueContext.getCatalogSink(
    database = <target_db_name>, 
    tableName = <target_table_name>, 
    additionalOptions = options)sink.writeDynamicFrame(df)
```

**Metodo 2**  
Passare `enableUpdateCatalog` e `partitionKeys` in `getSink()` e chiamare `setCatalogInfo()` sull'oggetto `DataSink`.  

```
sink = glueContext.getSink(
    connection_type="s3", 
    path="<S3_output_path>",
    enableUpdateCatalog=True,
    partitionKeys=["region", "year", "month", "day"])
sink.setFormat("json")
sink.setCatalogInfo(catalogDatabase=<target_db_name>, catalogTableName=<target_table_name>)
sink.writeFrame(last_transform)
```

```
val options = JsonOptions(
   Map("path" -> <S3_output_path>, 
       "partitionKeys" -> Seq("region", "year", "month", "day"), 
       "enableUpdateCatalog" -> true))
val sink = glueContext.getSink("s3", options).withFormat("json")
sink.setCatalogInfo(<target_db_name>, <target_table_name>)
sink.writeDynamicFrame(df)
```

Ora, puoi creare nuove tabelle di catalogo, aggiornare le tabelle esistenti con schema modificato e aggiungere nuove partizioni di tabella nel catalogo dati utilizzando direttamente un processo ETL di AWS Glue, senza la necessità di eseguire nuovamente i crawler.

## Aggiornamento dello schema della tabella
<a name="update-from-job-updating-table-schema"></a>

Se desideri sovrascrivere lo schema della tabella del catalogo dati, puoi eseguire una delle seguenti operazioni:
+ Al termine del processo, esegui nuovamente il crawler e assicurati che il crawler sia configurato per aggiornare anche la definizione della tabella. Visualizza le nuove partizioni sulla console insieme agli eventuali aggiornamenti dello schema, al termine del crawler. Per maggiori informazioni, consulta [Configurazione di un crawler utilizzando l'API](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-configure-changes-api).
+ Al termine del processo, visualizza immediatamente lo schema modificato sulla console, senza dover eseguire nuovamente il crawler. Puoi abilitare questa caratteristica aggiungendo alcune righe di codice allo script ETL, come mostrato negli esempi seguenti. Il codice utilizza `enableUpdateCatalog` impostato su true, e anche `updateBehavior` impostato su `UPDATE_IN_DATABASE`, il che indica di sovrascrivere lo schema e aggiungere nuove partizioni nel catalogo dati durante l'esecuzione del processo.

------
#### [ Python ]

```
additionalOptions = {
    "enableUpdateCatalog": True, 
    "updateBehavior": "UPDATE_IN_DATABASE"}
additionalOptions["partitionKeys"] = ["partition_key0", "partition_key1"]

sink = glueContext.write_dynamic_frame_from_catalog(frame=last_transform, database=<dst_db_name>,
    table_name=<dst_tbl_name>, transformation_ctx="write_sink",
    additional_options=additionalOptions)
job.commit()
```

------
#### [ Scala ]

```
val options = JsonOptions(Map(
    "path" -> outputPath, 
    "partitionKeys" -> Seq("partition_0", "partition_1"), 
    "enableUpdateCatalog" -> true))
val sink = glueContext.getCatalogSink(database = nameSpace, tableName = tableName, additionalOptions = options)
sink.writeDynamicFrame(df)
```

------

Puoi inoltre impostare il valore `updateBehavior` su `LOG` se desideri impedire che lo schema di tabella venga sovrascritto, ma se desidera comunque aggiungere le nuove partizioni. Il valore predefinito di `updateBehavior` è `UPDATE_IN_DATABASE`, quindi se non lo definisci esplicitamente, lo schema della tabella verrà sovrascritto.

Se `enableUpdateCatalog` non è impostato su true, indipendentemente da qualsiasi opzione selezionata per `updateBehavior`, il processo ETL non aggiornerà la tabella nel catalogo dati. 

## Creazione di nuove tabelle
<a name="update-from-job-creating-new-tables"></a>

Puoi inoltre utilizzare le stesse opzioni per creare una nuova tabella nel catalogo dati. Puoi specificare il database e il nome della nuova tabella utilizzando `setCatalogInfo`.

------
#### [ Python ]

```
sink = glueContext.getSink(connection_type="s3", path="s3://path/to/data",
    enableUpdateCatalog=True, updateBehavior="UPDATE_IN_DATABASE",
    partitionKeys=["partition_key0", "partition_key1"])
sink.setFormat("<format>")
sink.setCatalogInfo(catalogDatabase=<dst_db_name>, catalogTableName=<dst_tbl_name>)
sink.writeFrame(last_transform)
```

------
#### [ Scala ]

```
val options = JsonOptions(Map(
    "path" -> outputPath, 
    "partitionKeys" -> Seq("<partition_1>", "<partition_2>"), 
    "enableUpdateCatalog" -> true, 
    "updateBehavior" -> "UPDATE_IN_DATABASE"))
val sink = glueContext.getSink(connectionType = "s3", connectionOptions = options).withFormat("<format>")
sink.setCatalogInfo(catalogDatabase = “<dst_db_name>”, catalogTableName = “<dst_tbl_name>”)
sink.writeDynamicFrame(df)
```

------

## Restrizioni
<a name="update-from-job-restrictions"></a>

Prestare attenzione alle seguenti restrizioni:
+ Sono supportate solo le destinazioni di Amazon Simple Storage Service (Amazon S3).
+ La funzionalità `enableUpdateCatalog` non è supportata per le tabelle governate.
+ Sono supportati solo i seguenti formati: `json`, `csv`, `avro`, e `parquet`.
+ Per creare o aggiornare tabelle con la `parquet` classificazione, è necessario utilizzare il parquet writer AWS Glue ottimizzato per. DynamicFrames È possibile farlo in uno dei modi seguenti:
  + Se stai aggiornando una tabella esistente nel catalogo con la classificazione `parquet`, la proprietà della tabella `"useGlueParquetWriter"` deve essere impostata su `true` prima di aggiornarla. È possibile impostare questa proprietà tramite AWS Glue APIs /SDK, tramite la console o tramite un'istruzione Athena DDL.   
![\[Campo di modifica delle proprietà della tabella del catalogo nella console. AWS Glue\]](http://docs.aws.amazon.com/it_it/glue/latest/dg/images/edit-table-property.png)

    Una volta impostata la proprietà della tabella del catalogo, puoi utilizzare il seguente frammento di codice per aggiornare la tabella del catalogo con i nuovi dati:

    ```
    glueContext.write_dynamic_frame.from_catalog(
        frame=frameToWrite,
        database="dbName",
        table_name="tableName",
        additional_options={
            "enableUpdateCatalog": True,
            "updateBehavior": "UPDATE_IN_DATABASE"
        }
    )
    ```
  + Se la tabella non esiste ancora nel catalogo, puoi utilizzare il metodo `getSink()` nello script con `connection_type="s3"` per aggiungere la tabella e le sue partizioni al catalogo, oltre a scrivere i dati su Amazon S3. Fornisci i valori appropriati di `partitionKeys` e `compression` per il tuo flusso di lavoro.

    ```
    s3sink = glueContext.getSink(
        path="s3://bucket/folder/",
        connection_type="s3",
        updateBehavior="UPDATE_IN_DATABASE",
        partitionKeys=[],
        compression="snappy",
        enableUpdateCatalog=True
    )
        
    s3sink.setCatalogInfo(
        catalogDatabase="dbName", catalogTableName="tableName"
    )
        
    s3sink.setFormat("parquet", useGlueParquetWriter=True)
    s3sink.writeFrame(frameToWrite)
    ```
  + Il valore di `glueparquet` formato è un metodo obsoleto per abilitare il AWS Glue parquet writer.
+ Quando `updateBehavior` è impostato su `LOG`, nuove partizioni verranno aggiunte solo se lo schema `DynamicFrame` è equivalente o contiene un sottoinsieme delle colonne definite nello schema della tabella del catalogo dati.
+ Gli aggiornamenti dello schema non sono supportati per le tabelle non partizionate (che non utilizzano l'opzione “partitionKeys”).
+ Le PartitionKeys devono essere equivalenti, e nello stesso ordine, tra il parametro passato nello script ETL e le PartitionKeys nello schema della tabella del catalogo dati.
+ Questa funzionalità attualmente non supporta ancora le updating/creating tabelle in cui sono annidati gli schemi di aggiornamento (ad esempio, gli array all'interno delle strutture).

Per ulteriori informazioni, consulta [Script di programmazione Spark](aws-glue-programming.md).

# Lavorare con le connessioni MongoDB nei processi ETL
<a name="integrate-with-mongo-db"></a>

Puoi creare una connessione per MongoDB e usare quella connessione nel tuo processo AWS Glue. Per ulteriori informazioni, consultare [Connessioni MongoDB](aws-glue-programming-etl-connect-mongodb-home.md) la guida alla AWS Glue programmazione. La connessione`url`, `username` e `password` sono archiviati nella connessione MongoDB. Altre opzioni possono essere specificate nello script del processo ETL utilizzando il parametro `additionalOptions` di `glueContext.getCatalogSource`. Le altre opzioni possono includere:
+ `database`: (Obbligatorio) Il database MongoDB da cui leggere.
+ `collection`: (Obbligatorio) La raccolta MongoDB da cui leggere.

Posizionando le informazioni di `database` e `collection` all'interno dello script del processo ETL, puoi utilizzare la stessa connessione in più processi.

1. Crea una AWS Glue Data Catalog connessione per l'origine dati MongoDB. Consulta ["connectionType": "mongodb"](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html#aws-glue-programming-etl-connect-mongodb) per una descrizione dei parametri di connessione. È possibile creare la connessione utilizzando la console APIs o la CLI.

1. Crea un database in AWS Glue Data Catalog per memorizzare le definizioni delle tabelle per i tuoi dati MongoDB. Per ulteriori informazioni, consulta [Creazione di database](define-database.md).

1. Crea un crawler che esegue il crawling dati in MongoDB utilizzando le informazioni nella connessione per connettersi a MongoDB. Il crawler crea le tabelle AWS Glue Data Catalog che descrivono le tabelle del database MongoDB che usi nel tuo job. Per ulteriori informazioni, consulta [Utilizzo dei crawler per compilare il Catalogo dati](add-crawler.md).

1. Crea un processo con uno script personalizzato. È possibile creare il lavoro utilizzando la console APIs o la CLI. Per ulteriori informazioni, consulta [Aggiunta di processi in AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-job.html).

1. Scegli le destinazioni dati per il tuo processo. Le tabelle che rappresentano la destinazione dei dati possono essere definite nel catalogo dati oppure il processo può creare le tabelle di destinazione quando viene eseguito. Puoi scegliere una posizione di destinazione al momento della creazione del processo. Se la destinazione richiede una connessione, anche la connessione ha un riferimento nel tuo processo. Se il processo richiede più destinazioni dati, in seguito potrai aggiungerle modificando lo script.

1. Personalizza l'ambiente di elaborazione del processo fornendo gli argomenti per il tuo processo e lo script generato. 

   Di seguito è illustrato un esempio di creazione di un `DynamicFrame` dal database MongoDB in base alla struttura della tabella definita nel catalogo dati. Il codice utilizza `additionalOptions` per fornire le informazioni aggiuntive sull'origine dati:

------
#### [  Scala  ]

   ```
   val resultFrame: DynamicFrame = glueContext.getCatalogSource(
           database = catalogDB, 
           tableName = catalogTable, 
           additionalOptions = JsonOptions(Map("database" -> DATABASE_NAME, 
                   "collection" -> COLLECTION_NAME))
         ).getDynamicFrame()
   ```

------
#### [  Python  ]

   ```
   glue_context.create_dynamic_frame_from_catalog(
           database = catalogDB,
           table_name = catalogTable,
           additional_options = {"database":"database_name", 
               "collection":"collection_name"})
   ```

------

1. Esegui il processo, on demand o tramite un trigger.

# Ottimizzazione delle prestazioni delle query con le statistiche delle colonne
<a name="column-statistics"></a>

Puoi calcolare statistiche a livello di colonna per AWS Glue Data Catalog tabelle in formati di dati come Parquet, ORC, JSON, ION, CSV e XML senza configurare pipeline di dati aggiuntive. Le statistiche delle colonne consentono di comprendere i profili di dati ottenendo informazioni dettagliate sui valori all'interno di una colonna. 

Data Catalog supporta la generazione di statistiche per valori di colonna come valore minimo, valore massimo, valori nulli totali, valori distinti totali, lunghezza media dei valori e occorrenze totali di valori reali. AWS servizi di analisi come Amazon Redshift Amazon Athena possono utilizzare queste statistiche a colonne per generare piani di esecuzione delle query e scegliere il piano ottimale che migliori le prestazioni delle query.

Sono possibili tre scenari per generare le statistiche delle colonne: 

 **Automatico**   
AWS Glue supporta la generazione automatica di statistiche sulle colonne a livello di catalogo in modo da poter generare automaticamente statistiche per nuove tabelle in. AWS Glue Data Catalog

**Pianificato**  
AWS Glue supporta la generazione di statistiche sulle colonne di pianificazione in modo che possa essere eseguita automaticamente in base a una pianificazione ricorrente.   
Con il calcolo pianificato delle statistiche, l'attività di statistica delle colonne aggiorna le statistiche complessive a livello di tabella, ad esempio min, max e avg, con le nuove statistiche, fornendo ai motori di query statistiche accurate e per ottimizzare l'esecuzione delle query. up-to-date 

**Su richiesta**  
Utilizzare questa opzione per generare statistiche delle colonne on demand ogni volta che è necessario. Questo è utile per analisi ad hoc o quando le statistiche devono essere calcolate immediatamente. 

È possibile configurare l'esecuzione di attività di generazione di statistiche sulle colonne utilizzando le operazioni AWS Glue della console e AWS Glue dell'API. AWS CLI Quando avvii il processo, AWS Glue avvia un job Spark in background e aggiorna i metadati della AWS Glue tabella nel Data Catalog. Puoi visualizzare le statistiche delle colonne utilizzando la AWS Glue console AWS CLI o chiamando l'[GetColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_GetColumnStatisticsForTable.html)operazione API.

**Nota**  
Se utilizzi le autorizzazioni di Lake Formation per controllare l'accesso alla tabella, il ruolo assunto dall'attività di statistica delle colonne richiede l'accesso completo alla tabella per generare statistiche.

 Il video seguente illustra come migliorare le prestazioni delle query utilizzando le statistiche delle colonne. 

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/zUHEXJdHUxs?si=HjyhpoALR6RXJz2i/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/zUHEXJdHUxs?si=HjyhpoALR6RXJz2i)


**Topics**
+ [Prerequisiti per la generazione delle statistiche delle colonne](column-stats-prereqs.md)
+ [Generazione automatica delle statistiche delle colonne](auto-column-stats-generation.md)
+ [Generazione di statistiche a colonne in base a una pianificazione](generate-column-stats.md)
+ [Generazione di statistiche delle colonne on demand](column-stats-on-demand.md)
+ [Visualizzazione delle statistiche delle colonne](view-column-stats.md)
+ [Visualizzazione dell'attività relativa alle statistiche delle colonne](view-stats-run.md)
+ [Interruzione dell'esecuzione relativa alle statistiche delle colonne](stop-stats-run.md)
+ [Eliminazione delle statistiche delle colonne](delete-column-stats.md)
+ [Considerazioni e limitazioni](column-stats-notes.md)

# Prerequisiti per la generazione delle statistiche delle colonne
<a name="column-stats-prereqs"></a>

Per generare o aggiornare le statistiche delle colonne, l'attività di generazione delle statistiche assume un ruolo (IAM) AWS Identity and Access Management . In base alle autorizzazioni concesse al ruolo, l'attività di generazione delle statistiche delle colonne può leggere i dati dal datastore di Amazon S3.

Quando si configura l'attività di generazione delle statistiche sulle colonne, AWS Glue consente di creare un ruolo che include la politica `AWSGlueServiceRole` AWS gestita più la politica in linea richiesta per l'origine dati specificata. 

Se si specifica un ruolo esistente per la generazione di statistiche delle colonne, bisogna assicurarsi che includa la policy `AWSGlueServiceRole` o equivalente (o una versione ridotta di questa policy), oltre alle policy inline richieste. Per creare un nuovo ruolo IAM, attenersi alla seguente procedura:

**Nota**  
 Per generare statistiche per le tabelle gestite da Lake Formation, il ruolo IAM utilizzato per generare le statistiche richiede l'accesso completo alla tabella. 

Quando si configura l'attività di generazione delle statistiche sulle colonne, AWS Glue consente di creare un ruolo che include la politica `AWSGlueServiceRole` AWS gestita più la politica in linea richiesta per l'origine dati specificata. È inoltre possibile creare un ruolo, allegare le autorizzazioni elencate nella policy riportata di seguito e aggiungere il ruolo all'attività di generazione delle statistiche delle colonne.

**Per creare un ruolo IAM per la generazione delle statistiche delle colonne**

1. Per creare un ruolo IAM, consulta l'argomento relativo alla [creazione di ruoli IAM per AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/create-an-iam-role.html).

1. Per aggiornare un ruolo esistente, nella console IAM, vai al ruolo IAM utilizzato dal processo di generazione delle statistiche delle colonne.

1. Nella sezione **Autorizzazioni**, scegli **Collega policy**. Nella finestra del browser appena aperta, scegli policy `AWSGlueServiceRole` AWS gestita.

1. È necessario includere anche le autorizzazioni di lettura dei dati dalla posizione dei dati Amazon S3.

   Nella sezione **Autorizzazioni**, scegli **Aggiungi policy bucket**. Nella finestra del browser appena aperta, crea una nuova policy da utilizzare con il tuo ruolo.

1. Nella pagina **Crea policy** seleziona la scheda **JSON**. Copia il codice seguente `JSON` nel campo dell'editor di policy.
**Nota**  
Nelle seguenti politiche, sostituisci l'ID dell'account con un nome valido Account AWS, la regione della tabella e `bucket-name` il nome del bucket Amazon S3. `region`

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "S3BucketAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject"
               ],
               "Resource": [
               	"arn:aws:s3:::amzn-s3-demo-bucket/*",
   							"arn:aws:s3:::amzn-s3-demo-bucket"
               ]
           }
        ]
   }
   ```

------

1. (Facoltativo) Se utilizzi le autorizzazioni di Lake Formation per fornire l'accesso ai tuoi dati, il ruolo IAM richiede le autorizzazioni `lakeformation:GetDataAccess`.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "LakeFormationDataAccess",
         "Effect": "Allow",
         "Action": "lakeformation:GetDataAccess",
         "Resource": [
           "*"
         ]
       }
     ]
   }
   ```

------

    Se la posizione dei dati di Amazon S3 è registrata con Lake Formation e il ruolo IAM assunto dall'attività di generazione delle statistiche delle colonne non dispone delle autorizzazioni di gruppo `IAM_ALLOWED_PRINCIPALS` concesse sulla tabella, il ruolo richiede le autorizzazioni `ALTER` e `DESCRIBE` di Lake Formation sulla tabella. Il ruolo utilizzato per la registrazione del bucket Amazon S3 richiede le autorizzazioni `INSERT` e `DELETE` di Lake Formation sulla tabella. 

   Se la posizione dei dati di Amazon S3 non è registrata con Lake Formation e il ruolo IAM non dispone delle autorizzazioni di gruppo `IAM_ALLOWED_PRINCIPALS` concesse sulla tabella, il ruolo richiede le autorizzazioni `ALTER`, `DESCRIBE`, `INSERT` e `DELETE` di Lake Formation sulla tabella. 

1. Se è stata abilitata l'opzione `Automatic statistics generation` a livello di catalogo, il ruolo IAM deve avere l'autorizzazione `glue:UpdateCatalog` o l'autorizzazione `ALTER CATALOG` di Lake Formation sul Catalogo dati predefinito. Puoi utilizzare l'operazione `GetCatalog` per verificare le proprietà del catalogo. 

1. (Facoltativo) L'attività di generazione delle statistiche delle colonne che scrive Amazon CloudWatch Logs crittografati necessita delle autorizzazioni seguenti nella policy della chiave.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "CWLogsKmsPermissions",
         "Effect": "Allow",
         "Action": [
           "logs:CreateLogGroup",
           "logs:CreateLogStream",
           "logs:PutLogEvents",
           "logs:AssociateKmsKey"
         ],
         "Resource": [
           "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue:*"
         ]
       },
       {
         "Sid": "KmsPermissions",
         "Effect": "Allow",
         "Action": [
           "kms:GenerateDataKey",
           "kms:Decrypt",
           "kms:Encrypt"
         ],
         "Resource": [
           "arn:aws:kms:us-east-1:111122223333:key/arn of key used for ETL cloudwatch encryption"
         ],
         "Condition": {
           "StringEquals": {
             "kms:ViaService": [
               "glue.us-east-1.amazonaws.com"
             ]
           }
         }
       }
     ]
   }
   ```

------

1. Il ruolo utilizzato per eseguire le statistiche delle colonne deve disporre dell'autorizzazione `iam:PassRole` relativa al ruolo.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "iam:PassRole"
         ],
         "Resource": [
           "arn:aws:iam::111122223333:role/columnstats-role-name"
         ]
       }
     ]
   }
   ```

------

1. Quando crei un ruolo IAM per la generazione delle statistiche delle colonne, tale ruolo deve disporre anche della policy di attendibilità seguente che consente al servizio di assumere il ruolo. 

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "TrustPolicy",
         "Effect": "Allow",
         "Principal": {
           "Service": "glue.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

# Generazione automatica delle statistiche delle colonne
<a name="auto-column-stats-generation"></a>

La generazione automatica delle statistiche delle colonne consente di pianificare e calcolare automaticamente le statistiche su nuove tabelle nel AWS Glue Data Catalog. Quando abiliti la generazione automatica di statistiche, il Catalogo dati rileva nuove tabelle con formati di dati specifici come Parquet, JSON, CSV, XML, ORC, ION e Apache Iceberg, insieme ai rispettivi percorsi bucket individuali. Con una configurazione del catalogo una tantum, il catalogo dati genera statistiche per queste tabelle.

 Gli amministratori di data Lake possono configurare la generazione delle statistiche selezionando il catalogo predefinito nella console Lake Formation e abilitando le statistiche delle tabelle utilizzando l'opzione `Optimization configuration`. Quando crei nuove tabelle o aggiorni tabelle esistenti nel Data Catalog, il Data Catalog raccoglie il numero di valori distinti (NDVs) per le tabelle Apache Iceberg e statistiche aggiuntive come il numero di null, la lunghezza massima, minima e media per altri formati di file supportati su base settimanale. 

Se hai configurato la generazione delle statistiche a livello di tabella o se hai precedentemente eliminato le impostazioni di generazione delle statistiche per una tabella, tali impostazioni specifiche hanno la precedenza sulle impostazioni predefinite del catalogo per la generazione automatica delle statistiche delle colonne.

 L'attività di generazione automatica delle statistiche analizza il 50% dei record nelle tabelle per calcolare le statistiche. La generazione automatica delle statistiche delle colonne garantisce che il Catalogo dati mantenga metriche settimanali che possono essere utilizzate da motori di query come Amazon Athena e Amazon Redshift Spectrum per migliorare le prestazioni delle query e favorire potenziali risparmi sui costi. Consente di pianificare la generazione di statistiche utilizzando AWS Glue APIs o la console, fornendo un processo automatizzato senza intervento manuale. 

**Topics**
+ [Abilitazione della generazione automatica di statistiche a livello di catalogo](enable-auto-column-stats-generation.md)
+ [Visualizzazione delle impostazioni automatiche a livello di tabella](view-auto-column-stats-settings.md)
+ [Disattivazione della generazione delle statistiche delle colonne a livello di catalogo](disable-auto-column-stats-generation.md)

# Abilitazione della generazione automatica di statistiche a livello di catalogo
<a name="enable-auto-column-stats-generation"></a>

Puoi abilitare la generazione automatica di statistiche sulle colonne per tutte le nuove tabelle Apache Iceberg e le tabelle in formati di tabella non OTF (Parquet, JSON, CSV, XML, ORC, ION) nel Catalogo dati. Dopo aver creato la tabella, puoi anche aggiornare in modo esplicito le impostazioni delle statistiche delle colonne manualmente.

 Per aggiornare le impostazioni del Data Catalog per abilitare il livello di catalogo, il ruolo IAM utilizzato deve disporre dell'`glue:UpdateCatalog`autorizzazione o dell' AWS Lake Formation `ALTER CATALOG`autorizzazione sul catalogo principale. È possibile utilizzare `GetCatalog` l'API per verificare le proprietà del catalogo. 

------
#### [ Console di gestione AWS ]

**Abilitazione della generazione automatica delle statistiche delle colonne a livello di account**

1. Apri la console Lake Formation all'indirizzo [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. Nella barra di navigazione a sinistra, scegli **Cataloghi**.

1. Nella pagina di **Riepilogo del catalogo**, scegli **Modifica** in **Configurazione dell'ottimizzazione**.   
![\[La schermata mostra le opzioni disponibili per generare statistiche delle colonna.\]](http://docs.aws.amazon.com/it_it/glue/latest/dg/images/edit-column-stats-auto.png)

1. Nella pagina di **Configurazione dell'ottimizzazione della tabella**, scegli l'opzione **Abilita la generazione automatica delle statistiche per le tabelle del catalogo**.  
![\[La schermata mostra le opzioni disponibili per generare statistiche delle colonna.\]](http://docs.aws.amazon.com/it_it/glue/latest/dg/images/edit-optimization-option.jpg)

1. Scegli un ruolo IAM esistente o creane uno nuovo con le autorizzazioni necessarie per eseguire l'attività relativa alle statistiche relative alle colonne.

1. Seleziona **Invia**.

------
#### [ AWS CLI ]

Puoi anche abilitare la raccolta di statistiche a livello di catalogo tramite AWS CLI. Per configurare la raccolta di statistiche a livello di tabella utilizzando AWS CLI, esegui il seguente comando:

```
aws glue update-catalog --cli-input-json '{
    "name": "123456789012",
    "catalogInput": {
        "description": "Updating root catalog with role arn",
        "catalogProperties": {
            "customProperties": {
                "ColumnStatistics.RoleArn": "arn:aws:iam::"123456789012":role/service-role/AWSGlueServiceRole",
                "ColumnStatistics.Enabled": "true"
            }
        }
    }
}'
```

 Il comando precedente richiama AWS Glue l'`UpdateCatalog`operazione, che prevede una `CatalogProperties` struttura con le seguenti coppie chiave-valore per la generazione di statistiche a livello di catalogo: 
+ ColumnStatistics. RoleArn — ARN del ruolo IAM da utilizzare per tutte le attività attivate per la generazione di statistiche a livello di catalogo
+ ColumnStatistics.Enabled: valore booleano che indica se le impostazioni a livello di catalogo sono abilitate o disabilitate

------

# Visualizzazione delle impostazioni automatiche a livello di tabella
<a name="view-auto-column-stats-settings"></a>

 Quando la raccolta di statistiche a livello di catalogo è abilitata, ogni volta che una tabella Apache Hive o Apache Iceberg viene creata o aggiornata tramite o tramite SDK `CreateTable` o `UpdateTable` APIs Console di gestione AWS, viene creata un'impostazione a livello di tabella equivalente per quella tabella. Crawler di AWS Glue

 Le tabelle con la generazione automatica delle statistiche abilitata devono seguire una delle seguenti proprietà:
+ Usa un comando `InputSerdeLibrary` che inizia con org.apache.hadoop e `TableType` è uguale a `EXTERNAL_TABLE`
+ Usa un comando `InputSerdeLibrary` che inizia con `com.amazon.ion` e `TableType` è uguale a `EXTERNAL_TABLE`
+ Contiene table\$1type: “ICEBERG” nella sua struttura dei parametri. 

 Dopo aver creato o aggiornato una tabella, puoi verificare i dettagli della tabella per confermare la generazione delle statistiche. `Statistics generation summary` mostra la proprietà `Schedule` impostata come `AUTO` e il valore di `Statistics configuration` è `Inherited from catalog`. Qualsiasi configurazione della tabella con la seguente impostazione verrebbe attivata automaticamente da Glue internamente. 

![\[È stata applicata un'immagine di una tabella Hive con una raccolta di statistiche a livello di catalogo e le statistiche sono state raccolte.\]](http://docs.aws.amazon.com/it_it/glue/latest/dg/images/auto-stats-summary.png)


# Disattivazione della generazione delle statistiche delle colonne a livello di catalogo
<a name="disable-auto-column-stats-generation"></a>

 È possibile disabilitare la generazione automatica di statistiche sulle colonne per nuove tabelle utilizzando la AWS Lake Formation console, l'API o l'API. `glue:UpdateCatalogSettings` `glue:DeleteColumnStatisticsTaskSettings` 

**Disabilitazione della generazione automatica delle statistiche delle colonne a livello di account**

1. Apri la console Lake Formation all'indirizzo [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. Nella barra di navigazione a sinistra, scegli **Cataloghi**.

1. Nella pagina **Riepilogo del catalogo**, scegli **Modifica** in **Configurazione dell'ottimizzazione**. 

1. Nella pagina **Configurazione dell'ottimizzazione della tabella**, deseleziona l'opzione **Abilita la generazione automatica delle statistiche per le tabelle del catalogo**.

1. Seleziona **Invia**.

# Generazione di statistiche a colonne in base a una pianificazione
<a name="generate-column-stats"></a>

Segui questi passaggi per configurare una pianificazione per la generazione di statistiche sulle colonne AWS Glue Data Catalog utilizzando la AWS Glue console AWS CLI, l'o l'[CreateColumnStatisticsTaskSettings](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-CreateColumnStatisticsTaskSettings)operazione.

------
#### [ Console ]

**Per generare statistiche delle colonne utilizzando la console**

1. Accedi alla AWS Glue console all'indirizzo [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/). 

1. Seleziona le tabelle del Catalogo dati.

1. Scegliere una tabella dall'elenco. 

1. Scegli la scheda **Statistiche delle colonne** nella sezione inferiore della pagina **Tabelle**.

1. Puoi anche scegliere **Genera in base alla pianificazione** nelle **Statistiche delle colonne** da **Azioni**.

1. Nella pagina **Genera statistiche in base alla pianificazione**, configura una pianificazione ricorrente per l'esecuzione dell'attività di statistica a colonne scegliendo la frequenza e l'ora di inizio. Puoi scegliere la frequenza oraria, giornaliera, settimanale o definire un'espressione Cron per specificare la pianificazione.

   Un'espressione Cron è una stringa che rappresenta uno schema di pianificazione, composto da 6 campi separati da spazi: \$1 \$1 \$1 \$1 \$1 \$1 <minute> <hour> <day of month> <month> <day of week> <year> Ad esempio, per eseguire un'attività ogni giorno a mezzanotte, l'espressione Cron sarebbe: 0 0 \$1 \$1? \$1

   Per ulteriori informazioni consulta [Espressioni Cron](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html#CronExpressions).  
![\[La schermata mostra le opzioni disponibili per generare statistiche delle colonna.\]](http://docs.aws.amazon.com/it_it/glue/latest/dg/images/generate-column-stats-schedule.png)

1. Quindi, scegli l'opzione della colonna per generare statistiche.
   + **Tutte le colonne**: scegli questa opzione per generare statistiche per tutte le colonne della tabella.
   + **Colonne selezionate**: scegliere questa opzione per generare statistiche per colonne specifiche. È possibile selezionare le colonne dall'elenco a discesa.

1. Scegli un ruolo IAM o crea un ruolo esistente con le autorizzazioni per generare statistiche. AWS Glue assume questo ruolo per generare statistiche sulle colonne.

   Un approccio più rapido consiste nel lasciare che la AWS Glue console crei un ruolo per te. Il ruolo che crea è specifico per la generazione di statistiche sulle colonne e include la politica `AWSGlueServiceRole` AWS gestita più la politica in linea richiesta per l'origine dati specificata. 

   Se si specifica un ruolo esistente per la generazione di statistiche delle colonne, bisogna assicurarsi che includa la policy `AWSGlueServiceRole` o equivalente (o una versione ridotta di questa policy), oltre alle policy inline richieste. 

1. (Facoltativo) Scegli quindi una configurazione di sicurezza per abilitare la crittografia dei dati inattivi per i log.

1. (Facoltativo) È possibile scegliere una dimensione del campione indicando solo una percentuale specifica di righe dalla tabella per generare statistiche. Il valore predefinito è Tutte le righe. Utilizzate le frecce su e giù per aumentare o diminuire il valore percentuale. 

   Includi tutte le righe nella tabella per calcolare statistiche accurate. Utilizza righe di esempio per generare statistiche delle colonne solo quando i valori approssimativi sono accettabili.

1. Scegli **Genera statistiche** per eseguire l'attività di generazione delle statistiche sulle colonne.

------
#### [ AWS CLI ]

È possibile utilizzare l' AWS CLI esempio seguente per creare una pianificazione della generazione di statistiche su colonne. Il nome del database, il nome della tabella e il ruolo sono parametri obbligatori, mentre i parametri facoltativi sono schedule, catalog-id column-name-list, sample-size e security-configuration.

```
aws glue create-column-statistics-task-settings \ 
 --database-name 'database_name' \ 
 --table-name table_name \ 
 --role 'arn:aws:iam::123456789012:role/stats-role' \ 
 --schedule 'cron(0 0-5 14 * * ?)' \ 
 --column-name-list 'col-1' \  
 --catalog-id '123456789012' \ 
 --sample-size '10.0 ' \
 --security-configuration 'test-security'
```

È possibile generare statistiche [StartColumnStatisticsTaskRun](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-StartColumnStatisticsTaskRun)sulle colonne anche chiamando l'operazione.

------

# Gestione della pianificazione per la generazione delle statistiche delle colonne
<a name="manage-column-stats-schedule"></a>

È possibile gestire le operazioni di pianificazione come l'aggiornamento, l'avvio, l'interruzione e l'eliminazione delle pianificazioni per la generazione delle statistiche delle colonne in AWS Glue. Puoi utilizzare le [operazioni API di statistica AWS Glue della AWS Glue console o delle colonne](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html) per eseguire queste attività. AWS CLI

**Topics**
+ [Aggiornamento del programma di generazione delle statistiche delle colonne](#update-column-stats-shedule)
+ [Interruzione della pianificazione per la generazione delle statistiche delle colonne](#stop-column-stats-schedule)
+ [Ripresa della pianificazione per la generazione delle statistiche delle colonne](#resume-column-stats-schedule)
+ [Eliminazione del programma di generazione delle statistiche delle colonne](#delete-column-stats-schedule)

## Aggiornamento del programma di generazione delle statistiche delle colonne
<a name="update-column-stats-shedule"></a>

Dopo la creazione, è possibile aggiornare la pianificazione per attivare l'attività di generazione delle statistiche delle colonne È possibile utilizzare la AWS Glue console o eseguire l'[UpdateColumnStatisticsTaskSettings](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-UpdateColumnStatisticsTaskSettings)operazione per aggiornare la pianificazione di una tabella. AWS CLIÈ possibile modificare i parametri di una pianificazione esistente, ad esempio il tipo di pianificazione (su richiesta o pianificata) e altri parametri opzionali. 

------
#### [ Console di gestione AWS ]

**Per aggiornare le impostazioni di un'attività di generazione delle statistiche delle colonne**

1. Accedi alla AWS Glue console all'indirizzo [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Scegli la tabella da aggiornare dall'elenco delle tabelle.

1. Nella sezione inferiore della pagina Tabelle, scegli **Statistiche delle colonne**. 

1. In **Azioni**, scegli **Modifica** per aggiornare la pianificazione.

1. Apporta le modifiche desiderate alla pianificazione e scegli **Salva**.

------
#### [ AWS CLI ]

 Se non utilizzi AWS Glue la funzionalità di generazione delle statistiche nella console, puoi aggiornare manualmente la pianificazione utilizzando il `update-column-statistics-task-settings` comando. L'esempio seguente mostra come aggiornare le statistiche delle colonne utilizzando AWS CLI. 

```
aws glue update-column-statistics-task-settings \ 
 --database-name 'database_name' \ 
 --table-name 'table_name' \ 
 --role arn:aws:iam::123456789012:role/stats_role \ 
 --schedule 'cron(0 0-5 16 * * ?)' \ 
 --column-name-list 'col-1' \
 --sample-size '20.0' \  
 --catalog-id '123456789012'\
 --security-configuration 'test-security'
```

------

## Interruzione della pianificazione per la generazione delle statistiche delle colonne
<a name="stop-column-stats-schedule"></a>

 Se non hai più bisogno delle statistiche incrementali, puoi interrompere la generazione pianificata per risparmiare risorse e costi. Mettere in pausa la pianificazione non influisce sulle statistiche generate in precedenza. Puoi riprendere la pianificazione quando preferisci. 

------
#### [ Console di gestione AWS ]

**Per interrompere la pianificazione di un'attività di generazione di statistiche delle colonne**

1. Sulla AWS Glue console, scegli **Tabelle** in Data Catalog.

1. Seleziona una tabella con le statistiche delle colonne.

1. Nella pagina dei **Dettagli della tabella**, scegli **Statistiche delle colonne**.

1. In **Azioni**, scegli **Generazione pianificata**, **Pausa**.

1. Scegli **Pausa** per confermare.

------
#### [ AWS CLI ]

Per interrompere la pianificazione dell'esecuzione di un'attività di statistica su colonne utilizzando il AWS CLI, puoi utilizzare il seguente comando: 

```
aws glue stop-column-statistics-task-run-schedule \
 --database-name ''database_name' \
 --table-name 'table_name'
```

Sostituire `database_name` e `table_name` con i nomi effettivi del database e della tabella per i quali si desidera interrompere la pianificazione dell'esecuzione dell'attività di statistiche delle colonne.

------

## Ripresa della pianificazione per la generazione delle statistiche delle colonne
<a name="resume-column-stats-schedule"></a>

 Se hai messo in pausa la pianificazione della generazione delle statistiche, ti AWS Glue consente di riprenderla quando preferisci. Puoi riprendere la pianificazione utilizzando la AWS Glue console o AWS CLI l'operazione. [StartColumnStatisticsTaskRunSchedule](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-StartColumnStatisticsTaskRunSchedule) 

------
#### [ Console di gestione AWS ]

**Per riprendere la pianificazione per la generazione delle statistiche delle colonne**

1. Sulla AWS Glue console, scegli **Tabelle** in Data Catalog.

1. Seleziona una tabella con le statistiche delle colonne.

1. Nella pagina dei **Dettagli della tabella**, scegli **Statistiche delle colonne**.

1. In **Azioni**, scegli **Generazione pianificata**, quindi scegli **Riprendi**.

1. Scegli **Riprendi** per confermare.

------
#### [ AWS CLI ]

Sostituire `database_name` e `table_name` con i nomi effettivi del database e della tabella per i quali si desidera interrompere la pianificazione dell'esecuzione dell'attività di statistiche delle colonne.

```
aws glue start-column-statistics-task-run-schedule \
 --database-name 'database_name' \
 --table-name 'table_name'
```

------

## Eliminazione del programma di generazione delle statistiche delle colonne
<a name="delete-column-stats-schedule"></a>

 Sebbene la gestione delle up-to-date statistiche sia generalmente consigliata per prestazioni ottimali delle query, esistono casi d'uso specifici in cui la rimozione della pianificazione di generazione automatica potrebbe essere utile.
+ Se i dati rimangono relativamente statici, le statistiche delle colonne esistenti possono rimanere accurate per un periodo prolungato, riducendo la necessità di aggiornamenti frequenti. L'eliminazione della pianificazione può evitare il consumo inutile di risorse e il sovraccarico associato alla rigenerazione delle statistiche su dati immutati.
+ Quando è preferibile il controllo manuale sulla generazione delle statistiche. Eliminando la pianificazione automatica, gli amministratori possono aggiornare selettivamente le statistiche delle colonne a intervalli specifici o dopo modifiche significative dei dati, allineando il processo alle strategie di manutenzione e alle esigenze di allocazione delle risorse. 

------
#### [ Console di gestione AWS ]

**Per eliminare la pianificazione per la generazione delle statistiche delle colonne**

1. Sulla AWS Glue console, scegli **Tabelle** in Data Catalog.

1. Seleziona una tabella con le statistiche delle colonne.

1. Nella pagina dei **Dettagli della tabella**, scegli **Statistiche delle colonne**.

1. In **Azioni**, scegli **Generazione pianificata**, **Elimina**.

1. Seleziona **Elimina** per confermare.

------
#### [ AWS CLI ]

Sostituire `database_name` e `table_name` con i nomi effettivi del database e della tabella per i quali si desidera interrompere la pianificazione dell'esecuzione dell'attività di statistiche delle colonne.

Puoi eliminare la pianificazione delle statistiche delle colonne utilizzando l'operazione [DeleteColumnStatisticsTaskSettings](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-DeleteColumnStatisticsTaskSettings)API o AWS CLI. L'esempio seguente mostra come eliminare la pianificazione per la generazione di statistiche sulle colonne utilizzando AWS Command Line Interface (AWS CLI).

```
aws glue delete-column-statistics-task-settings \
    --database-name 'database_name' \
    --table-name 'table_name'
```

------

# Generazione di statistiche delle colonne on demand
<a name="column-stats-on-demand"></a>

È possibile eseguire l'attività di statistica delle colonne per l'attività AWS Glue Data Catalog tabelle su richiesta senza una pianificazione prestabilita. Questa opzione è utile per analisi ad hoc o quando le statistiche devono essere calcolate immediatamente.

Segui questi passaggi per generare statistiche sulle colonne su richiesta per le tabelle del Data Catalog utilizzando la AWS Glue console o AWS CLI.

------
#### [ Console di gestione AWS ]

**Per generare statistiche delle colonne utilizzando la console**

1. Accedi alla AWS Glue console all'indirizzo [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/). 

1. Seleziona le tabelle del Catalogo dati.

1.  Scegliere una tabella dall'elenco. 

1. Scegli **Genera statistiche** nel menu **Azioni**.

   È possibile anche scegliere le opzioni **Genera statistiche** e **Genera on demand** nella scheda **Statistiche delle colonne** nella sezione inferiore della pagina **Tabelle**.

1. Seguire i passaggi da 7 a 11 in [Generazione di statistiche a colonne in base a una pianificazione](generate-column-stats.md) per generare statistiche delle colonne per la tabella.

1. Nella pagina **Genera statistiche**, specifica le seguenti opzioni:   
![\[La schermata mostra le opzioni disponibili per generare statistiche delle colonna.\]](http://docs.aws.amazon.com/it_it/glue/latest/dg/images/generate-column-stats.png)
   + **Tutte le colonne**: scegliere questa opzione per generare statistiche per tutte le colonne della tabella.
   + **Colonne selezionate**: scegliere questa opzione per generare statistiche per colonne specifiche. È possibile selezionare le colonne dall'elenco a discesa.
   + **Ruolo IAM**: scegliere **Crea un nuovo ruolo IAM** con le policy di autorizzazione necessarie per eseguire l'attività di generazione delle statistiche delle colonne. Scegliere Visualizza i dettagli delle autorizzazioni per rivedere le istruzioni della policy. È possibile anche selezionare un ruolo IAM dall'elenco. Per ulteriori informazioni sulle autorizzazioni richieste, consulta [Prerequisiti per la generazione delle statistiche delle colonne](column-stats-prereqs.md).

     AWS Glue assume le autorizzazioni del ruolo specificato per generare statistiche. 

     Per ulteriori informazioni sulla fornitura di ruoli per AWS Glue, consulta Politiche basate sull'[identità](https://docs.aws.amazon.com/glue/latest/dg/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies) per. AWS Glue.
   + (Facoltativo) Scegli quindi una configurazione di sicurezza per abilitare la crittografia dei dati inattivi per i log.
   + **Righe di esempio**: scegli solo una percentuale specifica di righe dalla tabella per generare statistiche. Il valore predefinito è Tutte le righe. Utilizzate le frecce su e giù per aumentare o diminuire il valore percentuale.
**Nota**  
Includi tutte le righe nella tabella per calcolare statistiche accurate. Utilizza righe di esempio per generare statistiche delle colonne solo quando i valori approssimativi sono accettabili.

   Scegliere **Genera statistiche** per eseguire l'attività.

------
#### [ AWS CLI ]

Questo comando attiverà l'esecuzione di un'operazione di statistiche delle colonne per la tabella specificata. È necessario fornire il nome del database, il nome della tabella, un ruolo IAM con le autorizzazioni per generare statistiche e, facoltativamente, i nomi delle colonne e una percentuale di dimensione del campione per il calcolo delle statistiche.

```
aws glue start-column-statistics-task-run \ 
    --database-name 'database_name \ 
    --table-name 'table_name' \ 
    --role 'arn:aws:iam::123456789012:role/stats-role' \
    --column-name 'col1','col2'  \
    --sample-size 10.0
```

Questo comando avvierà un'attività per generare statistiche delle colonne per la tabella specificata. 

------

## Aggiornamento delle statistiche delle colonne on demand
<a name="update-column-stats-on-demand"></a>

 Il mantenimento delle statistiche sulle up-to-date colonne è fondamentale per l'ottimizzazione delle query per generare piani di esecuzione efficienti, garantendo migliori prestazioni delle query, riduzione del consumo di risorse e migliori prestazioni complessive del sistema. Questo processo è particolarmente importante dopo modifiche significative dei dati, come blocco di dati o modifiche estese, che possono rendere obsolete le statistiche esistenti. 

È necessario eseguire in modo esplicito l'attività **Genera statistiche** dalla AWS Glue console per aggiornare le statistiche delle colonne. Il Catalogo dati non aggiorna automaticamente le statistiche.

Se non si utilizza AWS Glue la funzionalità di generazione delle statistiche nella console, è possibile aggiornare manualmente le statistiche delle colonne utilizzando l'operazione [UpdateColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_UpdateColumnStatisticsForTable.html)API o. AWS CLI L'esempio seguente mostra come aggiornare le statistiche delle colonne utilizzando AWS CLI.

```
aws glue update-column-statistics-for-table --cli-input-json:

{
    "CatalogId": "111122223333",
    "DatabaseName": "database_name",
    "TableName": "table_name",
    "ColumnStatisticsList": [
        {
            "ColumnName": "col1",
            "ColumnType": "Boolean",
            "AnalyzedTime": "1970-01-01T00:00:00",
            "StatisticsData": {
                "Type": "BOOLEAN",
                "BooleanColumnStatisticsData": {
                    "NumberOfTrues": 5,
                    "NumberOfFalses": 5,
                    "NumberOfNulls": 0
                }
            }
        }
    ]
}
```

# Visualizzazione delle statistiche delle colonne
<a name="view-column-stats"></a>

Dopo aver generato correttamente le statistiche, Data Catalog memorizza queste informazioni per gli ottimizzatori basati sui costi in Amazon Redshift Amazon Athena e in Amazon Redshift per effettuare scelte ottimali durante l'esecuzione delle query. Le statistiche variano in base al tipo di colonna.

------
#### [ Console di gestione AWS ]

**Per visualizzare le statistiche delle colonne per una tabella**
+ Dopo l'esecuzione dell'attività di statistica delle colonne, la scheda **Statistiche delle colonne** della pagina dei **Dettagli della tabella** mostra le statistiche relative alla tabella.   
![\[La schermata mostra le colonne generate dall'esecuzione più recente.\]](http://docs.aws.amazon.com/it_it/glue/latest/dg/images/view-column-stats.png)

  Sono disponibili le seguenti statistiche:
  + Nome colonna: nome della colonna utilizzato per generare statistiche
  + Ultimo aggiornamento: data e ora in cui sono state generate le statistiche
  + Lunghezza media: lunghezza media dei valori nella colonna
  + Valori distinti: il numero totale di valori distinti nella colonna. Eseguiamo una stima del numero di valori distinti in una colonna con un errore relativo del 5%.
  + Valore massimo: il valore più alto nella colonna.
  + Valore minimo: il valore più basso nella colonna. 
  + Lunghezza massima: la lunghezza del valore più alto nella colonna.
  + Valori null: il numero di valori null nella colonna.
  + Valori true: il numero di valori true nella colonna.
  + Valori false: il numero di valori false nella colonna.
  + numFiles: il numero totale di file nella tabella. Questo valore è disponibile nella scheda **Proprietà avanzate**.

------
#### [ AWS CLI ]

L'esempio seguente mostra come recuparare le statistiche delle colonne utilizzando AWS CLI.

```
aws glue get-column-statistics-for-table \
    --database-name database_name \
    --table-name table_name \
    --column-names <column_name>
```

 Puoi anche visualizzare le statistiche delle colonne utilizzando l'operazione API. [GetColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_GetColumnStatisticsForTable.html) 

------

# Visualizzazione dell'attività relativa alle statistiche delle colonne
<a name="view-stats-run"></a>

Dopo aver eseguito un'attività di statistica delle colonne, è possibile esplorare i dettagli dell'esecuzione dell'attività per una tabella utilizzando la AWS Glue console AWS CLI o utilizzando [GetColumnStatisticsTaskRuns](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-GetColumnStatisticsTaskRun)operation.

------
#### [ Console ]

**Per visualizzare i dettagli dell'attività relativa alle statistiche sulle colonne**

1. Sulla AWS Glue console, scegli **Tabelle** in Data Catalog.

1. Seleziona una tabella con le statistiche delle colonne.

1. Nella pagina dei **Dettagli della tabella**, scegli **Statistiche delle colonne**.

1. Scegli **Visualizza esecuzioni**.

   Puoi visualizzare le informazioni su tutte le esecuzioni associate alla tabella specificata.  
![\[La schermata mostra le opzioni disponibili per generare statistiche delle colonna.\]](http://docs.aws.amazon.com/it_it/glue/latest/dg/images/view-column-stats-task-runs.png)

------
#### [ AWS CLI ]

Nell'esempio seguente, sostituisci i valori per `DatabaseName` e `TableName` con i nomi effettivi di database e tabelle.

```
aws glue get-column-statistics-task-runs --input-cli-json file://input.json
{
    "DatabaseName": "database_name",
    "TableName": "table_name"
}
```

------

# Interruzione dell'esecuzione relativa alle statistiche delle colonne
<a name="stop-stats-run"></a>

È possibile interrompere l'esecuzione di un'attività di statistica delle colonne per una tabella utilizzando la AWS Glue console AWS CLI o utilizzando [StopColumnStatisticsTaskRun](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-StopColumnStatisticsTaskRun)operation.

------
#### [ Console ]

**Per interrompere un'attività di statistica delle colonne, esegui:**

1. Sulla AWS Glue console, scegli **Tabelle** in Data Catalog.

1. Seleziona la tabella con la colonna "Attività statistiche". L'operazione è in corso.

1. Nella pagina dei **Dettagli della tabella**, scegli **Statistiche delle colonne**.

1. Scegli **Stop (Arresta)**.

   Se interrompi l'attività prima del completamento dell'esecuzione, le statistiche delle colonne non verranno generate per la tabella.

------
#### [ AWS CLI ]

Nell'esempio seguente, sostituisci i valori per `DatabaseName` e `TableName` con i nomi effettivi di database e tabelle.

```
aws glue stop-column-statistics-task-run --input-cli-json file://input.json
{
    "DatabaseName": "database_name",
    "TableName": "table_name"
}
```

------

# Eliminazione delle statistiche delle colonne
<a name="delete-column-stats"></a>

È possibile eliminare le statistiche delle colonne utilizzando l'operazione [DeleteColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_DeleteColumnStatisticsForTable.html)API o AWS CLI. L'esempio seguente mostra come eliminare le statistiche delle colonne utilizzando AWS Command Line Interface (AWS CLI).

```
aws glue delete-column-statistics-for-table \
    --database-name 'database_name' \
    --table-name 'table_name' \
    --column-name 'column_name'
```

# Considerazioni e limitazioni
<a name="column-stats-notes"></a>

Le seguenti considerazioni e limitazioni si applicano alla generazione di statistiche delle colonne.

**Considerazioni**
+ L'utilizzo del campionamento per generare statistiche riduce il tempo di esecuzione ma può generare statistiche imprecise.
+ Il Catalogo dati non memorizza versioni diverse delle statistiche.
+ È possibile eseguire solo un'attività alla volta per la generazione di statistiche per tabella.
+ Se una tabella è crittografata utilizzando la AWS KMS chiave cliente registrata con Data Catalog, AWS Glue utilizza la stessa chiave per crittografare le statistiche.

**L'attività di Statistiche delle colonne supporta la generazione di statistiche:**
+ Quando il ruolo IAM dispone delle autorizzazioni complete per la tabella (IAM o Lake Formation).
+ Quando il ruolo IAM dispone di autorizzazioni sulla tabella utilizzando la modalità di accesso ibrida di Lake Formation.

**L'attività di Statistiche delle colonne non supporta la generazione di statistiche per:**
+ Tabelle con controllo degli accessi basato su celle di Lake Formation
+ Data lake transazionali: Linux Foundation Delta Lake, Apache Hudi
+ Tabelle in database federati - Hive metastore, unità di condivisione dati Amazon Redshift
+ Colonne, matrici e tipi di dati di struttura nidificati.
+ Tabella condivisa con te da un altro account

# Crittografia del catalogo dati
<a name="catalog-encryption"></a>

 Puoi proteggere i tuoi metadati archiviati in AWS Glue Data Catalog at rest utilizzando chiavi di crittografia gestite da AWS Key Management Service (AWS KMS). Puoi abilitare la crittografia del Catalogo dati per il nuovo Catalogo dati utilizzando **le impostazioni del Catalogo dati**. Puoi abilitare o disabilitare la crittografia per il Catalogo dati esistente in base alle esigenze. Se abilitata, AWS Glue crittografa tutti i nuovi metadati scritti nel catalogo, mentre i metadati esistenti rimangono non crittografati. 

Per informazioni dettagliate sulla crittografia del Catalogo dati, consulta [Crittografia del catalogo dati](encrypt-glue-data-catalog.md).

# Protezione del catalogo dati con Lake Formation
<a name="secure-catalog"></a>

 AWS Lake Formation è un servizio che semplifica la configurazione di un data lake sicuro AWS. Fornisce una posizione centrale per creare e gestire in modo sicuro i data lake definendo autorizzazioni di controllo granulare degli accessi. Lake Formation utilizza il catalogo dati per archiviare e recuperare i metadati relativi al data lake, come le definizioni delle tabelle, le informazioni sullo schema e le impostazioni di controllo dell'accesso ai dati.

È possibile registrare la posizione dei dati Amazon S3 della tabella o del database di metadati con Lake Formation e utilizzarla per definire le autorizzazioni a livello di metadati sulle risorse del catalogo dati. È possibile utilizzare Lake Formation per gestire le autorizzazioni di accesso allo storage sui dati sottostanti archiviati in Amazon S3 per conto di motori analitici integrati.

Per ulteriori informazioni, consulta [What is AWS Lake Formation?](lake-formation/latest/dg/what-is-lake-formation.html) .

# Lavorare con AWS Glue Data Catalog le viste in AWS Glue
<a name="catalog-views"></a>

 È possibile creare e gestire le viste in AWS Glue Data Catalog, comunemente note come AWS Glue Data Catalog visualizzazioni. Queste viste sono utili perché supportano più motori di query SQL e consentono di accedere alla stessa vista su AWS servizi diversi, ad esempio Amazon Athena Amazon Redshift, e AWS Glue. È possibile utilizzare le viste basate su Apache Iceberg, Apache Hudi e Delta Lake. 

 Creando una vista nel Data Catalog, puoi utilizzare le concessioni di risorse e i controlli di accesso basati su tag AWS Lake Formation per concedere l'accesso ad essa. Utilizzando questo metodo di controllo degli accessi, non è necessario configurare un accesso aggiuntivo alle tabelle a cui si fa riferimento durante la creazione della vista. Questo metodo di concessione delle autorizzazioni è chiamato semantica, mentre queste viste sono chiamate viste del definitore. Per ulteriori informazioni sul controllo degli accessi in AWS Lake Formation, consulta [Concessione e revoca delle autorizzazioni sulle risorse di Data Catalog](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-catalog-permissions.html) nella Guida per gli sviluppatori. AWS Lake Formation 

 Le viste del Catalogo dati sono utili per i seguenti casi d'uso: 
+  **Controllo granulare degli accessi**: è possibile creare una vista che limiti l'accesso ai dati in base alle autorizzazioni necessarie per l'utente. Ad esempio, puoi utilizzare le viste nel Catalogo dati per impedire ai dipendenti che non lavorano nel reparto delle risorse umane di visualizzare le informazioni di identificazione personale (PII). 
+  **Definizione completa della vista**: applicando determinati filtri alla vista di Catalogo dati, è possibile assicurare che i record di dati disponibili siano sempre completi. 
+  **Sicurezza avanzata**: la definizione delle query utilizzata per creare la vista deve essere completa, in modo che le viste di Catalogo dati siano meno suscettibili all'intervento di soggetti malintenzionati nei comandi SQL. 
+  **Condivisione semplice dei dati**: condividi i dati con altri AWS account senza spostarli, utilizzando la condivisione dei dati tra account in. AWS Lake Formation

## Creazione di una vista di Catalogo Dati
<a name="catalog-creating-view"></a>

 Puoi creare viste del catalogo dati utilizzando AWS CLI gli script AWS Glue ETL utilizzando Spark SQL. La sintassi per la creazione di una vista di Catalogo dati include la specificazione del tipo di vista come `MULTI DIALECT` e del predicato `SECURITY` come `DEFINER`, che indica una vista del definitore. 

 Istruzione SQL di esempio per creare una vista nel Catalogo dati: 

```
CREATE PROTECTED MULTI DIALECT VIEW database_name.catalog_view SECURITY DEFINER
AS SELECT order_date, sum(totalprice) AS price
FROM source_table
GROUP BY order_date;
```

 Dopo aver creato una vista del catalogo dati, puoi utilizzare un ruolo IAM con l'autorizzazione AWS Lake Formation `SELECT` sulla vista per interrogarla da servizi come Amazon Athena, Amazon Redshift o lavori ETL. AWS Glue Non è necessario concedere l'accesso alle tabelle sottostanti a cui si fa riferimento nella vista. 

 Per ulteriori informazioni sulla creazione e la configurazione delle viste del catalogo dati, consulta [Building AWS Glue Data Catalog views](https://docs.aws.amazon.com/lake-formation/latest/dg/working-with-views.html) nella Developer Guide. AWS Lake Formation 

## Operazioni supportate per le viste
<a name="catalog-supported-view-operations"></a>

 I seguenti frammenti di comandi mostrano vari modi di lavorare con le viste nel Catalogo dati: 

 **CREA VISUALIZZAZIONE** 

 Crea una vista data-catalog. Di seguito è riportato un esempio che mostra la creazione di una vista da una tabella esistente: 

```
CREATE PROTECTED MULTI DIALECT VIEW catalog_view 
SECURITY DEFINER AS SELECT * FROM my_catalog.my_database.source_table
```

 **ALTER VIEW** 

 Sintassi disponibile: 

```
ALTER VIEW view_name [FORCE] ADD DIALECT AS query
ALTER VIEW view_name [FORCE] UPDATE DIALECT AS query
ALTER VIEW view_name DROP DIALECT
```

 È possibile utilizzare l'opzione `FORCE ADD DIALECT` per forzare l'aggiornamento dello schema e degli oggetti secondari secondo il nuovo dialetto del motore. Tieni presente che questa operazione può causare errori di query se non utilizzi anche `FORCE` per aggiornare altri dialetti del motore. Di seguito è riportato un esempio: 

```
ALTER VIEW catalog_view FORCE ADD DIALECTAS
SELECT order_date, sum(totalprice) AS priceFROM source_tableGROUP BY orderdate;
```

 Quello che segue è un esempio di come modificare una vista per aggiornare il dialetto: 

```
ALTER VIEW catalog_view UPDATE DIALECT AS
SELECT count(*) FROM my_catalog.my_database.source_table;
```

 **DESCRIVI LA VISTA** 

 Sintassi disponibile per descrivere una vista: 

 `SHOW COLUMNS {FROM|IN} view_name [{FROM|IN} database_name]`— Se l'utente dispone dei requisiti AWS Glue e AWS Lake Formation delle autorizzazioni per descrivere la vista, può elencare le colonne. Di seguito sono riportati un paio di comandi di esempio per la vista delle colonne: 

```
SHOW COLUMNS FROM my_database.source_table;    
SHOW COLUMNS IN my_database.source_table;
```

 `DESCRIBE view_name`— Se l'utente dispone dei requisiti AWS Glue e AWS Lake Formation delle autorizzazioni per descrivere la vista, può elencare le colonne della vista insieme ai relativi metadati. 

 **ELIMINA VISUALIZZAZIONE** 

 Sintassi disponibile: 

```
DROP VIEW [ IF EXISTS ] view_name
```

 L'esempio seguente mostra un'istruzione `DROP` che verifica l'esistenza di una vista prima di eliminarla: 

```
DROP VIEW IF EXISTS catalog_view;
```

 `SHOW CREATE VIEW view_name`: mostra l'istruzione SQL che crea la vista specificata. Di seguito è riportato un esempio che mostra la creazione di una vista data-catalog: 

```
SHOW CREATE TABLE my_database.catalog_view;CREATE PROTECTED MULTI DIALECT VIEW my_catalog.my_database.catalog_view (
  net_profit,
  customer_id,
  item_id,
  sold_date)
TBLPROPERTIES (
  'transient_lastDdlTime' = '1736267222')
SECURITY DEFINER AS SELECT * FROM
my_database.store_sales_partitioned_lf WHERE customer_id IN (SELECT customer_id from source_table limit 10)
```

 **MOSTRA VISUALIZZAZIONI** 

 Elenca tutte le viste del catalogo, ad esempio le viste normali, le viste multi-dialettali (MDV) e le MDV senza il dialetto Spark. La sintassi disponibile è la seguente: 

```
SHOW VIEWS [{ FROM | IN } database_name] [LIKE regex_pattern]:
```

 Il seguente è un comando di esempio per mostrare le viste: 

```
SHOW VIEWS IN marketing_analytics LIKE 'catalog_view*';
```

 Per ulteriori informazioni sulla creazione e la configurazione delle viste del catalogo dati, consulta [Building AWS Glue Data Catalog views](https://docs.aws.amazon.com/lake-formation/latest/dg/working-with-views.html) nella Developer Guide. AWS Lake Formation 

## Interrogazione di una vista di Catalogo Dati
<a name="catalog-view-query"></a>

 Dopo aver creato una vista in Catalogo dati, è possibile eseguirvi una query. Il ruolo IAM configurato nei tuoi AWS Glue job deve avere l'autorizzazione Lake Formation **SELECT** nella vista Data Catalog. Non è necessario concedere l'accesso alle tabelle sottostanti a cui si fa riferimento nella vista. 

 Dopo aver impostato tutto, è possibile eseguire query sulla vista. Ad esempio, è possibile eseguire la query seguente per accedere a una vista. 

```
SELECT * from my_database.catalog_view LIMIT 10;
```

## Limitazioni
<a name="catalog-view-limitations"></a>

 Quando si utilizzano le viste di Catalogo dati, considerare le seguenti limitazioni. 
+  Puoi creare viste Data Catalog solo con AWS Glue 5.0 e versioni successive. 
+  Il definitore della vista di Catalogo dati deve avere l'accesso `SELECT` alle tabelle di base sottostanti a cui la vista accede. La creazione della vista di Catalogo dati non riesce se una tabella base specifica ha dei filtri Lake Formation imposti sul ruolo del definitore. 
+  Le tabelle di base non devono avere l'autorizzazione `IAMAllowedPrincipals` per il data lake AWS Lake Formation. Se presente, si verifica l'errore **Multi Dialect views può fare riferimento solo a tabelle senza le autorizzazioni IAMAllowed Principal.** 
+  La posizione Amazon S3 della tabella deve essere registrata come posizione di AWS Lake Formation data lake. Se la tabella non è registrata, si verifica l'errore `Multi Dialect views may only reference AWS Lake Formation managed tables`. Per informazioni su come registrare le sedi Amazon S3 in AWS Lake Formation, consulta [Registrazione di una sede Amazon S3](https://docs.aws.amazon.com/lake-formation/latest/dg/register-data-lake.html) nella Developer Guide. AWS Lake Formation 
+  Puoi creare solo viste `PROTECTED` in Catalogo dati. Le viste `UNPROTECTED` non sono supportate. 
+  Non puoi fare riferimento alle tabelle di un altro AWS account in una definizione di visualizzazione del catalogo dati. Inoltre, non puoi fare riferimento a una tabella nello stesso account che si trova in una Regione separata. 
+  Per condividere i dati in un account o una Regione, tutta la vista deve essere condivisa in account e Regioni diverse utilizzando i link alle risorse AWS Lake Formation . 
+  Le funzioni definite dall'utente (UDFs) non sono supportate. 
+  Le viste di Catalogo Dati non possono fare riferimento ad altre viste. 