Pular para o conteúdo principal

Purgar valores de recursos para entidades

info

Beta

Esse recurso está em Beta. Para usá-lo, um administrador do workspace deve ativar a Funcionalidade avançada de visualizações de recursos na página Pré-visualizações . Consulte Gerenciar prévias do Databricks.

Use uma limpeza de entidade de recurso para remover os valores de recursos computados de uma ou mais Feature Views para entidades selecionadas. Uma limpeza remove valores correspondentes das tabelas de materialização online e offline aplicáveis no Unity Catalog e no Lakebase. Realize a execução da limpeza no Workspace em que as materializações que você deseja limpar foram criadas. Ele não exclui as definições de recurso View, as materializações ou os dados de origem. As materializações criadas em outros Workspace não são afetadas.

Por exemplo, você pode limpar os valores de recurso materializados de um cliente após receber uma solicitação de exclusão de dados.

atenção

Before you submit a purge, you must remove the selected entities from the recurso source data and prevent the source from receiving new data for those entities. A purge does not change the source or stop scheduled and continuous materialization. If matching source data remains or arrives later, a materialization recreates the values.

Requisitos​

  • Os recursos devem ser Feature Views registrados. Cada recurso view deve ter pelo menos uma materialização criada no Workspace onde você envia a purga. Para purgar materializações criadas em diferentes Workspace, envie uma solicitação separada em cada Workspace. RequestSource, FeatureViewSource e outros recursos não materializáveis não são compatíveis.
  • Especifique de 1 a 500 recursos exclusivos por seus nomes de três partes do Unity Catalog.
  • Nenhum recurso pode ter uma operação ativa de limpeza ou preenchimento retroativo em andamento quando você enviar a solicitação.
  • A tabela entities deve ser uma tabela Delta do Unity Catalog com pelo menos uma coluna. Consulte Prepare the entities table.
  • Use o cliente de recurso engenharia do Databricks versão 0.18.0 e acima.

Permissões​

Para produção, o Databricks recomenda executar limpezas como o mesmo Service Principal que cria e materializa as recursos views. Normalmente, esse principal já tem os privilégios necessários. Se os privilégios tiverem mudado, verifique os seguintes requisitos antes de enviar uma limpeza.

Para enviar e concluir uma purga, você deve ter os seguintes privilégios:

  • MANAGE em cada recurso View na solicitação.
  • SELECT na tabela de entidades.
  • SELECT and MODIFY on each offline, partial-aggregate, and online table that the purge updates.
  • Acesso à instância ou ao projeto do Lakebase usado pelo armazenamento online, incluindo permissão para ler e atualizar suas tabelas online. Consulte Conceder permissões de projeto.
  • Para uma transmissão de registro de esquema sem um esquema embutido, a permissão para ler seus metadados de tabela de ingestão, como SELECT ou READ_METADATA quando disponíveis. A leitura de validação de purga lê o esquema para resolver os tipos de key de entidade, e não as linhas da tabela de ingestão.
  • USE CATALOG e USE SCHEMA no catálogo pai e no esquema de cada recurso listado acima.

Para obter descrições completas dos privilégios do Unity Catalog, consulte Referência de privilégios do Unity Catalog. Para obter permissões de recurso View, consulte Materialize Feature Views.

Preparar a tabela de entidades​

Crie uma tabela Delta que identifique as entidades a serem purgadas. Cada coluna deve corresponder a uma key de entidade de cada recurso View na solicitação. Os nomes de coluna e os tipos de dados devem corresponder às chaves de entidade da recurso View. Não inclua colunas não-key.

The table can contain a subset of the entity keys that is a leading prefix of the Recurso View's entities list. O expurgo corresponde a todas as entidades com os valores de key fornecidos, independentemente das keys restantes. Valores de key nulos são suportados.

importante

As colunas da tabela de entidades devem conter todas as keys de entidade ou um prefixo inicial que corresponda à ordem da lista de entidades do recurso View. A ordem das colunas na tabela de entidades não importa.

For existing online tables, the primary-key order can differ from the recurso View's entities list order. In that case, validation uses the online table's primary-key prefix instead and reports the required order if a partial-key request does not match.

As Recursos views solicitadas podem ter conjuntos de keys de entidade diferentes, desde que as colunas da tabela de entidades sejam um subconjunto do conjunto de keys de entidade de cada Recurso view.

O job de limpeza resolve uma versão da tabela Delta e usa esse snapshot para cada destino. Não modifique a tabela de entidades após enviar a solicitação. Para expurgar entidades adicionadas após o job resolver a versão, envie outra solicitação.

Enviar e monitorar uma purga​

Chame FeatureEngineeringClient.purge_feature_entities. O método retorna uma operação de longa duração sem aguardar o término da limpeza.

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,
)

Use operation.done() para fazer o refresh da operação e realizar uma verificação de status sem aguardar a conclusão. Em seguida, use operation.metadata() para inspecionar o estado PENDING ou RUNNING.

A resposta concluída contém um resultado por recurso view:

  • offline_state relata o resultado para materializações offline.
  • online_state relata o resultado combinado para materializações online.
  • Um resultado é SUCCEEDED, FAILED ou NOT_APPLICABLE.
  • Um resultado é NOT_APPLICABLE quando o recurso View não tem um destino de materialização para esse tipo de armazenamento. For example, an online-only recurso View has an offline outcome of NOT_APPLICABLE, and a recurso View without an online materialization has an online outcome of NOT_APPLICABLE.
  • error contém o erro específico da recurso View quando um destino aplicável falha.

Verifique cada resultado por recurso. Uma operação pode terminar com resultados diferentes para diferentes recurso views ou tipos de armazenamento.

Verifique também response.state e response.error para ver se há falha no nível da operação.

Se uma limpeza falhar parcialmente, inspecione os erros por recurso e corrija qualquer problema de acesso ou configuração. Em seguida, envie uma nova solicitação de limpeza com um novo request_id apenas para as recursos view com resultados com falha. Mantenha os dados de origem limpos antes de tentar novamente. Se as falhas persistirem, entre em contato com o suporte da Databricks.

Tentar uma solicitação com segurança​

Defina request_id como um valor UUID4 e retenha-o até que a solicitação seja aceita. Se uma falha de rede ou do cliente tornar o resultado do envio ambíguo, repita a mesma solicitação com a mesma ID. O Databricks retorna a operação existente em vez de iniciar um segundo expurgo.

O conjunto de recursos e a tabela de entidades devem corresponder à solicitação original. A reutilização de um ID com diferentes parâmetros de solicitação é rejeitada. O cliente gera um ID quando você omite um, mas é necessário um ID explícito para tornar as novas tentativas em nível de aplicativo idempotentes. Isso também é útil quando uma camada de orquestração externa pode tentar a operação novamente.

Atribuir custos de limpeza de compute​

As execuções de limpeza usam compute serverless. Com a versão 0.18.1 do cliente do Databricks Recurso Engenharia e acima, use tags ou budget_policy_id para atribuir o custo de 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",
)

As tags se aplicam ao compute de limpeza, não aos recursos de Unity Catalog feature. Uma solicitação aceita no máximo 25 tags.