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]

, , ,

  1. Lascia un commento

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Follow

Get every new post delivered to your Inbox.