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 ArcGIS 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.

  • 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 utilizando la función de datos NextSequenceValue Arcade para el parámetro Expresión de script.

  • 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. Esto significa que el dataset no estará disponible para usar en ArcMap.

Parámetros

EtiquetaExplicaciónTipo de datos
Tabla de entrada

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

Table View
Nombre

Un nombre único para la nueva regla.

String
Tipo

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

  • CálculoLos valores de atributo se rellenarán automáticamente 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.
  • RestricciónLas configuraciones de atributos permitidas se especificarán en 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.
  • ValidaciónLas entidades existentes se identificarán mediante 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.
String
Expresión de script

La expresión de Arcade que define la regla.

Calculator Expression
Es 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.

  • Activado: el valor del atributo se puede editar. Esta es la opción predeterminada.
  • Desactivado: el valor del atributo no se puede editar.

Boolean
Eventos desencadenadores
(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. Los eventos desencadenadores no se aplican a reglas de cálculo que tengan el parámetro Lote activado.

  • InsertarLa regla se aplica cuando se agrega una nueva entidad.
  • ActualizarLa regla se aplica cuando se actualiza una entidad.
  • EliminarLa regla se aplica cuando se elimina una entidad.
String
Número de error
(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 reglas de tipo validación y restricción. Es opcional en el caso de las reglas de tipo cálculo.

String
Mensaje de error
(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 256 caracteres.

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

String
Descripción
(Opcional)

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

String
Subtipo
(Opcional)

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

String
Campo
(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
Excluir de la evaluación de la aplicación
(Opcional)

Especifica si la aplicación evaluará la regla localmente antes de aplicar las ediciones al espacio de trabajo.

No todos los clientes tienen la capacidad de ejecutar todas las reglas disponibles, de modo que los autores pueden excluir determinadas reglas de la evaluación del cliente. 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 una aplicación de captura de datos 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 para las reglas de tipo validación o cálculo si el parámetro Lote está activado.

  • Activado: la regla se excluirá de la evaluación del cliente.
  • Desactivado: la regla no se excluirá de la evaluación del cliente. Esta es la opción predeterminada.

Nota:

Antes de ArcGIS Pro 2.4, este parámetro estaba etiquetado como Solo servidor.

Boolean
Lote
(Opcional)

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

  • Activado: la evaluación de la regla se ejecutará en modo de lote más adelante, mediante la validación.
  • Desactivado: la 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 en las operaciones de edición que realizan inserción, actualización o borrado. Esta es la opción predeterminada.

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

Boolean
Gravedad
(Opcional)

La gravedad del error.

Se puede seleccionar un valor dentro del rango de 1 a 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 se debe corregir el error para que los datos recopilados sean precisos.

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

Long
Etiquetas
(Opcional)

Un conjunto de etiquetas que identifican la regla (para buscar e indexar) como forma de asignarlas a un requisito funcional en un modelo de datos.

String

Salida derivada

EtiquetaExplicaciónTipo de datos
Regla de atributo agregada

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

Table View

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})
NombreExplicació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 agregará.

  • CALCULATIONLos valores de atributo se rellenarán automáticamente 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.
  • CONSTRAINTLas configuraciones de atributos permitidas se especificarán en 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.
  • VALIDATIONLas entidades existentes se identificarán mediante 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.
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.

  • EDITABLEEl valor del atributo se puede editar. Esta es la opción predeterminada.
  • NONEDITABLEEl valor del atributo no se puede editar.
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 batch está establecido como NOT_BATCH. Los eventos desencadenadores no se aplican a reglas de cálculo que tengan el parámetro batch establecido como BATCH.

  • 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 reglas de tipo validación y restricción. Es opcional en el caso de las reglas de tipo 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 256 caracteres.

Este parámetro es obligatorio en el caso de reglas de tipo validación y restricción. Es opcional en el caso de las reglas de tipo 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 aplicación evaluará la regla localmente antes de aplicar las ediciones al espacio de trabajo.

No todos los clientes tienen la capacidad de ejecutar todas las reglas disponibles, de modo que los autores pueden excluir determinadas reglas de la evaluación del cliente. 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 una aplicación de captura de datos 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 para las reglas de tipo validación o cálculo si el valor del parámetro batch está establecido como BATCH.

  • EXCLUDELa regla se excluirá de la evaluación del cliente.
  • INCLUDELa regla no se excluirá de la evaluación del cliente. 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 ejecutará 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.

Boolean
severity
(Opcional)

La gravedad del error.

Se puede seleccionar un valor dentro del rango de 1 a 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 se debe 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 (para 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.

Table View

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.management.AddAttributeRule(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.management.AddAttributeRule(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 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.management.AddAttributeRule(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