Compartir por


Columnas de fórmula, calculadas y consolidadas usando código

Las columnas de fórmulas, calculadas y consolidadas liberan al usuario de tener que realizar cálculos manualmente y le permiten centrarse en su trabajo. Los administradores del sistema pueden definir un campo para que contenga el valor de muchos cálculos comunes sin necesidad de trabajar con un desarrollador. Los programadores también pueden usar las capacidades de la plataforma para realizar estos cálculos en vez de con código.

Este artículo se centra en cómo se definen estas columnas en las definiciones de columnas y las API para interactuar con las columnas acumuladas. No admitimos la definición de fórmulas con código. Debe utilizar Power Apps para configurar las fórmulas para el tipo de columna respectivo. Más información:

Elementos y características comunes

Las columnas de fórmulas, calculadas y consolidadas comparten algunos elementos y características comunes, como:

  • Son de solo lectura.
  • No son específicos del usuario.
    El cálculo se realiza mediante una cuenta de usuario del sistema, por lo que los valores se pueden basar en registros que de otro modo el usuario no tiene privilegios para ver, como columnas que tienen seguridad de nivel de campo habilitada.

Todas las columnas que se heredan de AttributeMetadata tienen una propiedad SourceType que puede contener los valores que se muestran en la tabla siguiente.

valor Description
Null No es un tipo válido de columna para ser una columna calculada, de fórmulas o consolidada.
0 Una sola columna. La columna no se define como columna calculada, de fórmulas o consolidada.
1 Columna calculada
2 Columna consolidada
3 Columna de fórmula

Las columnas de fórmulas, calculadas y consolidadas se basan en tipos de columnas existentes que se heredan de AttributeMetadata. Las siguientes tablas muestran los tipos de columnas disponibles y qué tipos de fuentes son compatibles:

Type Tipos de origen compatibles
BooleanAttributeMetadata Fórmula, calculado y consolidado
DateTimeAttributeMetadata Fórmula, calculado y consolidado
DecimalAttributeMetadata Fórmula, calculado y consolidado
StringAttributeMetadata Fórmula, calculado y consolidado
IntegerAttributeMetadata Solo calculado y consolidado
MoneyAttributeMetadata Solo calculado y consolidado
PicklistAttributeMetadata Solo calculado y consolidado

Cada uno de estos tipos de columnas tiene las siguientes propiedades para permitir fórmulas, cálculos y consolidaciones.

Property Definición
FormulaDefinition Contiene la definición de la fórmula usada para realizar el cálculo o la consolidación. Las columnas de fórmula se definen mediante YAML. Las columnas calculadas y consolidadas se definen usando XAML. La única forma admitida de cambiar este valor es a través del editor de Power Apps.
SourceTypeMask El valor de máscara de bits de esta propiedad de solo lectura describe los tipos de orígenes que se usan en la fórmula de la columna o si la fórmula de una columna no es válida.

- 0: Undefined. El valor predeterminado para las columnas simples y consolidadas.
- 1: Simple. La columna calculada o de fórmula hace referencia a una columna en el mismo registro.
- 2: Related. La columna de fórmula o calculada hace referencia a una columna en un registro relacionado.
- 4: Logical. La columna de fórmula calculada hace referencia a una columna en el mismo registro que se almacena en otra tabla de base de datos. Más información: Columnas lógicas
- 8: Calculated. La columna de fórmula o calculada hace referencia a otra fórmula o columna calculada.
- 16: Rollup. La columna calculada o de fórmula hace referencia a una columna consolidada.
- 32: Invalid. La columna calculada, de fórmula o consolidada no es válida.
Normalmente, una columna no es válida cuando hace referencia a una columna que ya no existe.

Nota: Una o varias de estas condiciones pueden ser verdaderas para columnas calculadas o consolidadas. Dado que este es un valor de máscara de bits, puede resultarle útil usar la Enumeración de SourceTypeMasks al realizar operaciones bit a bit.

Columnas calculadas y de fórmula

Las columnas calculadas y de fórmula se calculan en tiempo real cuando se recuperan. Las columnas calculadas y de fórmula pueden estar compuestos con diferentes tipos de datos. Por ejemplo, una columna calculada entera puede hacer referencia a valores de columnas decimales o de divisa.

