Aller au contenu principal

Purger les valeurs de fonctionnalités pour les entités

info

Bêta

Cette fonctionnalité est en version bêta. Pour l'utiliser, un administrateur du workspace doit activer Feature Views Advanced Functionality à partir de la page Previews . Consultez Gérer les aperçus Databricks.

Utilisez une purge d'entité de fonctionnalité pour supprimer les valeurs de fonctionnalités compute d'une ou de plusieurs vues de fonctionnalités pour les entités sélectionnées. Une purge supprime les valeurs correspondantes des tables de matérialisation hors ligne et en ligne applicables dans Unity Catalog et Lakebase. Exécutez la purge dans le workspace où les matérialisations que vous souhaitez purger ont été créées. Cela ne supprime pas les définitions de vues de fonctionnalités, les matérialisations ni les données sources. Les matérialisations créées dans d'autres Workspace ne sont pas affectées.

Par exemple, vous pouvez purger les valeurs de features matérialisées d’un client après avoir reçu une demande de suppression de données.

attention

Avant de soumettre une purge, vous devez supprimer les entités sélectionnées des données source de la feature et empêcher la source de recevoir de nouvelles données pour ces entités. Une purge ne modifie pas la source et n'arrête pas la matérialisation planifiée et continue. Si des données source correspondantes subsistent ou arrivent ultérieurement, une matérialisation recrée les valeurs.

Exigences​

  • Les fonctionnalités doivent être des Feature Views enregistrées. Chaque Feature View doit comporter au moins une matérialisation créée dans le workspace où vous soumettez la purge. Pour purger les matérialisations créées dans différents Workspace, soumettez une requête distincte dans chaque Workspace. RequestSource, FeatureViewSource et d’autres fonctionnalités non matérialisables ne sont pas prises en charge.
  • Spécifiez entre 1 et 500 caractéristiques uniques par leurs noms Unity Catalog en trois parties.
  • Aucune fonctionnalité ne peut avoir d'opération de purge ou de remplissage rétrospectif active en cours lorsque vous soumettez la requête.
  • La table des entités doit être une table Delta Unity Catalog comportant au moins une colonne. Consultez Préparer la table des entités.
  • Utilisez le client Databricks Feature Data Engineering version 0.18.0 ou supérieure.

Autorisations​

Pour la production, Databricks recommande d'exécuter les purges en tant que même service principal qui crée et matérialise les Feature Views. Ce principal dispose normalement déjà des privilèges requis. Si les privilèges ont changé, veuillez vérifier les exigences suivantes avant de soumettre une purge.

Pour soumettre et exécuter une purge, vous devez disposer des privilèges suivants :

  • MANAGE sur chaque vue de fonctionnalité de la demande.
  • SELECT sur la table des entités.
  • SELECT et MODIFY sur chaque table hors ligne, à agrégation partielle et en ligne mise à jour par la purge.
  • Accès à l'instance ou au projet Lakebase utilisé par la boutique en ligne, y compris l'autorisation de lire et de mettre à jour ses tables en ligne. Voir Accorder les autorisations du projet.
  • Pour un Stream de registre de schémas sans schéma intégré, l’autorisation de lire ses métadonnées de table d’ingestion, telles que SELECT ou READ_METADATA le cas échéant. La lecture de validation de purge lit le schéma pour résoudre les types de clés d’entité, et non les lignes de la table d’ingestion.
  • USE CATALOG et USE SCHEMA sur le catalogue parent et le schéma de chaque ressource listée ci-dessus.

Pour obtenir des descriptions complètes des privilèges Unity Catalog, consultez la référence des privilèges Unity Catalog. Pour les autorisations de vue de fonctionnalité, consultez Matérialiser les vues de fonctionnalité.

Préparer la table des entités​

Créez une table Delta qui identifie les entités à purger. Chaque colonne doit correspondre à une clé d'entité de chaque vue de fonctionnalités de la requête. Les noms de colonnes et les types de données doivent correspondre aux clés d'entité de la vue de fonctionnalités. N'incluez pas de colonnes sans clé.

La table peut contenir un sous-ensemble des clés d’entité qui constitue un préfixe de tête de la liste des entités de la vue de fonctionnalités. La suppression correspond à toutes les entités associées aux valeurs de clé fournies, indépendamment des clés restantes. Les valeurs de clé nulles sont prises en charge.

important

Les colonnes de la table des entités doivent contenir toutes les clés d’entité ou un préfixe initial correspondant à l’ordre de la liste des entités de la Feature View. L’ordre des colonnes dans la table des entités n’importe pas.

