Compartir a través de


Purga de datos

Nota

En este artículo se indican los pasos para eliminar los datos personales del dispositivo o del servicio y puede utilizarse para cumplir con sus obligaciones según el Reglamento general de protección de datos (RGPD). Para obtener información general sobre RGPD, consulte Información sobre los procedimientos recomendados para el cumplimiento del RGPD y la sección RGPD del portal de confianza de servicios.

Como plataforma de datos, Azure Data Explorer admite la capacidad de eliminar registros individuales mediante kusto .purge y comandos relacionados. También puede purgar una tabla completa o purgar registros en una vista materializada.

Advertencia

La eliminación de datos mediante el .purge comando está diseñada para usarse para proteger los datos personales y no debe usarse en otros escenarios. No está diseñado para admitir solicitudes de eliminación frecuentes o eliminación de cantidades masivas de datos y puede tener un impacto significativo en el rendimiento del servicio.

Directrices de purga

Diseñe cuidadosamente el esquema de datos e investigue las directivas pertinentes antes de almacenar datos personales en Azure Data Explorer.

  1. En un escenario mejor, el período de retención de estos datos es suficientemente corto y los datos se eliminan automáticamente.
  2. Si el uso del período de retención no es posible, aísle todos los datos que están sujetos a reglas de privacidad en algunas tablas de Azure Data Explorer. De forma óptima, use solo una tabla y vincule a ella desde todas las demás tablas. Este aislamiento permite ejecutar el proceso de purga de datos en algunas tablas que contienen datos confidenciales y evitar todas las demás tablas.
  3. El autor de la llamada debe realizar cada intento de procesar por lotes la ejecución de .purge comandos en 1 a 2 comandos por tabla al día. No emita varios comandos con predicados de identidad de usuario únicos. En su lugar, envíe un único comando cuyo predicado incluya todas las identidades de usuario que requieren purga.

Proceso de purga

El proceso de purga selectiva de datos de Azure Data Explorer se produce en los pasos siguientes:

  1. Fase 1: Proporcione una entrada con un nombre de tabla de Azure Data Explorer y un predicado por registro, lo que indica qué registros se van a eliminar. Kusto examina la tabla que busca identificar las extensiones de datos que participarían en la purga de datos. Las extensiones identificadas son aquellas que tienen uno o más registros para los que el predicado devuelve true.

  2. Fase 2: (Eliminación temporal) Reemplace cada extensión de datos de la tabla (identificada en el paso (1)) por una versión reingested. La versión reingested no debe tener los registros para los que el predicado devuelve true. Si los nuevos datos no se ingieren en la tabla, al final de esta fase, las consultas ya no devolverán datos para los que el predicado devuelve true. La duración de la fase de eliminación temporal de purga depende de los parámetros siguientes:

    • Número de registros que se deben purgar.
    • Distribución de registros entre las extensiones de datos del clúster
    • Número de nodos del clúster
    • La capacidad de reserva que tiene para las operaciones de purga
    • Otros factores

    La duración de la fase 2 puede variar entre unos segundos y muchas horas.

  3. Fase 3: (Eliminación permanente) Revierta todos los artefactos de almacenamiento que puedan tener los datos "dudosos" y los elimine del almacenamiento. Esta fase se realiza al menos cinco días después de la finalización de la fase anterior, pero no más de 30 días después del comando inicial. Estas escalas de tiempo se establecen para seguir los requisitos de privacidad de los datos.

La emisión de un .purge comando desencadena este proceso, que tarda unos días en completarse. Si la densidad de registros para los que se aplica el predicado es lo suficientemente grande, el proceso volverá a calcular eficazmente todos los datos de la tabla. Esta reingestión tiene un impacto significativo en el rendimiento y el COGS (costo de las mercancías vendidas).

Limitaciones y consideraciones de purga

  • El proceso de purga es final e irreversible. No es posible deshacer este proceso ni recuperar los datos que se han purgado. Los comandos como deshacer la eliminación de tablas no pueden recuperar los datos purgados. La reversión de los datos a una versión anterior no puede ir a antes del comando de purga más reciente.

  • Antes de ejecutar la purga, compruebe el predicado mediante la ejecución de una consulta y compruebe que los resultados coinciden con el resultado esperado. También puede usar el proceso de dos pasos que devuelve el número esperado de registros que se purgarán.

  • El .purge comando se ejecuta en el punto de conexión Administración de datos: https://ingest-[YourClusterName].[region].kusto.windows.net. El comando requiere permisos de administración de base de datos en las bases de datos pertinentes.

  • Debido al impacto en el rendimiento del proceso de purga y para garantizar que se han seguido las directrices de purga , se espera que el autor de la llamada modifique el esquema de datos para que las tablas mínimas incluyan datos relevantes y comandos por lotes por tabla para reducir el impacto significativo de COGS del proceso de purga.

  • El predicate parámetro del comando .purge se usa para especificar los registros que se van a purgar. Predicate el tamaño está limitado a 1 MB. Al construir :predicate

    • Use el operador 'in', por ejemplo, where [ColumnName] in ('Id1', 'Id2', .. , 'Id1000').
    • Tenga en cuenta los límites del operador "in" (la lista puede contener hasta 1,000,000 valores).
    • Si el tamaño de la consulta es grande, use externaldata el operador , por ejemplo where UserId in (externaldata(UserId:string) ["https://...blob.core.windows.net/path/to/file?..."]). El archivo almacena la lista de identificadores que se van a purgar.
    • El tamaño total de la consulta, después de expandir todos los externaldata blobs (tamaño total de todos los blobs), no puede superar los 64 MB.

Rendimiento de purga

Solo se puede ejecutar una solicitud de purga en el clúster en un momento dado. Todas las demás solicitudes se ponen en cola en Scheduled estado. Supervise el tamaño de la cola de solicitudes de purga y mantenga dentro de los límites adecuados para que coincidan con los requisitos aplicables a los datos.

Para reducir el tiempo de ejecución de purga:

Desencadenamiento del proceso de purga

Nota

La ejecución de purga se invoca mediante la ejecución del comando purge table TableName records en el punto de conexión https://ingest-de Administración de datos [YourClusterName].[ Region].kusto.windows.net.

Comando Purge table TableName records

El comando purge se puede invocar de dos maneras para diferentes escenarios de uso:

  • Invocación mediante programación: Un solo paso diseñado para que lo invoquen las aplicaciones. Al llamar a este comando, se desencadena directamente la secuencia de ejecución de purga.

    Sintaxis

    // Connect to the Data Management service
    #connect "https://ingest-[YourClusterName].[region].kusto.windows.net"
    
    // To purge table records
    .purge table [TableName] records in database [DatabaseName] with (noregrets='true') <| [Predicate]
    
    // To purge materialized view records
    .purge materialized-view [MaterializedViewName] records in database [DatabaseName] with (noregrets='true') <| [Predicate]
    
  • Invocación manual: Proceso de dos pasos que requiere una confirmación explícita como paso independiente. La primera invocación del comando devuelve un token de verificación, que se debe proporcionar para ejecutar la purga real. Esta secuencia reduce el riesgo de eliminar accidentalmente datos incorrectos.

Nota

El primer paso de la invocación de dos pasos requiere ejecutar una consulta en todo el conjunto de datos para identificar los registros que se van a purgar. Esta consulta puede agotar el tiempo de espera o producir errores en tablas grandes, especialmente con una cantidad significativa de datos de caché en frío. En caso de errores, valide el predicado usted mismo y después de comprobar la corrección, use la purga de un solo paso con la noregrets opción .

Sintaxis

Nota

Para conectarse a un clúster mediante la interfaz de usuario web de Azure Data Explorer, consulte Incorporación de clústeres.

   // Connect to the Data Management service - this command only works in Kusto.Explorer
   #connect "https://ingest-[YourClusterName].[region].kusto.windows.net"

   // Step #1 - retrieve a verification token (no records will be purged until step #2 is executed)
   .purge table [TableName] records in database [DatabaseName] <| [Predicate]

   // Step #2 - input the verification token to execute purge
   .purge table [TableName] records in database [DatabaseName] with (verificationtoken=h'<verification token from step #1>') <| [Predicate]

Para purgar una vista materializada, reemplace la table palabra clave por materialized-viewy reemplace TableName por MaterializedViewName.

Parámetros Descripción
DatabaseName Nombre de la base de datos
TableName / MaterializedViewName Nombre de la tabla o vista materializada que se va a purgar.
Predicate Identifica los registros que se van a purgar. Consulte las limitaciones del predicado de purga.
noregrets Si se establece, desencadena una activación de un solo paso.
verificationtoken En el escenario de activación en dos pasos (noregrets no está establecido), este token se puede usar para ejecutar el segundo paso y confirmar la acción. Si verificationtoken no se especifica, desencadenará el primer paso del comando. La información sobre la purga se devolverá con un token que se debe devolver al comando para realizar el paso 2.

Limitaciones del predicado de purga

  • El predicado debe ser una selección simple (por ejemplo, donde [ColumnName] == 'X'where / [ColumnName] in ('X', 'Y', 'Z') y [OtherColumn] == 'A').
  • Se deben combinar varios filtros con una cláusula "and", en lugar de cláusulas independientes where (por ejemplo, where [ColumnName] == 'X' and OtherColumn] == 'Y' y no where [ColumnName] == 'X' | where [OtherColumn] == 'Y').
  • El predicado no puede hacer referencia a tablas distintas de la tabla que se va a purgar (TableName). El predicado solo puede incluir la instrucción selection (where). No puede proyectar columnas específicas de la tabla (esquema de salida al ejecutar 'table | El predicado debe coincidir con el esquema de la tabla).
  • No se admiten las funciones del sistema (como , ingestion_time(), extent_id()).

Ejemplo: purga en dos pasos

Para iniciar la purga en un escenario de activación en dos pasos, ejecute el paso 1 del comando:

   // Connect to the Data Management service
   #connect "https://ingest-[YourClusterName].[region].kusto.windows.net"

   .purge table MyTable records in database MyDatabase <| where CustomerId in ('X', 'Y')

   .purge materialized-view MyView records in database MyDatabase <| where CustomerId in ('X', 'Y')

Salida

NumRecordsToPurge EstimatedPurgeExecutionTime VerificationToken
1,596 00:00:02 e43c7184ed22f4f23c7a9d7b124d196be2e570096987e5baadf65057fa65736b

A continuación, valide NumRecordsToPurge antes de ejecutar el paso 2.

Para completar una purga en un escenario de activación en dos pasos, use el token de verificación devuelto del paso 1 para ejecutar el paso 2:

.purge table MyTable records in database MyDatabase
 with(verificationtoken=h'e43c7....')
<| where CustomerId in ('X', 'Y')

.purge materialized-view MyView records in database MyDatabase
 with(verificationtoken=h'e43c7....')
<| where CustomerId in ('X', 'Y')

Salida

OperationId DatabaseName TableName ScheduledTime Duration LastUpdatedOn EngineOperationId State StateDetails EngineStartTime EngineDuration Retries ClientRequestId Principal
c9651d74-3b80-4183-90bb-bbe9e42eadc4 MyDatabase MyTable 2019-01-20 11:41:05.4391686 00:00:00.1406211 2019-01-20 11:41:05.4391686 Programado 0 KE. Ejecutarcomando; 1d0ad28b-f791-4f5a-a60f-0e32318367b7 AAD app id=...

Ejemplo: purga de un solo paso

Para desencadenar una purga en un escenario de activación de un solo paso, ejecute el siguiente comando:

// Connect to the Data Management service
 #connect "https://ingest-[YourClusterName].[region].kusto.windows.net"

.purge table MyTable records in database MyDatabase with (noregrets='true') <| where CustomerId in ('X', 'Y')

.purge materialized-view MyView records in database MyDatabase with (noregrets='true') <| where CustomerId in ('X', 'Y')

Salida

OperationId DatabaseName TableName ScheduledTime Duration LastUpdatedOn EngineOperationId State StateDetails EngineStartTime EngineDuration Retries ClientRequestId Principal
c9651d74-3b80-4183-90bb-bbe9e42eadc4 MyDatabase MyTable 2019-01-20 11:41:05.4391686 00:00:00.1406211 2019-01-20 11:41:05.4391686 Programado 0 KE. Ejecutarcomando; 1d0ad28b-f791-4f5a-a60f-0e32318367b7 AAD app id=...

Comando Cancelar operación de purga

Si es necesario, puede cancelar las solicitudes de purga pendientes.

Nota

Esta operación está pensada para escenarios de recuperación de errores. No se garantiza que se realice correctamente y no debe formar parte de un flujo operativo normal. Solo se puede aplicar a las solicitudes que todavía están en la cola y que aún no se han enviado para su ejecución.

Sintaxis

 // Cancel of a single purge operation
 .cancel purge <OperationId>

  // Cancel of all pending purge requests in a database
 .cancel all purges in database <DatabaseName>

 // Cancel of all pending purge requests, for all databases
 .cancel all purges

Ejemplo: Cancelar una sola operación de purga

 .cancel purge aa894210-1c60-4657-9d21-adb2887993e1

Salida

La salida de este comando es la misma que la salida del comando "show purges OperationId", que muestra el estado actualizado de la operación de purga que se va a cancelar. Si el intento es correcto, el estado de la operación se actualiza a Canceled. De lo contrario, el estado de la operación no cambia.

OperationId DatabaseName TableName ScheduledTime Duration LastUpdatedOn EngineOperationId State StateDetails EngineStartTime EngineDuration Retries ClientRequestId Principal
c9651d74-3b80-4183-90bb-bbe9e42eadc4 MyDatabase MyTable 2019-01-20 11:41:05.4391686 00:00:00.1406211 2019-01-20 11:41:05.4391686 Canceled 0 KE. Ejecutarcomando; 1d0ad28b-f791-4f5a-a60f-0e32318367b7 AAD app id=...

Ejemplo: Cancelar todas las operaciones de purga pendientes en una base de datos

 .cancel all purges in database MyDatabase

Salida

La salida de este comando es la misma que la salida del comando show purges , que muestra todas las operaciones de la base de datos con su estado actualizado. Las operaciones que se cancelaron correctamente tendrán su estado actualizado a Canceled. De lo contrario, el estado de la operación no cambia.

OperationId DatabaseName TableName ScheduledTime Duration LastUpdatedOn EngineOperationId State StateDetails EngineStartTime EngineDuration Retries ClientRequestId Principal
5a34169e-8730-49f5-9694-7fde3a7a0139 MyDatabase MyTable 2021-03-03 05:07:29.7050198 00:00:00.2971331 2021-03-03 05:07:30.0021529 Canceled 0 KE. Ejecutarcomando; 1d0ad28b-f791-4f5a-a60f-0e32318367b7 AAD app id=...
2fa7c04c-6364-4ce1-a5e5-1ab921f518f5 MyDatabase MyTable 2021-03-03 05:05:03.5035478 00:00:00.1406211 2021-03-03 05:05:03.6441689 InProgress 0 KE. Ejecutarcomando; 1d0ad28b-f791-4f5a-a60f-0e32318367b7 AAD app id=...

Seguimiento del estado de la operación de purga

Nota

Se puede realizar un seguimiento de las operaciones de purga con el comando show purges, ejecutado en el punto de conexión https://ingest-de Administración de datos [YourClusterName].[ region].kusto.windows.net.

Status = 'Completed' indica la finalización correcta de la primera fase de la operación de purga, es decir, los registros se eliminan temporalmente y ya no están disponibles para realizar consultas. No se espera que los clientes realicen un seguimiento y comprueben la finalización de la segunda fase (eliminación permanente). Azure Data Explorer supervisa internamente esta fase.

Comando Mostrar purgas

Show purges el comando muestra el estado de la operación de purga especificando el identificador de operación dentro del período de tiempo solicitado.

.show purges <OperationId>
.show purges [in database <DatabaseName>]
.show purges from '<StartDate>' [in database <DatabaseName>]
.show purges from '<StartDate>' to '<EndDate>' [in database <DatabaseName>]
Propiedades Descripción Obligatorio/Opcional
OperationId Identificador de la operación de Administración de datos generado después de ejecutar una sola fase o segunda. Mandatory
StartDate Límite de tiempo inferior para las operaciones de filtrado. Si se omite, el valor predeterminado es 24 horas antes de la hora actual. Opcionales
EndDate Límite de tiempo superior para las operaciones de filtrado. Si se omite, el valor predeterminado es la hora actual. Opcionales
DatabaseName Nombre de la base de datos para filtrar los resultados. Opcionales

Nota

El estado solo se proporcionará en las bases de datos para las que el cliente tiene permisos de base de datos Administración.

Ejemplos

.show purges
.show purges c9651d74-3b80-4183-90bb-bbe9e42eadc4
.show purges from '2018-01-30 12:00'
.show purges from '2018-01-30 12:00' to '2018-02-25 12:00'
.show purges from '2018-01-30 12:00' to '2018-02-25 12:00' in database MyDatabase

Salida

OperationId DatabaseName TableName ScheduledTime Duration LastUpdatedOn EngineOperationId State StateDetails EngineStartTime EngineDuration Retries ClientRequestId Principal
c9651d74-3b80-4183-90bb-bbe9e42eadc4 MyDatabase MyTable 2019-01-20 11:41:05.4391686 00:00:33.6782130 2019-01-20 11:42:34.6169153 a0825d4d-6b0f-47f3-a499-54ac5681ab78 Completado Purga completada correctamente (artefactos de almacenamiento pendientes de eliminación) 2019-01-20 11:41:34.6486506 00:00:04.4687310 0 KE. Ejecutarcomando; 1d0ad28b-f791-4f5a-a60f-0e32318367b7 Id. de aplicación de AAD=...
  • OperationId : el identificador de operación dm devuelto al ejecutar la purga.
  • DatabaseName** - nombre de la base de datos (distingue mayúsculas de minúsculas).
  • TableName - nombre de tabla (distingue mayúsculas de minúsculas).
  • ScheduledTime - tiempo de ejecución del comando de purga en el servicio DM.
  • Duration : duración total de la operación de purga, incluido el tiempo de espera de la cola dm de ejecución.
  • EngineOperationId : el identificador de operación de la purga real que se ejecuta en el motor.
  • State : estado de purga, puede ser uno de los siguientes valores:
    • Scheduled - La operación de purga está programada para su ejecución. Si el trabajo permanece programado, probablemente haya un trabajo pendiente de operaciones de purga. Consulte purge performance (Purgar el rendimiento ) para borrar este trabajo pendiente. Si se produce un error en una operación de purga en un error transitorio, el dm volverá a intentarlo y se establecerá en Programado de nuevo (por lo que es posible que vea una transición de operación de Scheduled a InProgress y de vuelta a Scheduled).
    • InProgress : la operación de purga está en curso en el motor.
    • Completed : purga completada correctamente.
    • BadInput - error de purga en la entrada incorrecta y no se reintentará. Este error puede deberse a varios problemas, como un error de sintaxis en el predicado, un predicado no válido para los comandos de purga, una consulta que supera los límites (por ejemplo, más de 1M entidades en un externaldata operador o más de 64 MB de tamaño de consulta expandido total) y 404 o 403 errores para externaldata blobs.
    • Failed - error de purga y no se reintentará. Este error puede producirse si la operación estaba esperando en la cola durante demasiado tiempo (más de 14 días), debido a un trabajo pendiente de otras operaciones de purga o a una serie de errores que superan el límite de reintento. Este último generará una alerta de supervisión interna y la investigará el equipo de Azure Data Explorer.
  • StateDetails - una descripción del estado.
  • EngineStartTime : la hora en que se emitió el comando al motor. Si hay una gran diferencia entre esta hora y ScheduledTime, normalmente hay un trabajo pendiente significativo de las operaciones de purga y el clúster no se mantiene al día.
  • EngineDuration - tiempo de ejecución de purga real en el motor. Si se reintentó la purga varias veces, es la suma de todas las duraciones de ejecución.
  • Retries : número de veces que el servicio dm reintentó la operación debido a un error transitorio.
  • ClientRequestId : identificador de actividad de cliente de la solicitud de purga dm.
  • Principal : identidad del emisor del comando de purga.

Purgar una tabla completa

Purgar una tabla incluye quitar la tabla y marcarla como purgada para que el proceso de eliminación permanente descrito en Proceso de purga se ejecute en ella. Quitar una tabla sin purgar no elimina todos sus artefactos de almacenamiento. Estos artefactos se eliminan según la directiva de retención dura establecida inicialmente en la tabla. El purge table allrecords comando es rápido y eficaz y es preferible al proceso de purgar registros, si corresponde a su escenario.

Nota

El comando se invoca ejecutando el comando table TableName allrecords de la tabla de purga en el punto de conexión https://ingest-de Administración de datos [YourClusterName].[ region].kusto.windows.net.

Comando Purge table TableName allrecords

De forma similar al comando ".purge table records ", este comando se puede invocar en un modo mediante programación (un solo paso) o en un modo manual (dos pasos).

  1. Invocación mediante programación (paso único):

    Sintaxis

    // Connect to the Data Management service
    #connect "https://ingest-[YourClusterName].[Region].kusto.windows.net"
    
    .purge table [TableName] in database [DatabaseName] allrecords with (noregrets='true')
    
  2. Invocación humana (dos pasos):

    Sintaxis

    
    // Connect to the Data Management service
    #connect "https://ingest-[YourClusterName].[Region].kusto.windows.net"
    
    // Step #1 - retrieve a verification token (the table will not be purged until step #2 is executed)
    
    .purge table [TableName] in database [DatabaseName] allrecords
    
    // Step #2 - input the verification token to execute purge
    .purge table [TableName] in database [DatabaseName] allrecords with (verificationtoken=h'<verification token from step #1>')
    
    Parámetros Descripción
    DatabaseName Nombre de la base de datos.
    TableName Nombre de la tabla.
    noregrets Si se establece, desencadena una activación de un solo paso.
    verificationtoken En el escenario de activación en dos pasos (noregrets no está establecido), este token se puede usar para ejecutar el segundo paso y confirmar la acción. Si verificationtoken no se especifica, desencadenará el primer paso del comando. En este paso, se devuelve un token para volver al comando y realizar el paso 2.

Ejemplo: purga en dos pasos

  1. Para iniciar la purga en un escenario de activación en dos pasos, ejecute el paso 1 del comando :

    // Connect to the Data Management service
     #connect "https://ingest-[YourClusterName].[Region].kusto.windows.net"
    
    .purge table MyTable in database MyDatabase allrecords
    

    Salida

    VerificationToken
    e43c7184ed2f4f23c7a9d7b124d196be2e570096987e5baadf65057fa65736b
  2. Para completar una purga en un escenario de activación en dos pasos, use el token de verificación devuelto en el paso 1 para ejecutar el paso 2:

    .purge table MyTable in database MyDatabase allrecords
    with (verificationtoken=h'eyJT.....')
    

    La salida es la misma que la salida del comando ".show tables" (se devuelve sin la tabla purgada).

    Salida

    TableName DatabaseName Carpeta DocString
    OtherTable MyDatabase --- ---

Ejemplo: purga de un solo paso

Para desencadenar una purga en un escenario de activación de un solo paso, ejecute el siguiente comando:

// Connect to the Data Management service
#connect "https://ingest-[YourClusterName].[Region].kusto.windows.net"

.purge table MyTable in database MyDatabase allrecords with (noregrets='true')

La salida es la misma que la salida del comando ".show tables" (se devuelve sin la tabla purgada).

Salida

TableName DatabaseName Carpeta DocString
OtherTable MyDatabase --- ---