MultiDimensional eXpressions
# MultiDimensional eXpressions

MultiDimensional eXpressions è un linguaggio informatico usato nelle interrogazioni di tipo OLAP - On-Line Analytical Processing per scorrere dimensionalmente il Cubo OLAP del Data Mart in un Data Warehouse.

Sintatticamente somiglia al linguaggio SQL(linguaggio adottato per le interrogazioni in database relazionali), ma ha una semantica diversa. In alcuni aspetti risulta essere verboso e ridondante, tuttavia è possibile omettere nelle espressioni regolari alcune parti significative, la cui interpretazione è basata su regole di default.

MDX non è un linguaggio di interrogazione in senso stretto: permette di calcolare, a partire da un cubo, un dataset che ha una struttura simile a un cubo.

## Definizioni

Dimensioni e attributi dimensionali si chiamano livelli. I valori delle dimensioni e degli attributi dimensionali si dicono membri (per denotare un membro le [ ] sono facoltative).

Una tupla è una ennupla di membri denotati tra parentesi ( ), la cui tupla è costituita da un membro per cui la sua dimensione individua un evento primario (in altri termini è una tupla corrispondente al pattern primario).

Un evento secondario è individuato da una tupla corrispondente a un pattern secondario (nell'esempio sottostante corrispondente al pattern: {Data, Prodotto}):

## Esempio query MDX

L'esempio corrente mostra l'uso dell'istruzione SELECT. Questa query ritorna il risultato contenuto tra gli importi del membro "Vendite Negozio" contenuti nel 2002 e 2003 nello stato della California.

## Differenze con un linguaggio per interrogazione di un database relazionale

* La clausula WHERE non prevede operatori logici espliciti, l'unico operatore è l'AND definito ponendo in virgola più membri(Esempio: { [Date].[2002], [Date].[2003] } ON ROWS)
* Le condizioni possono essere specificate alternativamente alla clausula where, direttamente nella select
* Specifichiamo lo scorrimento multidimensionale con "ON COLUMNS" e "ON ROWS".