Solo los valores de las columnas calculadas están disponibles en la canalización de complementos de recuperación. La imagen posterior de actualización o creación de registro de una tabla contiene el valor de atributo calculado en la fase 40. Más información: Canalización de ejecución de eventos e Imágenes de la entidad

Limitaciones

Las columnas de fórmula y calculadas tienen las siguientes limitaciones:

Columnas de fórmula

  • Las columnas de fórmula no tienen valores cuando un usuario con el cliente móvil está sin conexión.
  • Las propiedades de las definiciones de las columnas MaxValue y MinValue no se pueden establecer en columnas de fórmula. Más información: Guías y limitaciones

Columnas calculadas

No puede usar valores en columnas calculadas en un valor lógico en la misma tabla para ordenar los datos devueltos por una consulta. Aunque la consulta pueda especificar que los resultados se deben ordenar mediante una columna calculada, se ignora la dirección del orden y no se lanza un error. Si la columna calculada solo hace referencia a valores simples en el mismo registro, la ordenación funciona normalmente. Puede determinar los orígenes usados en una columna calculada usando la propiedad SourceTypeMask en las definiciones de columnas.

  • Solo se pueden usar en una columna calculada las columnas de una tabla primaria inmediata.
  • Las consultas guardadas, los gráficos y las visualizaciones pueden tener un máximo de 50 columnas calculadas únicas.
  • Las columnas calculadas pueden hacer referencia a otras columnas calculadas en su fórmula, pero no pueden hacer referencia a sí mismos.
  • Las columnas calculadas no tienen valores cuando un usuario con el ciente móvil está sin conexión.
  • Las propiedades de las definiciones de las columnas MaxValue y MinValue no se pueden establecer en columnas calculadas

Columnas consolidadas

Puesto que las columnas consolidadas permanecen en la base de datos, pueden utilizarse para filtrar u ordenar del mismo modo que las columnas normales. Cualquier tipo de proceso o de complemento usa el valor calculada más recientemente de la columna. Los trabajos del sistema calculan los valores de columna consolidada asincrónicamente. Los administradores establecen cuándo se ejecuta un trabajo o se pausa el trabajo. De forma predeterminada, cada columna se actualiza cada hora.

Cuando una columna consolidada se crea o se actualiza, se programa un trabajo de Cálculo masivo de campos consolidadas para ejecutarse en 12 horas. El retraso de 12 horas está pensado para realizar esta operación de uso intensivo de recursos en un momento que afecte lo menos posible a los usuarios. Una vez que se complete el trabajo, la próxima vez que se programe para ejecutarse será dentro de 10 años. Si hay algún problema con el cálculo, este se transmite con el trabajo del sistema. Busque el trabajo del sistema para encontrar los errores de los campos consolidados. Para buscar el trabajo del sistema, consulte Ver trabajos consolidados.

Sugerencia

Como programador que prueba una solución en un entorno de desarrollo es posible que no desee esperar 12 horas. Puede hacer que suceda más rápidamente. En la lista Trabajos del sistema, use la vista Trabajos del sistema periódicos para filtrar la lista y busque el trabajo Cálculo masivo de campos consolidadas. Con el trabajo seleccionado, use Más acciones > Posponer y establezca una hora anterior para que se produzca la acción.

Si desea desencadenar la creación de un nuevo trabajo Cálculo masivo de campos consolidadas, recupere el AttributeMetadata para la columna consolidada mediante RetrieveAttributeRequest y use UpdateAttributeRequest para actualizar la columna sin realizar ningún cambio real.

El trabajo Cálculo masivo de campos consolidadas se produce inmediatamente cuando una solución que contiene una columna consolidada se importe. Esta es otra razón para instalar soluciones solo durante momentos que no afectarán negativamente a los usuarios.

Cada columna consolidada de una tabla también incluirá dos columnas de apoyo para la columna consolidada:

  • <attribute SchemaName>_Date: DateTime: cuándo se calculó por última vez el informe.
  • <attribute SchemaName> _State: Integer: estado del cálculo consolidada. Más información: Configuración de estados consolidadas

Valores de estado consolidada

El estado de un cálculo de columna consolidada está disponible en la correspondiente columna <attribute SchemaName>_State y en la propiedad CalculateRollupFieldResponse.FieldState . Los valores que indican el estado se muestran en la tabla siguiente.

