Operadores Aritméticos y de conjunto
Operadores Aritméticos y de conjunto Meritxell 2 Octubre, 2014 - 11:18Operadores 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: