Referencias a campos, medidas y variables
Una expresión puede contener referencias a campos, variables y medidas.
En la mayoría de los casos, las expresiones son agregaciones, es decir, cálculos que potencialmente pueden abarcar varios registros. Esto significa que todas las referencias de un campo en una expresión deben estar incluidas en una función de agregación. Si no se utiliza ninguna función de agregación, se utiliza la función Only() en su lugar.
Cuando se utiliza el nombre de una medida dentro de una expresión, se interpreta como un alias de la medida. Esto le permite reutilizar una entidad ya definida. Solo puede reutilizar las etiquetas de medidas maestras y medidas de gráfico de esta manera. Sin embargo, la medida del gráfico debe estar en el mismo gráfico. No puede utilizar etiquetas de medidas en otros gráficos.
Puede definir una medida de forma recursiva. En otras palabras, la medida puede contener una referencia a sí misma. No obstante, solo debe hacer esto en gráficos con pocas filas. El rendimiento se degrada si el gráfico tiene muchas filas. Si hay cientos de filas, la definición recursiva dejará de funcionar por completo.
Una variable puede utilizarse de dos maneras diferentes: en una referencia directa o en una expansión de signo dólar. Si utiliza una referencia directa, el valor de la variable se usará en el cálculo. Si utiliza una expansión de signo dólar, toda la expansión de signo dólar será reemplazada por el valor de la variable antes de analizar la expresión. Por lo tanto, los dos métodos diferentes pueden devolver resultados diferentes.
Cómo se interpretan los nombres
Un nombre dentro de una expresión puede ser una referencia a un campo, una variable, una función o una medida. Dependiendo de la situación, el nombre se interpreta de manera diferente.
Ejemplo:
La cadena XXX representa un campo, una variable, una función o una medida. XXX se interpretará como cualquiera de ellos dependiendo de cómo creemos la expresión.
Expresión | XXX interpretado como |
---|---|
XXX | medida, variable o campo |
$(XXX) | variable |
Count(XXX) | campo o variable |
XXX() | función |
No debe usar el mismo nombre para un campo y una variable (o una medida). Pero si lo hace y hay ambigüedad, se usa el siguiente orden de precedencia:
-
Si el nombre se encuentra dentro de una función de agregación, un campo tiene prioridad sobre una variable.
-
Si el nombre se encuentra fuera de una función de agregación, una etiqueta de medida tiene prioridad sobre un nombre de variable, que a su vez tiene prioridad sobre un nombre de campo.
Reglas de expresiones
Las siguientes reglas son de aplicación en las expresiones de gráficos:
-
Si una referencia de campo no está incluida en una función de agregación, el motor usa la función Only().
-
Todas las expresiones devuelven un número y/o una cadena, lo que sea más apropiado.
-
Las funciones lógicas y los operadores devuelven 0 para False, -1 para True. Las conversiones de número a cadena y de cadena a número están implícitas.
-
Los operadores lógicos y las funciones interpretan 0 como False y todo lo demás como True.
-
Las expresiones que no se puedan evaluar correctamente, por ejemplo, como resultado de parámetros o funciones que son incorrectos, devuelven NULL.