share
Code Block |
---|
([group]/[group,root])*100
|
partial share (según la anidación en filas)
Code Block |
---|
([group]/[group, group.parent])*100
|
share de la primera columna
Code Block |
---|
(Valor(0)/[group.leaf(0),root])*100
|
Suma de las apariciones de un elemento dado de dimensión "DIMENSION"
Code Block |
---|
@Sum_i(Etiqueta([this.leaf(i)],"DIMENSION")=="PP"? [this.leaf(i) ]: 0)
|
...
Notar que en este caso el nombre de la dimensión correspondiente a las medidas se debe referenciar como "<measures>":
Code Block |
---|
@Sum_i(Label([this.Etiqueta(i)],"<measures>")=="Units Sold" ? [this.leaf(i)]: 0)
|
Ejemplo:
En esta vista se tienen dos columnas calculadas: Unidades y Costo.
Donde Unidades se calcula como:
Code Block |
---|
@Sum_i(Etiqueta([this.leaf(i)],"<measures>")=="Unidades" ? [this.leaf(i)]: 0)
|
Costo se calcula como:
Code Block |
---|
@Sum_i(Etiqueta([this.leaf(i)],"<measures>")=="Costo" ? [this.leaf(i)]: 0)
|
En algunos casos no se requiere sumar las ocurrencias de un elemento, sino comprobar que se encuentre en la vista y en función de ello efectuar cierto cálculo:
Code Block |
---|
Etiqueta([this.leaf(0)], "En plazo")=="SI" ? (["SI"]/[this])*100 : 0
|
...
Supongamos que tenemos una vista donde vemos los productos vendidos en los últimos 3 años. Los productos estan en las filas y años como columnas. Queremos saber, cuántos productos se vendieron en cada año. La expresión predefinida "Cantidad" no sirve puesto que cuenta también aquellas productos que tuvieron 0 ventas en un año determinado. La siguiente fórmula resuelve el cálculo (como fila calculada):
Code Block |
---|
@Sum_i([this.leaf(i)]==0?0:1)
|
...
En el caso de expresiones definidas por el usuario, consideremos el siguiente ejemplo:
La expresión Expr es una suma del elemento Mountain Bikes + Route Bikes. Al excluir el cualquiera de los dos elementos (columnas) el valor de la expresión Expr no se ve afectado.
...
Supongamos que tenemos una vista en la cual se calcula el promedio de unidades vendidas, pero algunos de los valores de la medida son ceros, por ejemplo:
La suma de las unidades es 5+6+51=62 por lo que su promedio sin considerar los valores cero sería 62/3=21. Como se está tomando en cuenta una fila más con valor cero el promedio difiere 62/4=16:
Para evitar esto y que nuestro cálculo excluya los ceros, más allá que se muestren o no los valores en la vista, definimos una expresión "PromSinValorCero" con la siguiente sintaxis:
Code Block |
---|
count=@Sum_i(Valor(i)!=0?1:0); count==0?0:([this]/count)
|
Luego de aplicar la fórmula antes definida obtenemos como resultado el promedio correcto:
Referenciar subrangos en una expresión
...