Operadores Aritméticos y de conjunto

Operadores Aritméticos y de Conjunto

Los operadores aritméticos son los típicos: +, - , * y /

Tanto el operador + como el – y el *, también son operadores de Conjunto.

La + y la - hacen la unión y la diferencia entre dos conjuntos respectivamente, pero el operador * hace el producto entre dos, pero lo hace para todas las posibles combinaciones entre los conjuntos, es decir,

Si por ejemplo, tienes un conjunto {Barcelona, Girona} y otro {2003, 2004, 2005} y quieres hacer el producto se representará de la siguiente manera:

{Barcelona, Girona} * {2003, 2004, 2005}

Y el comportamiento de este operador será:

{(Barcelona, 2003), (Barcelona, 2004), (Barcelona, 2005), (Girona, 2003), (Girona, 2004), (Girona, 2005)}

Ejemplos de operadores aritméticos:

Operador +

Se quiere unir la ciudad Barcelona con la ciudad Girona usando el operador + la expresión MDX sería:

[Dim Cliente].[Ciudad].&[Barcelona] + {[Dim Cliente].[Ciudad].&[Girona]

El resultado de esta expresión es:

{[Dim Cliente].[Ciudad].&[Barcelona],[Dim Cliente].[Ciudad].&[Girona]}

Para poder ver como se usaría este operador en una Query usamos un conjunto con nombre dentro de la clausula WITH:

with set [Barcelona-Girona] as '{[Dim Cliente].[Ciudad].&[Barcelona]} +
                                {[Dim Cliente].[Ciudad].&[Girona]}'

select [Measures].[Importe Pedido] on columns,
       [Barcelona-Girona] on rows
from [Analysis DW]

 

   

 

Operador *

Se quiere hacer una combinación entre dos conjuntos, por ejemplo, las zonas Barcelona y Girona con las categorías de producto hardware y software:

{[Zona Pedido].[Nombre Zona].&[Barcelones], [Zona Pedido].[Nombre Zona].&[Girones]} *
{[Dim Producto].[Categoria Producto].[Categoria].&[1],[Dim Producto].[Categoria Producto].[Categoria].&[2]}

El resultado de esta expresión sería:

{  ([Zona Pedido].[Nombre Zona].&[Barcelones], [Dim Producto].[Categoria Producto].[Categoria].&[1]),
   ([Zona Pedido].[Nombre Zona].&[Barcelones], [Dim Producto].[Categoria Producto].[Categoria].&[2]),
   ([Zona Pedido].[Nombre Zona].&[Girones], [Dim Producto].[Categoria Producto].[Categoria].&[1]),
   ([Zona Pedido].[Nombre Zona].&[Girones], [Dim Producto].[Categoria Producto].[Categoria].&[2]) }

 

Para poder ver cómo se usaría este operador en una Query usamos un conjunto con nombre dentro de la clausula WITH:

with set [zonas-Productos] as
'{[Zona Pedido].[Nombre Zona].&[Barcelones],
  [Zona Pedido].[Nombre Zona].&[Girones]} *
 {[Dim Producto].[Categoria Producto].[Categoria].&[1],
  [Dim Producto].[Categoria Producto].[Categoria].&[2]}'

select [zonas-Productos] on columns
from [Analysis DW]

 

Resultado:

 

En este resultado podemos observar cómo se han hecho todas las posibles combinaciones. Si le ponemos la medida importe veremos cómo por cada combinación, en este caso zona-pedido, se calcula el importe correspondiente.

Para ello, la Query sería:

with set [zonas-Productos] as
  '{[Zona Pedido].[Nombre Zona].&[Barcelones],
    [Zona Pedido].[Nombre Zona].&[Girones]} *
   {[Dim Producto].[Categoria Producto].[Categoria].&[1],
    [Dim Producto].[Categoria Producto].[Categoria].&[2]}'

select [zonas-Productos] on columns,
       [Measures].[Importe Pedido] on rows
from [Analysis DW]

 

Resultado: