Intersect()
Se utiliza el método de navegación Intersect() cuando se desea hacer referencia a los nodos que son el resultado de la intersección de dos o más métodos de navegación de nodos.
Esto se ejemplifica a continuación.
La imagen ilustra, con Q3 como el nodo actual, la intersección de los métodos de navegación AllPrevious() y Parent(). Los nodos encontrados por ambos métodos son Q1-Q3, 2019.
Con independencia del trimestre del nodo actual, la intersección dará como resultado un período que se inicia con Q1 y finaliza con el trimestre que es el nodo actual. Esto significa que un caso de uso típico para el método Intersect() es un cálculo hasta la fecha (consulte el ejemplo a continuación).
Ejemplo de cálculo hasta la fecha (YTD)
El gráfico de barras muestra la suma trimestral de ventas durante el periodo 2016-2018.
Vamos a suponer que está interesado en las sumas acumulativas para cada uno de los años. Si utiliza el método de navegación AllPrevious(), sumará todos los meses anteriores. Pero en Q1 2017, desea comenzar de nuevo la suma y no tener en cuenta la suma de los trimestres del año anterior, 2016.
Por ejemplo, la suma acumulativa Q3 2017 debería ser 976 (317+307+352). Para hacer referencia solo a estas tres barras, el método Intersect() es útil. El método AllPrevious() incluiría Q1-Q4 2016 y Q1-Q3 2017 en la suma, y el método Parent() incluiría los cuatro trimestres de 2017. La intersección de estos dos modos de navegación devolvería exactamente las barras en cuestión.
Aplique la expresión siguiente, donde Intersect() combina los dos métodos, y vea el resultado para, por ejemplo, Q3 2017:
Ejemplo de uso de Intersect() cuando los datos se dividen en más de un eje
Cada vez que segmenta los datos utilizando varios ejes, los datos se dividen en segmentos cada vez más pequeños, representados progresivamente por más indicadores. Cuando aplique una expresión, funcionará en el segmento más pequeño de datos. En el ejemplo anterior, los datos se dividen únicamente por el eje de categorías. Pero, ¿qué sucede si se divide, por ejemplo, también por el eje de color? Un ejemplo servirá para mostrarlo.
El gráfico de barras siguiente muestra estadísticas de supervivencia de la catástrofe del Titanic. Los datos se dividen únicamente por el eje de categorías.
La expresión de la imagen siguiente le permite mostrar esta información mediante un porcentaje, en lugar de números absolutos. Consulte también el tema All().
Suponga que desea distinguir las barras que representan a las personas que sobrevivieron, configurando el eje de color del modo correspondiente, como se muestra a continuación.
Sin embargo, tenga en cuenta que, al hacerlo, ¡los porcentajes cambian! Las barras rojas y azules, respectivamente, suman el 100 %, en lugar de las cuatro barras. Esto sucede porque la expresión no tiene en cuenta que el eje de color divide los datos en segmentos aún más pequeños. La parte ...OVER (All([Axis.X]))... ignora la segmentación en el eje de categorías, pero no la segmentación en el eje de color.
Sin embargo, puede mantener los colores y agregar todas las barras al 100 % utilizando el método Intersect() como se muestra a continuación.
Las partes All([Axis.X]) y All([Axis.Color]) de la expresión implican que se debe ignorar la segmentación en cada uno de estos ejes. El método Intersect() combina estas dos partes. En consecuencia, el valor de cada barra se dividirá por la suma de todas las barras.