Fórmulas personalizadas para campos de datos en informes visuales
A veces, puede que necesite añadir campos a un gráfico basándose en sus propias fórmulas personalizadas. Nuestro editor de informes visuales dispone de un editor de fórmulas integrado que permite crear fórmulas basadas en diversas operaciones matemáticas, de texto y de fechas. Esta guía le ayudará a descubrir las posibilidades de las fórmulas personalizadas, para que pueda llevar sus informes al siguiente nivel.
Además de las fórmulas personalizadas, Targetprocess dispone de otras funciones que permiten realizar cálculos personalizados. Más información: Cálculos personalizados y expresiones de fórmula.
Editor de fórmulas
Una fórmula o cálculo personalizado puede ser configurado por el propietario del informe o por el administrador de su sistema.
Para personalizar los ajustes, abra el editor Configurar informe. En la sección Campos de datos de la parte izquierda, pulse el botón Añadir campo o fórmula situado en la parte inferior del catálogo de campos. Elija el campo que desee de la lista predefinida o cambie a la pestaña Fórmula e introduzca una nueva fórmula personalizada.

La ventana emergente del editor de fórmulas contiene los siguientes controles:
- Nombre de la fórmula (obligatorio): El nombre de su fórmula
- Código de la fórmula (obligatorio): El texto de su fórmula
- Pestaña Fórmulas predefinidas : Una lista de plantillas de fórmulas seleccionables
- Su pestaña Fórmulas : Una lista de las fórmulas que ha utilizado anteriormente
Nota: El proceso de creación de fórmulas debe completarse pulsando el botón Guardar. De lo contrario, la fórmula creada no se guardará.
Busque una fórmula en el catálogo de campos y haga clic en ella para editarla:

