Personalizzazione del datawarehouse (aggiungere nuovi scenari) | |||
In questo capitolo tratteremo la realizzazione di nuovi scenari personalizzati. I passaggi da seguire sono i seguenti: 1. Creazione di un nuovo scenario dal programma 'Tabella Scenari' (6-F). Il codice dello scenario deve essere maggiore di 1000. Il flag 'Elabora' è ininfluente, a meno che non si intenda personalizzare il componente software del datawarehouse in toto. Infatti, gli scenari aggiuntivi predisposti tramite Business da questo programma, non possono e non devono popolare la tabella di transito dwarehe, utilizzata solo dagli scenari standard. 2. Creazione della clausola FROM (SQL) relativa allo scenario creato. Solo per gli scenari personalizzati è possibile (nonché necessario) inserire la clausola FROM. Tale clausola serve per specificare da quali tabelle dovrà pescare i dati il nuovo scenario e per indicare come queste tabelle sono collegate fra loro. Come detto, la clausola FROM non deve includere esplicitamente la tabella dwarehe, tuttavia, per motivi di architettura del software, è necessario includere in questa clausola una tabella costruita ad hoc (a runtime) con alias 'dwarehe' che riporti il codice della ditta. Inoltre, occorre includere un'altra tabella fittizia contenente il codice dello scenario. A tal proposito ci si può riferire alla parte conclusiva delle clausole FROM riportate negli esempi 1 e 2 sottostanti. Alternativamente, se si vuole creare uno scenario personalizzato che estenda uno di quelli standard (con dei campi aggiuntivi presi da altre tabelle) è possibile usare una subquery nella clausola FROM che estragga alcuni dati da dwarehe, fra i quali obbligatoriamente il codice della ditta. In questa query andrà sovrascritto a runtime il codice dello scenario standard con quello dello scenario personalizzato, mentre andrà imposto nella clausola WHERE un filtro sul codice dello scenario standard che si vuole estendere. A tal proposito si consulti l'esempio numero 3 riportato sotto. 3. Inserimento dei fatti e delle dimensioni dal programma 'Gestione Scenari (dimensioni)' (6-G). A tal proposito si possono seguire le indicazioni riportate all'apposita sezione della guida. ESEMPIO 1: PROVVIGIONI In questo esempio costruiremo uno scenario che permette di analizzare la tabella delle provvigioni (provvig), collegando anche le informazioni delle tabelle agenti e anagrafiche.
A questo punto occorre passare alla creazione di fatti e dimensioni dal programma 'Gestione Scenari (dimensioni)', specificando come identificativi di riga valori maggiori di 20000.
|
Fatto questo, siamo pronti per utilizzare il nuovo scenario. Creando una nuova statistica sullo scenario appena predisposto, appariranno le dimensioni configurate.
A questo punto non ci resta che operare normalmente come su un qualsiasi altro scenario, creando e analizzando statistiche.
La query completa (SQL) che integra la clausola FROM specificata, è visibile dal programma 'Analisi Dati - Datawarehouse' -> Tab 4 -> Menu strumenti -> Visualizza query SQL.
ESEMPIO 2: SPESE DI PIEDE
In questo esempio costruiremo uno scenario che permetta di analizzare il totale delle spese di piede (per semplcità consideriamo solo quelle di imballo e di incasso), presenti nella testata dei documenti di magazzino (testmag).
(((testmag JOIN anagra ON testmag.codditt = anagra.codditt AND testmag.tm_conto = anagra.an_conto) LEFT JOIN tabvett ON testmag.codditt = tabvett.codditt AND testmag.tm_vettor = tabvett.tb_codvett) JOIN (SELECT DISTINCT codditt FROM anagra) as dwarehe ON dwarehe.codditt = anagra.codditt) CROSS JOIN (select 3000 as dw_scenario) as scenario
Passiamo poi al programma 'Gestione Scenari (dimensioni)' per aggiungere alcuni fatti e dimensioni allo scenario.
Apriamo il programma 'Analisi dati - Datawarehouse' e creiamo una semplice statistica sul nuovo scenario.
Analizzaimo i dati pivot prodotti da Business.
ESEMPIO 3: ESTENDERE LO SCENARIO CICLO ATTIVO/PASSIVO
In questo esempio costruiremo uno scenario che estende lo scenario standard numero 1 (Ciclo attivo/passivo). Nella fattispecie aggiungeremo le informazioni di testata (da testmag) e quelle relative ai vettori. A differenza dello scenario precedente, questa tecnica permette di utilizzare anche i campi di dwarehe (che vanno però inclusi esplicitamente nella SELECT della subquery). In questo esempio, useremo il Valore Fatturato (dw_valfatt).
(((((select codditt, dw_valfatt, dw_codart, dw_conto, dw_tipork, dw_anno, dw_serie, dw_numdoc, 5001 as dw_scenario FROM dwarehe WHERE dwarehe.dw_scenario = 1) as dwarehe INNER JOIN artico ON dwarehe.dw_codart = artico.ar_codart AND dwarehe.codditt = artico.codditt) INNER JOIN anagra ON dwarehe.dw_conto = anagra.an_conto AND dwarehe.codditt = anagra.codditt) LEFT JOIN artroot ON artico.codditt = artroot.codditt AND artico.ar_codroot = artroot.arr_codroot) LEFT JOIN testmag ON dwarehe.codditt = testmag.codditt AND dwarehe.dw_anno = testmag.tm_anno AND dwarehe.dw_serie = testmag.tm_serie AND dwarehe.dw_numdoc = testmag.tm_numdoc AND dwarehe.dw_tipork = testmag.tm_tipork) LEFT JOIN tabvett ON testmag.codditt = tabvett.codditt AND testmag.tm_vettor = tabvett.tb_codvett
Passiamo poi al programma 'Gestione Scenari (dimensioni)' per aggiungere i fact e le dimensioni allo scenario.
Questo nuovo scenario non popolerà la tabella dwarehe, come avviene per ogni scenario personalizzato. Tuttavia, dato che estende lo scenario standard n. 1 e utilizza nella clausola FROM alcuni dati presenti sulla tabella dwarehe, è necessario eseguire l'estrazione dei dati relativi allo scenario standard n. 1 per visionare nelle statistiche i dati aggiornati.
Apriamo il programma 'Analisi dati - Datawarehouse' e creiamo una semplice statistica sul nuovo scenario.
Analizziamo i dati pivot prodotti da Business.
In questo esempio proposto non è possibile estrarre ad esempio correttamente le spese di trasporto, di imballo e incasso di testmag; questo è dovuto al fatto che la query sulla quale lavora lo scenario parte dalla tabella dwarehe che è in relazione 1 a 1 con movmag: a ogni record di dwarehe corrisponde una riga del documento, in pratica dwarehe potrebbe essere considerata una replica di movmag; se dwarehe è in join con testmag ripete le spese di testata per ogni riga, quindi si otterrebbero ad esempio le spese di trasporto sommate tante volte quante sono le righe del documento.
Per ottenere le spese di testmag correttamente in scenari personalizzati ci sono due modi:
1) NON inserire la tabella dwarehe e far 'partire' la query da testmag, come nell'esempio 2 (modo consigliato)
2) È necessario avere impostato l'opzione per ripartire le spese di piede sul corpo del documento tramite l'opzione di registro di Gestione documenti
BSVEBOLL\OPZIONI\Rip_spesa_acc
BSVEBOLL\OPZIONI\Spese_da_ripartire
In questo modo il valore delle spese viene ripartito sulle righe di movmag nel campo movmag.mm_numpac
Nello scenario personalizzato sarà necessario inserire nella query il join con movmag (nello scenario standard 1 per aggiungere automaticamente il join con movmag c'è un'opzione di registro, BSDWQVDA\OPZIONI\GestJoinMov ma questa opzione lavora solo con lo scenario standard 1), esplicitandola nella query inserita nella clausola from della tabella scenari.
Successivamente occorre aggiungere un nuovo FACT che visualizzi il campo movmag.mm_numpac opportunamente.
Nota finale: per creare nuovi scenari che coinvolgano e popolino direttamente anche la tabella dwarehe si deve procedere alla personalizzazione del componente dell'estrazione dati con l'aggiunta della chiamata da codice ad una nuova store procedure o ad una nuova query, che proceda alla memorizzazione dei dati nella tabella dwarehe, da usare poi in fase di costruzione della clausola FROM, ad esempio:
(dwarehe INNER JOIN artico ON dwarehe.dw_codart = artico.ar_codart AND dwarehe.codditt = artico.codditt) INNER JOIN anagra ON dwarehe.dw_conto = anagra.an_conto AND dwarehe.codditt = anagra.codditt