

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à.

# Eliminazione di record da gruppi di funzionalità
<a name="feature-store-delete-records"></a>

Puoi utilizzare l'API Amazon SageMaker Feature Store per eliminare i record dai tuoi gruppi di funzionalità. Un gruppo di funzionalità è un oggetto che contiene i dati di machine learning (ML), in cui le colonne dei dati sono descritte per funzionalità e i dati sono contenuti in record. Un record contiene valori per le funzionalità associate a un identificativo di record specifico. 

Esistono due configurazioni di archiviazione per i tuoi gruppi di funzionalità: archivio online e archivio offline. L’archivio online registra solo l'ora dell'evento più recente e viene in genere utilizzato per la ricerca in tempo reale per l'inferenza ML. L'archivio offline conserva tutti i record, funge da database storico e viene in genere utilizzato per l'esplorazione delle funzionalità, l’addestramento ML e l'inferenza in batch.

Per ulteriori informazioni sui concetti del Feature Store, consulta [Diagrammi di inserimento](feature-store-concepts.md#feature-store-concepts-ingestion).

Esistono due modi per eliminare i record dai gruppi di funzionalità: il comportamento è diverso a seconda della configurazione di archiviazione. Nei seguenti argomenti viene descritto come eliminare automaticamente e definitivamente i record dagli archivi online e offline tramite alcuni esempi.

**Topics**
+ [Eliminazione di record dall'archivio online](#feature-store-delete-records-online-store)
+ [Eliminazione di record dall'archivio offline](#feature-store-delete-records-offline-store)

## Eliminazione di record dall'archivio online
<a name="feature-store-delete-records-online-store"></a>

È possibile eliminare automaticamente o indirettamente un record dall'archivio online con l’API `DeleteRecord` utilizzando il parametro di richiesta `DeletionMode` per specificare `SoftDelete` (impostazione predefinita) o `HardDelete`. Per ulteriori informazioni sull'`DeleteRecord`API, [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_feature_store_DeleteRecord.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_feature_store_DeleteRecord.html)consulta Amazon SageMaker API Reference.

Con l'archivio online:
+ Quando si esegue la cancellazione graduale (impostazione predefinita), il record non è più recuperabile da GetRecord o BatchGetRecord e i valori della colonna feature sono impostati su`null`, ad eccezione dei valori `RecordIdentifer` e della `EventTime` funzionalità. 
+ Quando si esegue l'eliminazione definitiva, il record viene completamente rimosso dall'archivio online. 

In entrambi i casi, Feature Store aggiunge il marcatore del record eliminato a `OfflineStore`. Il marcatore del record eliminato è un record con `RecordIdentifer` uguale all'originale, ma con il valore `is_deleted` impostato su `True`, `EventTime` impostato sull'input di eliminazione `EventTime` e altri valori di funzionalità impostati su `null`.

Si noti che il valore `EventTime` specificato in `DeleteRecord` deve essere impostato dopo `EventTime` per il record esistente in `OnlineStore` per lo stesso `RecordIdentifer`. In caso contrario, l'eliminazione non avviene:
+ Per `SoftDelete`, il record esistente (non eliminato) rimane in `OnlineStore`, sebbene il marcatore del record di eliminazione sia ancora scritto in `OfflineStore`. 
+ `HardDelete` restituisce `EventTime`: `400 ValidationException` per indicare che l'operazione di eliminazione non è riuscita. Nessun marcatore di eliminazione del record viene scritto su `OfflineStore`.

I seguenti esempi utilizzano l'operazione [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-featurestore-runtime/client/delete_record.html#delete-record](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-featurestore-runtime/client/delete_record.html#delete-record) SDK per Python (boto3) per eliminare un record da un gruppo di funzionalità. Per eliminare un record da un gruppo di funzionalità, avrai bisogno dei seguenti elementi:
+ Nome del gruppo di funzionalità (`feature-group-name`)
+ Valore di identificazione del record come stringa (`record-identifier-value`)
+ Ora dell'evento di eliminazione (`deletion-event-time`)

  L'ora dell'evento di eliminazione deve essere successiva all'ora dell'evento del record che si desidera eliminare.

### Esempio di eliminazione temporanea in un archivio online
<a name="feature-store-delete-records-online-store-soft-delete"></a>

Per l’eliminazione temporanea è necessario utilizzare l'API `DeleteRecord` e utilizzare `DeletionMode` per impostazione predefinita o configurare `DeletionMode` su `SoftDelete`. 

```
import boto3
client = boto3.client('sagemaker-featurestore-runtime')

client.delete_record(
    FeatureGroupName='feature-group-name',
    RecordIdentifierValueAsString='record-identifier-value',
    EventTime='deletion-event-time',
    TargetStores=[
        'OnlineStore',
    ],
    DeletionMode='SoftDelete'
)
```

### Esempio di eliminazione definitiva da un archivio online
<a name="feature-store-delete-records-online-store-hard-delete"></a>

Per l'eliminazione definitiva è necessario utilizzare l'API `DeleteRecord` e impostare `DeletionMode` su `HardDelete`.

```
import boto3
client = boto3.client('sagemaker-featurestore-runtime')

client.delete_record(
    FeatureGroupName='feature-group-name',
    RecordIdentifierValueAsString='record-identifier-value',
    EventTime='deletion-event-timestamp',
    TargetStores=[
        'OnlineStore',
    ],
    DeletionMode='HardDelete'
)
```

## Eliminazione di record dall'archivio offline
<a name="feature-store-delete-records-offline-store"></a>

Con Amazon SageMaker Feature Store puoi eliminare in modo semplice e automatico un record dal formato di tabella `OfflineStore` Iceberg. Con il formato di tabella Iceberg `OfflineStore`: 
+ Quando si elimina automaticamente un record, l'ultima versione del file di tabella Iceberg non conterrà il record, ma le versioni precedenti conterranno comunque il record e sarà possibile accedervi utilizzando Time Travel. Per informazioni su Time Travel, consulta [Interrogazione dei dati di tabella Iceberg ed esecuzione di Time Travel](https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg-table-data.html) nella guida per l'utente di Athena.
+ Quando si elimina definitivamente un record, si rimuovono le versioni precedenti della tabella Iceberg che contengono il record. In questo caso è necessario specificare quali versioni della tabella Iceberg si desidera eliminare.

### Ottenimento del nome della tabella Iceberg
<a name="feature-store-delete-records-offline-store-get-iceberg-table-name"></a>

Per l'eliminazione temporanea e definitiva dalla tabella Iceberg `OfflineStore`, è necessario ottenere il nome della tabella Iceberg `iceberg-table-name`. Le seguenti istruzioni presuppongono che tu abbia già utilizzato Feature Store per creare un gruppo di funzionalità utilizzando la configurazione di archiviazione dell'archivio offline utilizzando il formato di tabella Iceberg con `DisableGlueTableCreation = False` (impostazione predefinita). Per ulteriori informazioni sulla creazione di gruppi di funzionalità, consulta [Inizia a usare Amazon SageMaker Feature Store](feature-store-getting-started.md).

Per ottenere `iceberg-table-name`, usa l’API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeFeatureGroup.html.title](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeFeatureGroup.html.title) per ottenere [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataCatalogConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataCatalogConfig.html). Contiene i metadati della tabella Glue che funge da catalogo dati per `OfflineStore`. `TableName` in `DataCatalogConfig` è `iceberg-table-name`.

### Esempio di eliminazione temporanea e definitiva dell'archivio offline di Amazon Athena
<a name="feature-store-delete-records-offline-store-athena"></a>

Le seguenti istruzioni utilizzano Amazon Athena per l'eliminazione temporanea e definitiva di un record dalla tabella Iceberg `OfflineStore`. Ciò presuppone che il record che intendi eliminare in `OfflineStore` sia un marcatore del record eliminato. Per informazioni sul marcatore del record eliminato in `OfflineStore`, consulta [Eliminazione di record dall'archivio online](#feature-store-delete-records-online-store). 

1. Ottieni il nome della tabella Iceberg (`iceberg-table-name`). Per informazioni su come ottenere il nome della tabella Iceberg, consulta [Ottenimento del nome della tabella Iceberg](#feature-store-delete-records-offline-store-get-iceberg-table-name). 

1. Esegui il comando `DELETE` per eliminare gradualmente i record presenti in `OfflineStore`, in modo che l'ultima versione (o istantanea) della tabella Iceberg non contenga i record. L'esempio seguente elimina i record in cui `is_deleted` è `'True'` e le precedenti versioni dell’ora dell’evento di tali record. È possibile aggiungere condizioni aggiuntive basate su altre funzionalità per limitare l'eliminazione. Per ulteriori informazioni sull'utilizzo di `DELETE` con Athena, consulta `DELETE`nella guida per l'utente di Athena.

   ```
   DELETE FROM iceberg-table-name WHERE record-id-feature-name IS IN ( SELECT record-id-feature-name FROM iceberg-table-name WHERE is_deleted = 'True')
   ```

   I record eliminati temporaneamente sono ancora visibili nelle versioni precedenti dei file eseguendo Time Travel. Per informazioni sull’esecuzione di Time Travel, consulta [Interrogazione dei dati di tabella Iceberg ed esecuzione di Time Travel](https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg-table-data.html) nella guida per l'utente di Athena.

1. Rimuovi il record dalle versioni precedenti delle tabelle Iceberg per eliminarlo definitivamente da `OfflineStore`;

   1. Il comando `OPTIMIZE` riscrive i file di dati in un layout ottimizzato in base alle dimensioni e al numero di file di eliminazione associati. Per ulteriori informazioni sull'ottimizzazione delle tabelle Iceberg e sulla sintassi, consulta [Ottimizzazione delle tabelle Iceberg](https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg-data-optimization.html) nella guida per l'utente di Athena. 

      ```
      OPTIMIZE iceberg-table-name REWRITE DATA USING BIN_PACK
      ```

   1. (Operazione facoltativa: deve essere eseguita solo una volta) Esegui il comando `ALTER TABLE` per modificare i valori del set di tabelle Iceberg e scegli quando le versioni precedenti dei file devono essere eliminate definitivamente in base alle tue specifiche. L’operazione può essere svolta assegnando valori alle proprietà `vacuum_min_snapshots_to_keep` e `vacuum_max_snapshot_age_seconds`. Per ulteriori informazioni sulla modifica delle proprietà del set di tabelle Iceberg, consulta [MODIFICA DELLE PROPRIETÀ DEL SET DI TABELLE](https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg-managing-tables.html#querying-iceberg-alter-table-set-properties) nella guida per l'utente di Athena. Per ulteriori informazioni sulle coppie chiave-valore delle proprietà della tabella, consulta [Proprietà delle tabelle](https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg-creating-tables.html#querying-iceberg-table-properties) nella guida per l'utente di Athena. 

      ```
      ALTER TABLE iceberg-table-name SET TBLPROPERTIES (
        'vacuum_min_snapshots_to_keep'='your-specified-value',
        'vacuum_max_snapshot_age_seconds'='your-specified-value'
      )
      ```

   1. Esegui il comando `VACUUM` per rimuovere i file di dati non più necessari per le tue tabelle Iceberg, a cui non fa riferimento la versione corrente. Il comando `VACUUM` dovrebbe essere eseguito dopo che il record eliminato non è più referenziato nell'istantanea corrente. Ad esempio, `vacuum_max_snapshot_age_seconds` dopo l'eliminazione. Per ulteriori informazioni su `VACUUM` con Athena e sulla sintassi, consulta [https://docs.aws.amazon.com/athena/latest/ug/vacuum-statement.html](https://docs.aws.amazon.com/athena/latest/ug/vacuum-statement.html).

      ```
      VACUUM iceberg-table-name
      ```

### Esempio di eliminazione temporanea e definitiva dell'archivio offline di Apache Spark
<a name="feature-store-delete-records-offline-store-spark"></a>

Per eliminare temporaneamente e, in seguito, definitivamente un record dalla tabella Iceberg `OfflineStore` utilizzando Apache Spark, puoi seguire le stesse istruzioni riportate in [Esempio di eliminazione temporanea e definitiva dell'archivio offline di Amazon Athena](#feature-store-delete-records-offline-store-athena) di cui sopra, ma utilizzando le procedure Spark. Per un elenco completo delle procedure, consulta [Procedure Spark](https://iceberg.apache.org/docs/1.3.1/spark-procedures/) nella documentazione di Apache Iceberg. 
+ Quando si esegue un'eliminazione temporanea da `OfflineStore`: anziché utilizzare il comando `DELETE` in Athena, usa il comando [https://iceberg.apache.org/docs/latest/spark-writes/#delete-from](https://iceberg.apache.org/docs/latest/spark-writes/#delete-from) in Apache Spark.
+ Rimuovi il record dalle versioni precedenti delle tabelle Iceberg per eliminarlo definitivamente da `OfflineStore`:
  + Quando modifichi la configurazione della tabella Iceberg: invece di usare il comando `ALTER TABLE` di Athena, usa la procedura [https://iceberg.apache.org/docs/1.3.1/spark-procedures/#expire_snapshots](https://iceberg.apache.org/docs/1.3.1/spark-procedures/#expire_snapshots).
  + Per rimuovere i file di dati non più necessari dalle tabelle Iceberg: invece di usare il comando `VACUUM` in Athena, attieniti alla procedura [https://iceberg.apache.org/docs/1.3.1/spark-procedures/#remove_orphan_files](https://iceberg.apache.org/docs/1.3.1/spark-procedures/#remove_orphan_files).