Pour les tables en ligne existantes, l’ordre des clés primaires peut différer de l’ordre de la liste des entités de la vue de fonctionnalités. Dans ce cas, la validation utilise plutôt le préfixe de clé primaire de la table en ligne et indique l’ordre requis si une demande de clé partielle ne correspond pas.

Les Feature Views demandées peuvent avoir des ensembles de clés d’entité différents, à condition que les colonnes de la table des entités soient un sous-ensemble de l’ensemble de clés d’entité de chaque Feature View.

Le job de purge résout une version de table Delta et utilise cet instantané pour chaque cible. Ne modifiez pas la table des entités après avoir soumis la requête. Pour purger les entités ajoutées après que le job a résolu la version, soumettez une autre requête.

Soumettre et surveiller une purge​

Appeler FeatureEngineeringClient.purge_feature_entities. La méthode renvoie une opération de longue durée sans attendre la fin de la purge.

Python
from databricks.feature_engineering import FeatureEngineeringClient

fe = FeatureEngineeringClient()

operation = fe.purge_feature_entities(
features=[
"main.feature_store.customer_purchase_count_30d",
"main.feature_store.customer_purchase_total_30d",
],
entities_table="main.feature_store.entities_to_purge",
)

print(f"Purge operation: {operation.name()}")

# wait() polls until the operation finishes.
response = operation.wait()
print(f"Purge state: {response.state}")

for result in response.results or []:
print(
result.feature,
result.offline_state,
result.online_state,
result.error,
)

Utilisez operation.done() pour refresh l'opération et effectuer une vérification de l'état sans attendre la fin. Utilisez ensuite operation.metadata() pour inspecter son état PENDING ou RUNNING.

La réponse complétée contient un résultat par Feature View :

  • offline_state génère un rapport sur le résultat des matérialisations hors ligne.
  • online_state indique le résultat combiné pour les matérialisations en ligne.
  • Un résultat est SUCCEEDED, FAILED ou NOT_APPLICABLE.
  • Un résultat est NOT_APPLICABLE lorsque la vue de fonctionnalités ne dispose d’aucun cibles de matérialisation pour ce type de magasin. Par exemple, une vue de fonctionnalités réservée en ligne possède un résultat hors ligne de NOT_APPLICABLE, et une vue de fonctionnalités sans matérialisation en ligne possède un résultat en ligne de NOT_APPLICABLE.
  • error contient l’erreur spécifique à la vue des caractéristiques (Feature View) lorsqu’une cible applicable échoue.

Vérifiez chaque résultat par fonctionnalité. Une opération peut se terminer avec des résultats différents selon les Feature Views ou les types de stockage.

Consultez également response.state et response.error pour identifier une défaillance au niveau d'une opération.

Si une purge échoue partiellement, inspectez les erreurs par fonctionnalité et corrigez les problèmes d'accès ou de configuration. Soumettez ensuite une nouvelle demande de purge avec un nouveau request_id uniquement pour les vues de fonctionnalités ayant échoué. Conservez la propreté des données source avant de recommencer. Si les échecs persistent, contactez l’assistance Databricks.

Réessayer une requête en toute sécurité​

Définissez request_id sur une valeur UUID4 et conservez-la jusqu’à ce que la requête soit acceptée. Si une défaillance du réseau ou du client rend le résultat de la soumission ambigu, veuillez recommencer la même requête avec le même identifiant. Databricks renvoie l’opération existante au lieu de démarrer une seconde purge.

L'ensemble de fonctionnalités et la table des entités doivent correspondre à la requête d'origine. La réutilisation d'un ID avec des parameter de requête différents est rejetée. Le client génère un ID si vous en omettez un, mais un ID explicite est requis pour rendre les nouvelles tentatives au niveau de l'application idempotentes. Cette option est également utile lorsqu'une couche d'orchestration externe peut renouveler l'opération.

Attribut de purge des coûts de compute​

Les exécutions de purge utilisent le compute serverless. Avec la version du client Databricks Data Engineering 0,18,1 ou supérieure, utilisez tags ou budget_policy_id pour imputer le coût du compute :

Python
operation = fe.purge_feature_entities(
features=["main.feature_store.customer_purchase_count_30d"],
entities_table="main.feature_store.entities_to_purge",
tags={"team": "recommendations", "workflow": "privacy-deletion"},
budget_policy_id="00000000-0000-0000-0000-000000000000",
)

The tags apply to purge compute, not to the Unity Catalog Feature Ressources. Une requête prend en charge au maximum 25 tags.