Operadores

Operadores Meritxell 2 Octubre, 2014 - 10:54

Operadores Aritméticos y de conjunto

Operadores Aritméticos y de conjunto Meritxell 2 Octubre, 2014 - 11:18

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:

 

Operadores de Comparación

Operadores de Comparación Meritxell 2 Octubre, 2014 - 11:16

Los operadores de comparación de MDX son los habituales: <, <=, >, >=, =, y <>.

Estos operadores comparan dos expresiones MDX y devuelven TRUE o FALSE.

Un ejemplo sería:

Count ([Dim Cliente].[Zonas Clientes].members) > 3

Esto nos diría si el numero de miembros de esta jerarquía es mayor que 3 o no.

 

Operadores lógicos

Operadores lógicos Meritxell 2 Octubre, 2014 - 11:19

Los operadores lógicos en MDX son: AND, OR, XOR, NOT, and IS.

Estos operadores usan dos expresiones MDX como argumentos y devuelven TRUE o FALSE.

 

Operadores Especiales MDX

Operadores Especiales MDX Meritxell 2 Octubre, 2014 - 11:22

Los operadores especiales de MDX son: '{}', comas y ':'

El operador {} permite encapsular una celda o un conjunto de celdas. Si es una única celda el operador es opcional, porque MDX lo pone por defecto.

El operador ‘,’ se usa para separar los diferentes miembros dentro de un conjunto.

Por ejemplo:

{(Barcelona, 2003), (Barcelona, 2004), (Gerona, 2003), (Gerona, 2004)}

El operador ':' se usa para definir rangos. Por tanto, cuando pongamos dos miembros no consecutivos de un conjunto separados por este operador significa que cogera todos los miembros desde el miembro antes del operador hasta el miembro de después del operador.

Ejemplo:

{[Dim Cliente].[Ciudad].&[Barcelona]:[Dim Cliente].[Ciudad].&[Vilafranca]}

Esto nos daria como resultado todas las ciudades que hay entre Barcelona y Vilafranca (ambas incluídas) dentro del cubo.

Para comprobarlo hacemos una Query:

with set [Ciudades] as
  '{[Dim Cliente].[Ciudad].&[Barcelona]:[Dim Cliente].[Ciudad].&[Vilafranca]}'

select ciudades on columns
from [Analysis DW]

 

Resultado: