Agregar regla de atributo (Administración de datos)

Resumen

Agrega una regla de atributo a un dataset.

Las reglas de atributos son reglas definidas por el usuario que se pueden agregar a un dataset para mejorar la experiencia de edición y ayudar a imponer la integridad de datos. Estas reglas pueden usarse para rellenar valores de atributos o restringir configuraciones de entidades permitidas y se imponen durante la edición de entidades. Si se vulnera una regla al editar una entidad, se devuelve un mensaje de error.

Más información sobre las reglas de atributo

Más información sobre el lenguaje de scripts de Arcade

Uso

  • Las reglas de cálculo por lotes y validación de una geodatabase corporativa se evalúan con el servidor de validación en el caso de los datasets versionados en rama. Para agregar estos tipos de reglas, la conexión de base de datos debe tener un Tipo de versionado configurado como En rama.

  • El dataset debe tener un campo GlobalID.

  • Para agregar reglas de cálculo por lotes o validación a un dataset, el rastreo del editor debe estar habilitado.

  • Para agregar una regla de atributo se requiere un bloqueo exclusivo en el dataset. Debe cerrar cualquier conexión activa al dataset, lo que puede incluir detener los servicios.

  • La expresión usada para definir una regla de atributo está limitada a la funcionalidad disponible usando el lenguaje Arcade.

  • Puede hacer referencia a una secuencia de base de datos creada por la herramienta Crear secuencia de base de datos en el parámetro Expresión de script mediante la función de datos de Arcade NextSequenceValue.

  • Para transferir las reglas de atributos existentes a otro dataset, puede usar las herramientas Exportar reglas de atributos e Importar reglas de atributos en lugar de ejecutar esta herramienta varias veces.

  • Nota:

    Una vez que agregue las reglas de atributos a un dataset, la versión del cliente mínima para el dataset es ArcGIS Pro 2.1. Significa que el dataset no estará disponible para su uso en ArcMap.

Sintaxis

arcpy.management.AddAttributeRule(in_table, name, type, script_expression, {is_editable}, {triggering_events}, {error_number}, {error_message}, {description}, {subtype}, {field}, {exclude_from_client_evaluation}, {batch}, {severity}, {tags})
ParámetroExplicaciónTipo de datos
in_table

La tabla o clase de entidad a la que se aplicará la nueva regla.

Table View
name

Un nombre único para la nueva regla.

String
type

Especifica el tipo de regla de atributo que se desea agregar.

  • CALCULATIONRellene automáticamente valores de atributo para las entidades cuando se defina otro atributo en una entidad. Estas reglas se aplican en función de los eventos desencadenadores especificados. Los cálculos que requieran mucho tiempo se pueden configurar para que se ejecuten en el modo por lotes y se evaluarán en los momentos que defina el usuario.Al agregar varias reglas de cálculo, el orden en el que se agregan las reglas es importante si existen dependencias circulares. Por ejemplo, la Regla A calcula que Field1 es igual al valor de $feature.Field2 + $feature.Field3 y la Regla B calcula que Field4 es igual a $feature.Field1 + $feature.Field5; el resultado del cálculo puede ser distinto en función del orden en que se agreguen las reglas.
  • CONSTRAINTEspecifique configuraciones de atributo permitidas para una entidad. Cuando se vulnera la regla de restricción, se genera un error y la entidad no se almacena. Por ejemplo, si el valor de Field A debe ser menor que la suma de Field B y Field C, se genera un error cuando se vulnera una restricción.
  • VALIDATIONCompruebe la existencia de entidades con un proceso de validación por lotes. Las reglas se evalúan en el momento que defina el usuario. Si se vulnera una regla, se crea una entidad de error. El tipo de regla solo se puede usar para los datos que se hayan establecido como versionados en rama.
String
script_expression

La expresión de Arcade que define la regla.

Calculator Expression
is_editable
(Opcional)

especifica si se puede editar el valor del atributo. Las reglas de atributos pueden configurarse para bloquear o permitir a los editores la edición de los valores de atributo del campo que se está calculando. Este parámetro solo es aplicable al tipo de regla de atributo de cálculo.

  • EDITABLELos editores podrán editar el valor del atributo. Esta es la opción predeterminada.
  • NONEDITABLELos editores no podrán editar el valor del atributo.
Boolean
triggering_events
[triggering_events,...]
(Opcional)

Especifica los eventos de edición que desencadenan la regla de atributo para aplicarla. Este parámetro solo es válido para los tipos de regla de restricción y cálculo. Se debe proporcionar al menos un evento desencadenador para reglas de cálculo que tienen el parámetro Lote desactivado (batch = "NOT_BATCH" en Python). Los eventos desencadenadores no se aplican a reglas de cálculo que tengan el parámetro Lote activado (batch = "BATCH" en Python).

  • INSERTLa regla se aplica cuando se agrega una nueva entidad.
  • UPDATELa regla se aplica cuando se actualiza una entidad.
  • DELETELa regla se aplica cuando se elimina una entidad.
String
error_number
(Opcional)

Un número de error que se devuelve cuando se vulnera esta regla. Este valor no tiene por qué ser único, de modo que puede que se devuelva el mismo número de error personalizado para varias reglas.

Este parámetro es obligatorio en el caso de las reglas de restricción y validación. Es opcional en el caso de las reglas de cálculo.

String
error_message
(Opcional)

Un mensaje de error que se devuelve cuando se vulnera esta regla. Se recomienda usar un mensaje descriptivo que ayude al editor a comprender la infracción cuando se produce. El mensaje está limitado a 2000 caracteres.

Este parámetro es obligatorio en el caso de las reglas de restricción y validación. Es opcional en el caso de las reglas de cálculo.

String
description
(Opcional)

La descripción de la nueva regla de atributo. La descripción está limitada a 256 caracteres.

String
subtype
(Opcional)

El subtipo al que se aplicará la regla si el dataset tiene subtipos.

String
field
(Opcional)

El nombre de un campo existente al que se aplicará la regla. Este parámetro solo es aplicable al tipo de regla de atributo de cálculo.

String
exclude_from_client_evaluation
(Opcional)

Especifica si la regla se excluirá de la evaluación antes de aplicar las ediciones. Dado que quizá no todos los clientes sean capaces de ejecutar todas las reglas disponibles, tiene la opción de marcar una regla solo para los clientes simples. Por ejemplo, algunas reglas pueden referirse a datos que no están disponibles para todos los clientes (por motivos tales como datos sin conexión, tamaño o seguridad), o algunas reglas pueden depender del usuario o el contexto (es decir, una actualización de campo ligera en ArcGIS Collector podría no ejecutar una regla que requiere una entrada adicional del usuario o más conocimientos; sin embargo, puede que un cliente como ArcGIS Pro sí sea compatible). Este parámetro no se aplica en el caso de las reglas de validación o de cálculo si el valor del parámetro batch es BATCH.

  • EXCLUDELa regla excluirá de la evaluación del cliente.
  • INCLUDELa regla se ejecutará en todos los clientes. Esta es la opción predeterminada.
Boolean
batch
(Opcional)

Especifica si la evaluación de la regla se ejecutará en modo de lote.

  • BATCHLa evaluación de la regla se realizará en modo de lote más adelante, mediante la validación.
  • NOT_BATCHLa evaluación de la regla no se ejecutará en modo de lote. Se utilizarán eventos desencadenadores para determinar si la regla se evalúa para operaciones de borrado, actualización o inserción. Esta es la opción predeterminada.

Las reglas de cálculo pueden estar BATCH o NOT_BATCH. Las reglas de validación siempre están BATCH para este parámetro y las reglas de restricción siempre están NOT_BATCH.

Las reglas de lotes solo se admiten para datos con el versionado en rama habilitado.

Boolean
severity
(Opcional)

La gravedad del error.

Se puede seleccionar un valor dentro del rango de 1-5 para definir la gravedad de la regla. Un valor de 1 es alto, el más grave, y un valor de 5 es bajo, el menos grave. Por ejemplo, puede ofrecer una gravedad baja para una regla de atributo específica e ignorar el error durante los flujos de trabajo de producción de datos, o bien establecer una gravedad alta donde habría que corregir el error para que los datos recopilados sean precisos.

Este parámetro solo se aplica a las reglas de validación.

Long
tags
[tags,...]
(Opcional)

Un conjunto de etiquetas que identifican la regla (se pueden buscar e indexar) como forma de asignarlas a un requisito funcional en un modelo de datos. Para introducir varias etiquetas, use el punto y coma como delimitador, por ejemplo, Etiqueta1;Etiqueta2;Etiqueta3.

String

Salida derivada

NombreExplicaciónTipo de datos
out_table

La tabla de entrada actualizada con una regla de atributo agregada.

Vista de tabla

Muestra de código

Ejemplo 1 de AddAttributeRule (ventana de Python)

Agregar una regla de cálculo que calcula el campo labeltext de la clase de entidad GasPipes.

'''****************************************************************************
Name:        AddAttributeRule_example1.py
Description: This script adds a calcualtion rule to a feature class
Created by:  Esri
****************************************************************************'''

# Import required modules        
import arcpy

# Set local variables
in_table = "C:\\MyProject\\sdeConn.sde\\progdb.user1.GasPipes"
name = "calculateRuleLabel"
script_expression = 'if ($feature.material == 5) {return "Plastic"} else {return "Other"}'
triggering_events = "INSERT;UPDATE"
description = "Populate label text"
subtype = "Coated Steel"
field = "labeltext"

# Run the AddAttributeRule tool
arcpy.AddAttributeRule_management(in_table, name, "CALCULATION", script_expression, "EDITABLE", triggering_events, "", "", description, subtype, field)
Ejemplo 2 de AddAttributeRule (ventana de Python)

Agregar una regla de restricción que limita el atributo de presión de funcionamiento de la clase de entidad GasPipes a 300.

'''****************************************************************************
Name:        AddAttributeRule_example2.py
Description: This script adds a constraint rule to a feature class
Created by:  Esri
****************************************************************************'''

# Import required modules        
import arcpy

# Set local variables
in_table = "C:\\MyProject\\sdeConn.sde\\progdb.user1.GasPipes"
name = "constraintRuleOP"
script_expression = '$feature.OPERATINGPRESSURE < 300'
triggering_events = "INSERT;UPDATE"
description = "Operating pressure must be less than 300"
subtype = "ALL"
error_number = 2001
error_message = "Invalid operating pressure. Must be less than 300."

# Run the AddAttributeRule tool
arcpy.AddAttributeRule_management(in_table, name, "CONSTRAINT", script_expression, "EDITABLE", triggering_events, error_number, error_message, description, subtype)
Ejemplo 3 de AddAttributeRule (ventana de Python)

Agregar una regla de validación a la clase de entidad GasPipes para marcar todas las entidades existentes con una presión de funcionamiento mayor que 300.

'''****************************************************************************
Name:        AddAttributeRule_example3.py
Description: This script adds a validation rule to a feature class
Created by:  Esri
****************************************************************************'''

# Import required modules        
import arcpy

# Set local variables
in_table = "C:\\MyProject\\sdeConn.sde\\progdb.user1.GasPipes"
name = "validationRuleMaxOP"
rule_type = "VALIDATION"
script_expression = "$feature.OPERATINGPRESSURE < 300"
error_number = 3001
error_message = "Maximum operating pressure exceeded"
description = "Validation rule: max operating pressure value"
subtype = "Coated Steel"
batch = "BATCH"
severity = 3
tags = "OP;MAXOP"

# Run the AddAttributeRule tool
arcpy.AddAttributeRule_management(in_table, name, rule_type, 
                                  script_expression, "", "", 
                                  error_number, error_message, 
                                  description, subtype, "", "", 
                                  batch, severity, tags)

Información de licenciamiento

  • Basic: No
  • Standard: Sí
  • Advanced: Sí

Temas relacionados