Valor de estado Descripción
0 NotCalculated: el valor de columna aún está por calcular.
1 Calculated: el valor de la columna se ha calculada de acuerdo con la última hora de actualización en la columna <attribute SchemaName>_Date.
2 OverflowError: el cálculo de valor de columna produjo error de desbordamiento.
3 OtherError: el cálculo de valor de columna ha fallado debido a un error interno, la próxima ejecución del trabajo de cálculo probablemente lo corregirá.
4 RetryLimitExceeded: el cálculo del valor de columna produjo un error porque el número máximo de reintentos de calcular el valor se ha excedido, debido probablemente al número elevado de conflictos de simultaneidad y bloqueo.
5 HierarchicalRecursionLimitReached: el cálculo del valor de columna produjo un error porque se alcanzó el límite máximo de la profundidad de la jerarquía para el cálculo.
6 LoopDetected: el cálculo del valor de columna produjo error porque se detectó un bucle recursivo en la jerarquía del registro.

Recuperar inmediatamente un valor de columna consolidada calculada

Las columnas consolidadas admiten un mensaje de CalculateRollupField que los desarrolladores pueden usar para calcular un valor de columna consolidada a petición. Para el SDK, use la clase CalculateRollupFieldRequest y para la API web use la función CalculateRollupField

Este mensaje es una operación sincrónica solo para la columna identificada en la solicitud. Si el valor del registro se incluye como parte de otras columnas consolidadas, los valores de esas columnas no toman en consideración el posible cambio de valor producido por la llamada a este método hasta que se produzcan los trabajos asincrónicos programados regularmente que realizan esos cálculos.

Limitaciones

  • Las columnas consolidadas no se pueden usar como un evento de flujo de trabajo o condición de espera. Estas columnas no provocan que el evento desencadene flujos de trabajo.
  • Las columnas ModifiedBy y ModifiedOn de la tabla no se actualizan cuando se actualiza la columna consolidada.
  • Se pueden definir un máximo de 100 columnas consolidadas dentro de una organización. Cada tabla no puede tener más de 10 columnas consolidadas.
  • Una fórmula de columna consolidada no puede hacer referencia a otra columna consolidada.
  • Una fórmula de columna consolidada no puede hacer referencia a una columna calculada o de fórmula compleja. Solo las columnas calculadas o de fórmula que hacen referencia a columnas únicas en el mismo registro pueden usarse con las consolidaciones.
  • Una fórmula de columna consolidada no puede incluir registros en relaciones de varios a varios (N:N). Puede incluir solo registros en relaciones de uno a varios (1:N).
  • Las fórmulas de columna consolidada no podrán usar relaciones de uno a varios (1:N) con la tabla ActivityPointer o ActivityParty.

Enumeración de SourceTypeMasks

La propiedad SourceTypeMask para las columnas que permiten columnas calculadas y consolidadas contiene un valor de máscara de bits. Para extraer la información del valor, ayuda tener una enumeración al realizar operaciones bit a bit. Use la siguiente enumeración de SourceTypeMasks al comparar SourceTypeMask property value.

 public enum SourceTypeMasks  
{  
    /// <summary>  
    /// Undefined: 0 - The default value for simple and rollup columns.  
    /// </summary>  
    Undefined = 0,  
    /// <summary>  
    /// Simple: 1 - The calculated or formula column refers to a column in the same record.  
    /// </summary>  
    Simple = 1,  
    /// <summary>  
    /// Related: 2 - The calculated or formula column refers to a column in a related record.  
    /// </summary>  
    Related = 2,  
    /// <summary>  
    /// Logical: 4 - The calculated or formula column refers to a logical column.  
    /// </summary>  
    Logical = 4,  
    /// <summary>  
    /// Calculated: 8 - The calculated or formula column refers to another calculated column.  
    /// </summary>  
    Calculated = 8,  
    /// <summary>  
    /// Rollup: 16 - The calculated or formula column refers a rollup column.   
    /// </summary>  
    Rollup = 16,  
    /// <summary>  
    /// Invalid: 32 - The calculated,formula, or rollup column is invalid.  
    /// Typically this would be where a field refers to a column that no longer exists.   
    /// </summary>  
    Invalid = 32  
}  

Consulte también

Definiciones de columnas
Trabajar con columnas de fórmula (versión preliminar)
Definir columnas calculadas
Definir columnas consolidadas
Ejemplo: registros consolidados relacionados con un registro específico

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).