Misura Derivata: esempio dei biglietti CostoMedioBiglietto (CMB) calcolato come INCASSO/NUM_BIG. CodVolo ALIT1 ALIT1 ALIT2 DATA GEN1 GEN2 GEN2 Compagnia ALITALIA ALITALIA DATA GEN1 GEN2 Compagnia ALITALIA Mese GEN INCA SSO NUM_ BIG 20 2 40 4 30 6 SUM SUM INCA SSO 20 70 CMB 10 10 5 AVG NUM_ BIG 2 10 CMB 10 7,5 INCA SSO NUM_ BIG CMB 90 12 8,33 Implementazione in Analysis Services 1. 2. 3. Si definisce la misura derivata CMB_Base Definisco la misura di supporto Conteggio, aggregata con COUNT Definisco CMB calcolata come CMB_Base/Conteggio 1 Misura Derivata: esempio dei biglietti Implementazione in Analysis Services 1. Si definisce la misura derivata CMB_Base come INCASSO/NUM_BIG. Importante: CMB_BASE deve essere definita come real (ad esempio double) in modo da fare la divisione tra reali e non tra interi: 2. Definisco la misura di supporto Conteggio, aggregata con COUNT 2 Misura Derivata: esempio dei biglietti 3. Definisco CMB calcolata come CMB_Base/Conteggio Per visualizzare anche le cifre decimali, impostare il format string come in figura In questo modo la visualizzazione del cubo risulterà essere 3 Misura Derivata: esempio dei biglietti Come facciamo a verificare che il risultato sia corretto? Si può procedere valutando il calcolo in alcuni casi, ma la verifica teorica effettiva è quella di calcolare la misura direttamente sugli eventi primari nel DM! Nell’esempio, raggruppiamo sullo stato di arrivo e calcoliamo AVG(INCASSO/NUM_BIGLIETTI) con la seguente query SQL SELECT ARRIVO.STATO AS ARRIVAA, AVG(INCASSO/NUM_BIGLIETTI) AS CMB FROM BIGLIETTI INNER JOIN VOLO ON BIGLIETTI.COD_VOLO = VOLO.CODVOLO INNER JOIN AEROPORTO ARRIVO ON VOLO.A = ARRIVO.SIGLA GROUP BY ARRIVO.STATO Il risultato che si ottiene è IMPORTANTE: nella tabella BIGLIETTI occorre definire gli attributi INCASSO e NUM_BIGLIETTI come decimal e non come integer altrimenti il rapporto INCASSO/NUM_BIGLIETTI in AGV(INCASSO/NUM_BIGLIETTI) viene calcolato come divisione tra interi e quindi viene approssimato. 4