Tipos de datos disponibles y funciones básicas
Existen cuatro tipos de datos primitivos que pueden utilizarse en las fórmulas: número, fecha, texto y booleano.
Para las fórmulas numéricas se dispone de las siguientes funciones num éricas : "+" para sumar, "-" para restar, "*" para multiplicar y "/" para dividir.
Por ejemplo, el progreso de una Historia de Usuario puede calcularse con: IIF(Esfuerzo > 0, 100 * ((Esfuerzo - EffortToDo )/Esfuerzo), 0)
Los valores de texto pueden convertirse en números utilizando la función NÚMERO. Por ejemplo, NUMBER("541") nos dará 541.
Están disponibles las siguientes funciones de fecha :
- TODAY puede utilizarse para obtener la fecha actual
- con "+" o "-" se pueden sumar o restar días a la fecha operativa. Por ejemplo HOY - 2 días
- Los valores de texto pueden convertirse en una fecha utilizando la función FECHA. Por ejemplo DATE(01 enero 2006) o DATE("1 enero 2016")
- DÍAS se puede utilizar para comparar fechas por días. Por ejemplo: IIF( EndDate, DAYS( EndDate - CreateDate ) mostrará cuántos días estuvo este fallo en estado "Abierto".
Los valores de texto pueden concatenarse utilizando "+". Los números y las fechas pueden convertirse en texto utilizando la función TEXTO. El formato deseado (lista de formatos de fecha y lista de formatos numéricos ) puede indicarse como segundo parámetro. Por ejemplo TEXT(ID) + '-' + TEXT( CreateDate, 'MMM aaaa') + '-' + TEXT(Esfuerzo, 'n').
Los operadores y funciones booleanos básicos son AND, NOT, OR, "=" y "!=". La comparación de valores de números, fechas y texto mediante ">=", "<=", ">", "<", "=", "!=", "IN" (sólo tipo texto) y "CONTAINS"(sólo tipo texto) da un valor booleano y puede utilizarse para una expresión booleana. Ejemplo: NOT(( EntityState.IsInitial OR EntityState.IsFinal ) AND TimeSpent > 0 AND NAME CONTAINS "LOGIN").
Uso de autocompletar para añadir fórmulas
Sitúe el cursor en la zona del código de la fórmula. Aparecerá automáticamente una ventana emergente de autocompletar. Empieza a escribir una fórmula o un nombre para encontrar los campos y funciones adecuados. Comprender y tener un conocimiento sólido de las Entidades y las Relaciones será muy útil para crear fórmulas.

Puede deshacerse de las sugerencias de autocompletar pulsando el botón "ESC". Pulsa "CTRL" + "Espacio" o "ALT" + "Espacio" para volver a mostrar las sugerencias.
Funciones condicionales
Las funciones condicionales son bastante útiles para crear el tipo de fórmulas avanzadas en las que el valor deseado depende de algunas condiciones.
- IIF (<expresión booleana>, <valor cuando la condición es positiva>, <valor cuando la condición es negativa>). Ejemplo: IIF('Urgente' en Etiquetas, 'Urgente', 'No urgente')
- IFNONE (<campo o expresión>, <valor por defecto>) se utiliza cuando se requiere proporcionar algún valor por defecto para un campo que no existe. Por ejemplo: IFNONE(Nombre, 'Ninguno') mostrará el Nombre del campo, si existe. En caso contrario, devolverá "Ninguno"
CASE WHEN puede utilizarse para múltiples afecciones. Por ejemplo:
CASE
WHEN EntityState.IsInitial THEN "Abierto"
WHEN EntityState.IsFinal THEN "Hecho"
ELSE "En curso"
end
Funciones de coloración
La coloración se puede utilizar para asignar colores a los campos o a los valores de los campos.
Asignar color a un campo
Se puede asignar un color específico a un campo. Ayuda a dividir los datos en los gráficos combinados que muestran juntos varios campos de las mismas entidades. El formato es el siguiente:
COLOR(FieldName, ColorName)Por ejemplo, nos gustaría mostrar las entidades agrupadas por Fecha de creación y Fecha de finalización. Ayuda a comparar el número de entidades nuevas frente a las realizadas semanalmente. Nuestro objetivo es resaltar las entidades realizadas con color verde. Para hacerlo posible vamos a definir un nuevo campo llamado Completed On con la siguiente fórmula:
COLOR(EndDate,
Green)Y luego ponga el campo Finalizado el en el eje horizontal del gráfico en lugar de Fecha de finalización. Obtendremos algo como esto:
Asignar colores a los valores de un campo
Se pueden definir colores específicos para los valores de los campos de texto. Digamos que tiene un campo llamado FieldName con los valores Valor 1, Valor 2, Valor 3. Para asignar diferentes colores a estos valores se utiliza una fórmula con el siguiente formato:
COLOR(FieldName, "Value 1": ColorName1, "Value 2": ColorName2, "Value 3":
ColorName3, ...)Digamos que queremos crear un gráfico que muestre el número de entidades creadas semanalmente. En el mismo gráfico nos gustaría aplicar colores según el estado actual de una entidad. Nos gustaría mostrar las entidades del estado de Done en verde y las entidades de cualquier otro estado en rojo. Así es como puede definirse la fórmula.
En primer lugar, dividiremos todos los estados posibles en dos grupos. El estado Hecho tiene el atributo Final. Daremos el alias "Completado" a todos los estados finales y "Abierto" a todos los demás utilizando el operador IIF:
IIF(EntityState.IsFinal, "Completed", "Open")En segundo lugar, pondremos el resultado del cálculo en la regla de coloreado condicional. Definiremos un nuevo campo Se ha completado con una fórmula personalizada:
COLOR(IIF(EntityState.IsFinal, "Completed",
"Open"), "Completed": Green, "Open": Red)Y tercero, pondremos este campo en el eje COLOR del gráfico. He aquí el resultado:
Una fórmula bastante similar ayuda a resaltar entidades de diferentes tipos con los colores que usted elija. Defina un nuevo campo Tipo de color con la siguiente fórmula:
Color(EntityType.Name,
"UserStory":Green, "Task":Blue, "Bug":Red, "Request":Yellow)Colores disponibles
La lista completa de colores disponibles y compatibles está disponible aquí: Nombres de palabras clave de color reconocidos para el formato SVG
Campos personalizados
Casi todos los campos personalizados (excepto Entidad, Texto enriquecido y URL) aparecen en el catálogo de campos, por lo que probablemente no necesite crear fórmulas para utilizarlos.
Los campos personalizados se tratan como uno de los siguientes tipos: Fecha, Texto, Número o MultiText. El valor del campo personalizado introducido puede recuperarse utilizando estas funciones correspondientes: CustomValues.Text, CustomValues.Number, CustomValues.Date, o CustomValues.MultiText
Puede utilizar campos personalizados de texto en sentencias condicionales. Por ejemplo:
IIF(CustomValues.Text("My") CONTAINS
"Urgent", "Urgent", "Can be postponed")Agregaciones para colecciones internas de entidadesLas agregaciones pueden aplicarse a colecciones de entidades hijas cuando se requiere calcular un campo por suma, promedio, máximo, mínimo o recuento. La agregación calculada puede filtrarse mediante la cláusula where. Hay muchos ejemplos disponibles en la sección de fórmulas predefinidas. A continuación puede ver algunas de ellas:
IIF(Feature.Bugs.Count() > 0, 100 * (Bugs.Count() / Feature.Bugs.Count()),
0)- se puede utilizar cuando se desea calcular el porcentaje de errores en la historia en comparación con todos los errores de características
IIF(Bugs.Count() > 0, 100 * (Bugs.Count(EntityState.IsFinal) /
Bugs.Count()), 100)- es el porcentaje de errores cerrados en la historia de usuario, característica o proyecto
IIF(Project.Features.Where(EntityState.IsFinal).Sum(Effort) > 0, 100 *
(Effort/Project.Features.Where(EntityState.IsFinal).Sum(Effort)), 0)- Porcentaje de esfuerzo de la función en comparación con el esfuerzo de todas las funciones completadas
Selección de campos de colecciones de entidades internasLos campos de las colecciones de entidades internas pueden seleccionarse para participar en la visualización. Los valores de los campos de la colección pueden recuperarse mediante Select y filtrarse mediante Where. Ejemplos:
Todos los nombres Epic únicos de un Proyecto pueden recuperarse utilizando:
Epics.Select('#' + TEXT(Id) + '
' + Name)Puede recuperar las etiquetas de los errores por separado utilizando:
TagObjects.Select(Name)Ayuda a construir una distribución de Bugs por cada etiqueta de esta manera:
Ejemplo avanzado: tomar nombre de bloqueadores vinculados para una entidad:
RAW_TEXT(MasterRelations.Where(RelationType.Name =
"Blocker").Select(Master.Name))Casos adicionalesUtilice funciones especiales para crear informes utilizando las fórmulas compatibles con versiones anteriores de informes gráficos.
RAW_TEXT (<expresión de texto DSL del proceso de destino>) para fórmulas de texto o booleanas. Por ejemplo:
RAW_TEXT("Test")Elimina las etiquetas HTML de las cadenas con formato de texto enriquecido (descripciones, campos personalizados de texto enriquecido):
RAW_TEXT(Description.ToPlainText) RAW_TEXT(CustomValues.Text("My Rich Text
Field").ToPlainText)RAW_NUMBER (<expresión numérica del proceso destino>) para fórmulas numéricas. Por ejemplo:RAW_NUMBER(Int32.Parse("45"))
RAW_DATE (<expresión de fecha del proceso objetivo>) para utilizar fórmulas de texto o booleanas. Por ejemplo:RAW_DATE(DateTime.Parse("3
September"))
RAW_ARRAY_TEXT (<expresión de matriz de texto del proceso objetivo>) para utilizar fórmulas de texto o booleanas. Por ejemplo:
RAW_ARRAY_TEXT(AssignedEfforts.Select(Assignable.Name))