Creazione di Set personalizzati – Named Set


Nella realizzazione di reportistica capita spesso di dover organizzare i dati in maniera diversa dagli attributi o dalle gerarchie di riferimento nel cubo di Analysis Services.
Per questo motivo il inguaggio MDX mette a disposizione la possibilità di creare dei set personalizzati.

Questi set di dati possono essere realizzati direttamente sul cubo e quindi utilizzati sia nei report di Reporting Services che in Excel 2010 oppure possono essere creati direttamente nel “dataset” del report.

Nell’esempio proposto bisogna realizzare un report come quello in figura:


Le voci presenti in colonna  raggruppano gli attributi della data di produzione secondo le voci presenti in Legenda.

Step 1 – Creazione dei Membri calcolati presenti in colonna.

WITH

— IDENTIFICA IL TUTTI I MESI ANTECEDENTI A MESE-1
MEMBER [Periodo Produzione].[Mese].[Oltre M-1] AS
 SUM({[Periodo Produzione].[Mese].&[200001]:STRTOMEMBER(“[Periodo Produzione].[Mese].&[” + CStr(year(Now())) + Right(“000” + Cstr(month(Now())-2),2) + “]”)})

— IDENTIFICA IL MESE PRECEDENTE
MEMBER [Periodo Produzione].[Mese].[M-1] AS
SUM({STRTOMEMBER(“[Periodo Produzione].[Mese].&[” + CStr(year(Now())) + Right(“000” + Cstr(month(Now())-1),2) + “]”)})

— IDENTIFICA IL MESE CORRENTE
MEMBER [Periodo Produzione].[Mese].[MC] AS
 SUM({STRTOMEMBER(“[Periodo Produzione].[Mese].&[” + CStr(year(Now())) + Right(“000” + Cstr(month(Now())),2) + “]”)})

— IDENTIFICA IL MESE PROSSIMO
MEMBER [Periodo Produzione].[Mese].[M+1] AS
SUM({STRTOMEMBER(“[Periodo Produzione].[Mese].&[” + CStr(year(Now())) + Right(“000” + Cstr(month(Now())+1),2) + “]”)})

— IDENTIFICA IL TUTTI I MESI Oltre A MESE+1
MEMBER [Periodo Produzione].[Mese].[Oltre M+1] AS
SUM({STRTOMEMBER(“[Periodo Produzione].[Mese].&[” + CStr(year(Now())) + Right(“000” + Cstr(month(Now())+2),2) + “]”):[Periodo Produzione].[Mese].&[201309]})

Step 2 – Creiamo un membro di ordinamento per l’esposizione nel report.

CASE
 WHEN [Periodo Produzione].[Mese].currentmember = [Periodo Produzione].[Mese].[Oltre M-1] THEN 1
 WHEN [Periodo Produzione].[Mese].currentmember = [Periodo Produzione].[Mese].[M-1] THEN 2
 WHEN [Periodo Produzione].[Mese].currentmember = [Periodo Produzione].[Mese].[MC] THEN 3
 when [Periodo Produzione].[Mese].currentmember = [Periodo Produzione].[Mese].[M+1] THEN 4
 WHEN [Periodo Produzione].[Mese].currentmember = [Periodo Produzione].[Mese].[Oltre M+1] THEN 5
END

Step 3 – Creazione del Named Set

SET MeseProduzione as
{[Oltre M-1], [M-1], [MC], [M+1] , [Oltre M+1]}

Step 4 – Query MDX Finale

SELECT
 NON EMPTY {[Measures].[NomeMisura],OrdinamentoMese} ON COLUMNS,
 NON EMPTY {([DimSocieta].[Societa].[Societa].ALLMEMBERS * MeseProduzione)} ON ROWS
FROM [NomeCubo]

Annunci

, , ,

  1. Lascia un commento

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: