Actualización de los comandos de directivaupdate policy commands

La Directiva de actualización es un objeto de directiva de nivel de tabla que ejecuta automáticamente una consulta y, a continuación, ingeri los resultados cuando se ingestan datos en otra tabla.The update policy is a table-level policy object that automatically runs a query and then ingests the results when data is ingested into another table.

Mostrar Directiva de actualizaciónShow update policy

Este comando devuelve la Directiva de actualización de la tabla especificada o todas las tablas de la base de datos predeterminada si * se usa como nombre de tabla.This command returns the update policy of the specified table, or all tables in the default database if * is used as a table name.

SintaxisSyntax

  • .show table TableName policy update.show table TableName policy update
  • .show``table NombreDeBaseDeDatos . TableName TableName policy``update.show table DatabaseName.TableName policy update
  • .show table * policy update.show table * policy update

DevolucionesReturns

Este comando devuelve una tabla que tiene un registro por tabla.This command returns a table that has one record per table.

ColumnaColumn TipoType DescripciónDescription
EntityNameEntityName string El nombre de la entidad en la que se define la Directiva de actualizaciónThe name of the entity the update policy is defined on
DirectivasPolicies string Una matriz JSON que indica todas las directivas de actualización definidas para la entidad, con el formato de objeto de directiva de actualizaciónA JSON array indicating all update policies defined for the entity, formatted as update policy object

EjemploExample

.show table DerivedTableX policy update 
EntityNameEntityName DirectivasPolicies
[TestDB]. [DerivedTableX][TestDB].[DerivedTableX] [{"IsEnabled": true, "Source": "MyTableX", "Query": "MyUpdateFunction ()", "IsTransactional": false, "PropagateIngestionProperties": false}][{"IsEnabled": true, "Source": "MyTableX","Query": "MyUpdateFunction()","IsTransactional": false,"PropagateIngestionProperties": false}]

Modificar Directiva de actualizaciónAlter update policy

Este comando establece la Directiva de actualización de la tabla especificada.This command sets the update policy of the specified table.

SintaxisSyntax

  • .alter``table TableName policy TableName update ArrayOfUpdatePolicyObjects.alter table TableName policy update ArrayOfUpdatePolicyObjects
  • .alter``table NombreDeBaseDeDatos . TableName policy update ArrayOfUpdatePolicyObjects.alter table DatabaseName.TableName policy update ArrayOfUpdatePolicyObjects

ArrayOfUpdatePolicyObjects es una matriz JSON que tiene cero o más objetos de directiva de actualización definidos.ArrayOfUpdatePolicyObjects is a JSON array that has zero or more update policy objects defined.

Nota

  • Use una función almacenada para la Query propiedad del objeto de directiva de actualización.Use a stored function for the Query property of the update policy object. Solo tendrá que modificar la definición de función, en lugar de todo el objeto de directiva.You will only need to modify the function definition, instead of the entire policy object.
  • Si IsEnabled se establece en true , se realizarán las validaciones siguientes en la Directiva de actualización a medida que se establece:If IsEnabled is set to true, then the following validations are performed on the update policy as it's being set:
    • Source : Comprueba que la tabla existe en la base de datos de destino.Source - Checks that the table exists in the target database.
    • Query
      • Comprueba que el esquema definido por el esquema coincide con el de la tabla de destino.Checks that the schema defined by the schema matches the one of the target table
      • Comprueba que la consulta hace referencia a la source tabla de la Directiva de actualización.Checks that the query references the source table of the update policy. La definición de una consulta de directiva de actualización que no haga referencia al origen es posible mediante AllowUnreferencedSourceTable=true el establecimiento de en las propiedades with (vea el ejemplo siguiente), pero no se recomienda debido a problemas de rendimiento.Defining an update policy query which does not reference the source is possible by setting AllowUnreferencedSourceTable=true in the with properties (see example below), but isn't recommended due to performance issues. Para cada ingesta en la tabla de origen, se tienen en cuenta todos los registros de una tabla diferente para la ejecución de la Directiva de actualización.For every ingestion to the source table, all records in a different table are considered for the update policy execution.
      • Comprueba que la Directiva no da lugar a la creación de un ciclo en la cadena de directivas de actualización de la base de datos de destino.Checks that the policy doesn't result in a cycle being created in the chain of update policies in the target database.
  • Si IsTransactional está establecido en true , comprueba que los TableAdmin permisos también se comprueban con Source (la tabla de origen).If IsTransactional is set to true, then checks that the TableAdmin permissions are also verified against Source (the source table).
  • Pruebe la Directiva de actualización o la función para el rendimiento, antes de aplicarla para que se ejecute en cada ingesta en la tabla de origen.Test your update policy or function for performance, before applying it to run on each ingestion to the source table. Para obtener más información, consulte probar el impacto en el rendimiento de una directiva de actualización.For more information, see testing an update policy's performance impact.

DevolucionesReturns

El comando establece el objeto de directiva de actualización de la tabla, invalidando cualquier directiva actual y, a continuación, devuelve el resultado del .show table update policy comando correspondiente.The command sets the table's update policy object, overriding any current policy, and then returns the output of the corresponding .show table update policy command.

EjemploExample

// Create a function that will be used for update
.create function 
MyUpdateFunction()
{
    MyTableX
    | where ColumnA == 'some-string'
    | summarize MyCount=count() by ColumnB, Key=ColumnC
    | join (OtherTable | project OtherColumnZ, Key=OtherColumnC) on Key
    | project ColumnB, ColumnZ=OtherColumnZ, Key, MyCount
}

// Create the target table (if it doesn't already exist)
.set-or-append DerivedTableX <| MyUpdateFunction() | limit 0

// Use update policy on table DerivedTableX
.alter table DerivedTableX policy update
@'[{"IsEnabled": true, "Source": "MyTableX", "Query": "MyUpdateFunction()", "IsTransactional": false, "PropagateIngestionProperties": false}]'
  • Cuando se produce una ingesta en la tabla de origen, en este caso, MyTableX se crean una o varias extensiones (particiones de datos) en esa tabla.When an ingestion to the source table occurs, in this case, MyTableX, one or more extents (data shards) are created in that table
  • El Query que se define en el objeto de directiva de actualización, en este caso MyUpdateFunction() , solo se ejecutará en esas extensiones y no se ejecutará en toda la tabla.The Query that is defined in the update policy object, in this case MyUpdateFunction(), will only run on those extents, and won't run on the entire table.
    • "Ámbito" se realiza interna y automáticamente, y no debe administrarse al definir Query ."Scoping" is done internally and automatically, and shouldn't be handled when defining the Query.
    • Solo se tendrán en cuenta los registros recién incorporados, que son diferentes en cada operación de ingesta, cuando se ingestan a la DerivedTableX tabla derivada.Only newly ingested records, that are different in each ingestion operation, will be taken into consideration when ingesting to the DerivedTableX derived table.
// The following example will throw an error for not referencing the source table in the update policy query
// The policy's source table is MyTableX, whereas the query only references MyOtherTable. 
.alter table DerivedTableX policy update
@'[{"IsEnabled": true, "Source": "MyTableX", "Query": "MyOtherTable", "IsTransactional": false, "PropagateIngestionProperties": false}]'

// Adding the following properties will suppress the error (but is not recommended)
.alter table DerivedTableX policy update with (AllowUnreferencedSourceTable=true)
@'[{"IsEnabled": true, "Source": "MyTableX", "Query": "MyOtherTable", "IsTransactional": false, "PropagateIngestionProperties": false}]'

. Alter-Merge tabla TableName actualización de Directiva.alter-merge table TableName policy update

Este comando modifica la Directiva de actualización de la tabla especificada.This command modifies the update policy of the specified table.

SintaxisSyntax

  • .alter-merge``table TableName policy TableName update ArrayOfUpdatePolicyObjects.alter-merge table TableName policy update ArrayOfUpdatePolicyObjects
  • .alter-merge``table NombreDeBaseDeDatos . TableName policy update ArrayOfUpdatePolicyObjects.alter-merge table DatabaseName.TableName policy update ArrayOfUpdatePolicyObjects

ArrayOfUpdatePolicyObjects es una matriz JSON que tiene cero o más objetos de directiva de actualización definidos.ArrayOfUpdatePolicyObjects is a JSON array that has zero or more update policy objects defined.

Nota

  • Use funciones almacenadas para la implementación masiva de la propiedad de consulta del objeto de directiva de actualización.Use stored functions for the bulk implementation of the query property of the update policy object. Solo tendrá que modificar la definición de función en lugar de todo el objeto de directiva.You'll only need to modify the function definition instead of the entire policy object.
  • Las validaciones son las mismas que las que se realizan en un alter comando.The validations are the same as those done on an alter command.

DevuelveReturns

El comando anexa al objeto de directiva de actualización de la tabla, invalidando cualquier directiva actual y, a continuación, devuelve el resultado del .show table *TableName* update policy comando correspondiente.The command appends to the table's update policy object, overriding any current policy, and then returns the output of the corresponding .show table *TableName* update policy command.

EjemploExample

.alter-merge table DerivedTableX policy update 
@'[{"IsEnabled": true, "Source": "MyTableY", "Query": "MyUpdateFunction()", "IsTransactional": false}]'  

. Delete TABLE TableName actualización de Directiva.delete table TableName policy update

Elimina la Directiva de actualización de la tabla especificada.Deletes the update policy of the specified table.

SintaxisSyntax

  • .delete table TableName policy update.delete table TableName policy update
  • .delete``table NombreDeBaseDeDatos . TableName TableName policy``update.delete table DatabaseName.TableName policy update

DevuelveReturns

El comando elimina el objeto de directiva de actualización de la tabla y, a continuación, devuelve el resultado del .show table *TableName* update policy comando correspondiente.The command deletes the table's update policy object and then returns the output of the corresponding .show table *TableName* update policy command.

EjemploExample

.delete table DerivedTableX policy update