Visualizzazione post con etichetta Web Intelligence. Mostra tutti i post
Visualizzazione post con etichetta Web Intelligence. Mostra tutti i post

martedì 2 luglio 2019

Grafico dinamico

In una dashboard forse vi è capitato di avere la possibilità di scegliere quale dimensione o metrica coinvolgere in un grafico, tramite una semplice tendina o un elenco di opzioni, senza dover modificare la struttura del grafico; si tratta di una soluzione interessante perchè rende la dashboard ancora più interattiva e flessibile per l'utilizzatore finale.
SAP Analytics Cloud permette questa possibilità in modo nativo, ma anche in Web Intelligence è possibile ottenere lo stesso risultato, ecco la soluzione:

1. Si creano due oggetti di tipo dimensione che vengono usati per creare due controlli di input
2. Si creano i due controlli di input che usano i due oggetti creati al punto 1 e si aggiungono dei valori a piacere
3. Si creano due oggetti, uno di tipo dimensione e l'altro di tipo metrica, oggetti che useremo nel grafico e che verificano la scelta fatta dall'utente con i controlli di input
4. Si crea un grafico che usa i due oggetti creati al punto 3
5. Si modificano i parametri del grafico in modo che i titoli degli assi X e Y siano dinamici

Ecco i dettagli:

Premessa:
per questa soluzione ho creato una piccola base dati in excel che contiene i seguenti dati, ho quindi creato una query con Web Intelligence che estrae tutti i dati.





1. Oggetti per i controlli:
Creiamo un oggetto di tipo dimensione, che si chiama "Dimensione", la sua formula sarà
="Classe"
Useremo questo oggetto in un controllo di input al passo 2

Creiamo un secondo oggetto di tipo dimensione, che si chiama "Metrica", la sua formula sarà
="Quantità"
Useremo questo oggetto in un controllo di input al passo 2





2. Controlli di input:
Creiamo un controllo di input, di tipo "Pulsanti di opzione", lo chiamiamo "Dimensione" e lo facciamo puntare all'oggetto "Dimensione" creato al punto 1, personalizziamo l'elenco di valori aggiungendo al valore già disponibile "Classe", anche l'elemento "Stato", elemento che dovremo digitare a mano e portare a destra. Togliamo l'opzione su "Consenti selezione di tutti i valori".

Creiamo un controllo di input, di tipo "Pulsanti di opzione", lo chiamiamo "Metrica" e lo facciamo puntare all'oggetto "Metrica" creato al punto 1, personalizziamo l'elenco di valori aggiungendo al valore già disponibile "Quantità", anche l'elemento "Valore", elemento che dovremo digitare a mano e portare a destra. Togliamo l'opzione su "Consenti selezione di tutti i valori".




Ecco il risultato finale




3. Oggetti per il grafico
Creiamo un oggetto di tipo dimensione, che chiameremo "Dimensione grafico" e che avrà la seguente formula
=Se([Dimensione]="Classe";[Classe];[Stato])
Da notare che nel mio esempio i controlli di input hanno solo due valori, quindi la formula riportata sopra non deve verificare altre sclete nel ramo no, ma se vi fossero, basta annidare un altro SE() nel ramo NO del primo SE().

Creiamo un oggetto di tipo indicatore, che chiameremo "Metrica grafico" e che avrà la seguente formula
=Se([Metrica]="Quantità";[Quantità];[Valore])
Da notare che nel mio esempio i controlli di input hanno solo due valori, quindi la formula riportata sopra non deve verificare altre sclete nel ramo no, ma se vi fossero, basta annidare un altro SE() nel ramo NO del primo SE().





4. Grafico
Creiamo un grafico a barre che utilizzi gli oggetti "Dimensione grafico" e "Metrica grafico" creati al punto 3, togliamo la legenda.




5. Assi del grafico
Modifichiamo i parametri del grafico, in modo che il Titolo dell'Asse Categoria sia di Tipo personalizzato e contenga la seguente formula nell'etichetta titolo
=[Dimensione]

Modifichiamo i parametri del grafico, in modo che il Titolo dell'Asse Valore sia di Tipo personalizzato e contenga la seguente formula nell'etichetta titolo
=[Metrica]






Il risultato finale sarà in grafcico che l'utilizzatore finale potrà governare tramite i controlli di input riportati a sinistra, dove potrà scegliere la dimensione da usare sull'asse X e la metrica da usare sull'asse Y.




lunedì 1 luglio 2019

Distribuzione di frequenze

Quando eseguiamo un conteggio e lo decliniamo per una dimensione molto dettagliata, otteniamo una lista poco leggibile, spesso è quindi necessario aggregarla.

Per esempio se abbiamo il conteggio dei ticket aperti per ogni cliente, otteniamo una lista di clienti e quindi il numero di ticket aperti al fianco di ogni cliente; questo tipo di lista non è sintetica, potremmo quindi necessitare di una distribuzione di frequenze, ovvero sapere quanti clienti hanno 3 ticket, quanti ne hanno 2 e quanti ne hanno 1, perchè la lista di dettaglio non ci serve, mentre la distribuzione è importante.

La seguente soluzione mostra come fare con Web Intelligence, con pochi click.

Il report che ho usato conta i ticket aperti per singolo cliente come anticipato sopra; ordinando per Z-A, ci sono clienti che ne hanno 3… 2  e 1, ma quanti sono quelli con 3 ticket, con 2 ticket e con 1 ticket?



Bottone destro sulla colonna del conteggio e quindi click su “inserisci interruzione”.


Sostituire la formula che webi mette come subtotale, mettendo la funzione min().


Inserire il conteggio della colonna dei clienti.

Attivare la funzione "Struttura" (Fold in inglese) dal menù Analisi / Interagisci e richiudere il ramo 1 per nascondere il dettaglio (il ramo si richiude tutto premendo 1, sul fondo dello schermo).

Giocando poi sulle proprietà dell’interruzione si possono togliere le intestazioni ripetute, e poi a valle andando sulle proprietà della tabella si può ripristinare l’intestazione generale di tabella (che Web Intelligence ha tolto quando abbiamo inserito l’interruzione).

domenica 17 marzo 2019

Canale YouTube

Ho creato un canale YouTube dedicato ai fondamentali di Business Objects e Web Intelligence.
Iscrivetevi mi raccomando!

Ecco il link:
Canale YouTube di Massimo Agosta

martedì 5 marzo 2019

Confronto tra Web Intelligence ed Excel

Mi capita spesso per lavoro di dover paragonare Web Intelligence ad Excel, perchè spesso Excel viene preso come punto di riferimento dagli utenti; per far comprendere meglio le potenzialità di Web Intelligence mi trovo quindi a dover elencare le funzionalità che Web Intelligence include, per sottolineare che alcune sono in sovrapposizione con Excel, mentre altre sono tipiche di uno strumento di Business Intelligence e quindi velocizzano il lavoro rispetto al famoso tool di casa Microsoft.

Ecco le funzionalità che secondo il mio personale parere vale la pena evidenziare, divise tra funzionalità di base e avanzate.

Base:
  • Gestione di tabelle e grafici
  • Pivot table
  • Formattazione di testo, bordi, sfondi, allineamento, testo a capo, ecc
  • Formattazione dei testi, date e numeri e formati personalizzati
  • Subtotali (Interruzioni)
  • Raggruppa e separa (Fold / Unfold)
  • Paginazione (Sezioni)
  • Calcoli semplici
  • Calcoli complessi
  • Formule
  • Variabili
  • Utilizzo di funzioni avanzate (matematiche, gestione delle date e dei testi, ecc)
  • Correttore delle formule errate
  • Help contestuale
  • Formattazione condizionata (Alert)
  • Best / Wrost (Classifica)
  • Ordinamento A-Z, Z-A e personalizzato
  • Annulla e Ripeti operazioni
  • Trova
  • Stampa
  • Filtri nella query
  • Filtri nello sheet
  • Filtri nell'oggetto
  • Gestione di diversi fogli (multi sheet)
  • Filtri semplici, complessi e tramite tendina
  • Condizioni dinamiche nelle query (Prompt)
  • Copia / Incolla degli oggetti (celle singole, Tabelle e Grafici)
  • Copia formato
  • Copia come testo o come immagine per incollare ovunque
  • Trasformazione tabella in grafico e viceversa
  • Template prestabiliti
  • Inserimento immagini e logo
  • Aggiornamento automatico all'apertura
  • Descrizione dei report al salvataggio con testo libero e parole chiave
  • Posizionamento automatico degli oggetti (Posizione relativa)
  • Indici (Abbinamento)
  • Riferimento puntuale a particolari celle di valori
  • Commenti
  • Export in PDF (con gestione dell'indice come nel report)
  • Export in Excel (con gestione dei grafici come grafici di Excel)
  • Export in CSV e Testo
  • Salva il report in locale o sul server
  • Accesso ai report sul server via web browser
  • Creazione di nuovi report via web browser
  • Descrizione degli oggetti contestuale
Avanzate:
  • Navigazione tra i dati su tabelle e grafici (Drill down, Drill up e Drill Across)
  • Fotografia statica di un report durante la navigazione (Snapshot durante il Drill)
  • Formule con operatori avanzati che consentono di aggregare i dati
  • Aggregazioni
  • Sottoquery
  • Query di Query
  • Query combinate (union, minus e intersect)
  • Gestione della priorità delle condizioni nella query con logica AND e OR
  • Gestione della priorità delle filtri nei report o negli oggetti con logica AND e OR
  • Utilizzo senza essere connessi al server (Off line)
  • Link tra report differenti (Report Linking)
  • Interazione con controlli di input come tendine, option box e check box
  • Confronto cambiamento dei dati tra diversi aggiornamenti (Track data changes)
  • Schedulazione automatica (oraria, giornaliera, settimanale, mensile,  a evento, su calendario prestabilito, ecc)
  • Distribuzione massiva di un report dove ogni ricevente vede solo i propri dati (Report bursting)
  • Conversione  di un oggetto del report in servizio Web
  • Query verso fonti personali come file Excel, file CSV o servizi Web (Multy query)
  • Query verso molteplici universi  (Multy query)
  • Sincronia delle query tramite gli attributi (dimensioni) in comune
  • Rimappatura di un report da un universo all’altro per riutilizzare il layout
  • Condivisione di componenti tra report diversi
Nota: per questo post la versione di riferimento è la BI 4.2 SP6

lunedì 4 marzo 2019

Unione di query tramite variabili

Una delle novità più interessanti introdotte dalla versione BI 4.2 SP3 di Web Intelligence è certamente la possibilità di unire (sincronizzare) le query utilizzando anche le variabili.
Questa funzione è interessante per chi sviluppa con BO perchè fino ad oggi si potevano sincronizzare le query solo attraverso le dimensioni di analisi disponibili nelle diverse query (fornitori di dati); introducendo invece la possibiltià di farlo anche attraverso le variabili del report, si avrà l'opportunità di sincronizzare i dati anche con fonti di dati che non possono avere tra loro la stessa chiave di dettaglio.

Faccio un esempio utilizzando l'universo di demo e-Fashion.

  • Se abbiamo una query che estrae dall'universo i dati di vendita per Anno e Negozio, dove l'anno e il negozio sono due dimensioni di analisi, avremo nel report una tabella con l'anno e il negozio su due colonne.
  • Se vogliamo confrontare i risultati di vendita ottenuti tramite l'universo con i dati di budget che magari ci arrivano da un file esterno, tale file dovrà fornire il budget per anno e negozio, esponendo queste due informazioni su due colonne diverse.
  • I file esterni non sempre sono modificabili o comunque per farlo dovremo dedicare del tempo per fare le opportune trasformazioni sui dati del file esterno, in questo caso il file del budget; se il file dovesse arrivarci con l'anno e il negozio concatenati, dovremo adeguarlo in modo che l'anno e il negozio siano su due colonne diverse, perchè Web Intelligence per fare uso dell'unione, necessita di due colonne distinte.
  • Grazie alla nuova funzionalità introdotta potremo invece creare una nuova variabile nel nostro report Web Intelligence, che concateni l'anno e il negozio della query che punta all'universo e quindi potremo unire le due query (quella che punta all'universo e quella che punta al file del budget), utilizzando la variabile appena creata come elemento dell'unione.
Esempio di file dedicato al budget, dove l'anno e il negozio sono concatenati.


Selezione delle dimensioni da usare per l'unione, una delle due è una variabile creata nel report, che si occupa di concatenare l'anno e il negozio dalla query da universo.
Da notare il fatto che il budget viene esposto nella tabella a destra, ma si tratta del totale generale del budget.


Risultato finale a valle dell'unione.
Da notare che a valle dell'unione, la colonna del Budget si popola correttamente.


L'esempio potrebbe sembrare stupido, ma questa innovazione apre nuovi scenari di sincronizzazione tra diverse query, perchè sarà possibile beneficiare delle variabili e delle formule che contengono, per ottenere una sincronizzazione a valle delle variabili, mentre prima era per forza necessario, per ottenere una sincronizzazione, far sviluppare nell'universo determinate logiche.

martedì 8 gennaio 2019

Somma se contiene

In Web Intelligence, grazie ad una semplice formula, è possibile aggregare (sommare) un metrica, ma solo se una determinata dimensione di analisi contiene un particolare valore.

Per esempio è possibile sommare il numero di chiamate di un cliente, ma solo se una dimensione di analisi contiene la parola "pippo".

Per risolvere questo problema, suggerisco di creare due variabili:

1. creare una variabile che dice se la dimensione di analisi che vogliamo controllare (la chiamerò attributo1) contiene o meno il testo che stiamo cercando (ad esempio la parola "pippo", scritta in qualsiasi punto nei valori della dimensione controllata).
Chiameremo la variabile "attributo pippo" e avrà la seguente formula:

=Confronta([attributo1];"*pippo*")

Questa variabile si valorizza con 1 quando la ricerca viene soddisfatta, cioè quando la parola "pippo" viene trovata da qualche parte nel testo dei valori della dimensione attributo1.

Nota importante: nel testo da ricercare si possono usare i caratteri jolly, cioè gli asterischi (li ho evidenziati in rosso), per dire che la parola da ricercare può essere scritta in qualsiasi punto, all'interno della stringa di testo dei valori della dimensione di analisi. Se non si mettono gli asterischi, il testo ricercato e il valore della dimensione di analisi dovranno corrispondere perfettamente.

2. creare una variabile che valorizzi la metrica filtrando la variabile che abbiamo creato al passo precedente =1 quindi la nostra nuova variabile, che possiamo chiamare "numero chiamate per attributo pippo", avrà la seguente formula:

=[Nr calls] Dove ([attributo pippo]=1)


La variabile al punto 1, che sostanzialmente fa la ricerca del testo, può essere anche gestita nel seguente modo, se non sappiamo come sarà scritto il testo da cercare, cioè se non sappiamo se viene scritto in maiuscolo o in minuscolo:

=Confronta(maiuscola([attributo1]);"*PIPPO*")

lunedì 10 dicembre 2018

Riferimenti puntuali alle celle

Una delle nuove funzionalità più interessanti introdotte dalla versione BI 4.2 SP3 di Web Intelligence è certamente la possibilità di creare dei riferimenti puntuali alle celle.

Si tratta di una funzione interessante perchè in alcune situazioni in Web Intelligence è possibile creare dei totali al termine di una tabella con un semplice click destro del mouse, ma per riportare la medesima informazione in una piccola tabella aggregata, si possono incontrare alcune difficoltà, perchè il microcubo del report può contenere molte informazioni di dettaglio, e se queste sono "unite" con informazioni di altre query, potrebbe non essere semplice riuscire a replicare, con una formula specifica scritta in una tabella di sintesi, lo stesso risultato che si è ottenuto in una tabella di dettaglio e calcolata con una semplice somma.

In alcuni report complessi, contenenti diverse query sincronizzate, dove ho realizzato formule complesse, ho incontrato alcune difficoltà quando ho dovuto riprodurre la stessa informazione in una tabella di sintesi, soprattutto se dovevo poi utilizzarla insieme ad altre formule in forma aggregata.

I riferimenti puntuali alle celle ci possono aiutare in queste situazioni: selezionando una particolare cella di una tabella è possibile creare un riferimento diretto a quella cella, ovvero al dato che essa contiene per le dimensioni che la caratterizzano e i rispettivi valori che hanno.
La funzionalità è disponibile con un semplice click destro del mouse dopo aver selezionato la cella per cui vogliamo creare un riferimento puntuale.
Si apre un box (vedi immagine) che ci da la possibilità di dare un nome logico al riferimento, oppure associare la cella selezionata ad un riferimento esistente (cioè cambiare il riferimento esistente in modo che punti alla cella che abbiamo selezionato).
Il riferimento sarà poi disponibile a sinistra nella zona dedicata agli oggetti del report, nella nuova sezione "References"; ovviamente, da qui in avanti, potremo creare delle formule o variabili che utilizzano i riferimenti appena creati, per richiamare quindi il valore a cui puntano i riferimenti ed utilizzarli comodamente per fare dei calcoli (come ad esempio nell'immagine dove si fa una somma in una cella isolata in alto a destra)



Nell'immagine riportata, nel momento in cui i dati non forniscono più delle occorrenze per l'anno 2014 e gli Store name "e-Fashion Huston 5th" ed "e-Fashion Colorado Springs", i riferimenti non forniranno più i valori selezionati. I riferimenti torneranno a fornire dei valori al ripresentarsi dell'anno 2014 e dei due Store name sopra citati.

lunedì 3 dicembre 2018

Web Intelligence Masker

L’ultima versione del SAP Business Objects BI Support Tool include una nuova funzionalità molto interessante, se consideriamo le recenti novità introdotte dal GDPR, sto parlando del “Web Intelligence Masker”.
Questo tool permette di modificare alcuni contenuti di un report, cioè sostituisce i dati con del testo casuale e quindi camuffa o maschera i contenuti, permettendoci di condividere il risultato finale anche con società esterne ad esempio, impedendo quindi la visualizzazione di dati riservati.
Il tool si collega al repository di BO, ci permette di selezionare il report (vedi immagine) e tramite alcuni semplici parametri da anche la possibilità di mascherare tutti i dati del report se necessario, per esporre sostanzialmente solo la struttura dello stesso, oppure per esempio, lasciare visibili tutti i numeri, in questo modo (vedi seconda immagine) il report diventa comunque generico per chi lo riceve, perché i numeri anche se reali, non sono legati ad informazioni aziendali utili.



Come funziona? È semplice, il Web Intelligence Masker esporta in un file excel il contenuto del report che abbiamo scelto, pubblica nel repository nella stessa cartella del report originale il file excel, ne maschera i contenuti e poi crea un nuovo report Web Intelligence identico al nostro e rimappa la query puntando al file excel.


giovedì 15 novembre 2018

I commenti in Web Intelligence

Dalla versione BI 4.2 SP3 sono disponibili i commenti, che in buona sostanza sono molto simili ai commenti alle celle che si possono inserire in Excel.
Questa funzione in WebI si applica anche ai grafici.

Una nota particolare rispetto al mondo SAP BO che va sottolineata: il documento Web Intelligence deve essere pubblicato nel repository e la funzionalità deve essere abilitata lato server, quindi non è detto che alla fine sia sempre utilizzabile in tutti gli ambienti.

venerdì 23 febbraio 2018

Roadmap Web Intelligence 4.2

Le novità previste da SAP nella roadmap di Web Intelligence 4.2, per il 2018 e il 2019, sono molto interessanti, ecco il link al PDF visibile tramite account SAP.

Roadmap Web Intelligence 4.2

lunedì 5 febbraio 2018

Creare una variabile per gestire l'IP warming

Nei progetti di Campaign Management una cosa fondamentale da gestire quando si apre il canale di invio via Email è quella dell'invio iniziale delle Email, rispettando una crescita uniforme dei volumi, per evitare che il gestore del domino delle mail (ad esempio Gmail) possa confondere il flusso di Email come SPAM e blocchi quindi i messaggi.
In gergo tecnico questa attività si chiama "ip warming"; al seguente link si può leggere una spiegazione molto utile.
https://sendgrid.com/blog/what-is-and-what-isnt-an-ip-warm-up/

Nell'ipotesi di poter estrarre con BO dal nostro DWH i contatti Email dei nostri clienti, la seguente soluzione mostra come è possibile creare dei pacchetti di N indirizzi, per ogni dominio, per "scaldare"quindi il nostro IP al cospetto del gestore della casella di posta destinataria, ovvero il dominio (ad esempio Gmail), ed evitare di essere bloccati. Il report quindi assegna ogni cliente (e relativa Email) ad un pacchetto, ed i pacchetti di indirizzi si potranno usare in momenti diversi, a parità di dominio, per non destare sospetti nel gestore di quel dominio.

Nel mio report di esempio abbiamo:
  • un campo chiave che caratterizza il Cliente, si chiama GUID
  • l'indirizzo Email preferito del cliente
  • il dominio che corrisponde alla sua Email preferita (utile per raggruppare tutti i destinatari che hanno lo stesso dominio)
  • il peso del dominio, ovvero quanti Clienti hanno lo stesso dominio Email (utile per calcolare i pacchetti sulla base del numero di singole Email che devono comporre un singolo pacchetto)
  • il progressivo nel dominio, ovvero un contatore progressivo all'interno del medesimo dominio (utile per capire quando si deve passare al pacchetto successivo)
  • la dimensione del singolo cluster, ovvero il numero di Email massimo che si vogliono inserire nel singolo pacchetto, si tratta di un parametro fisso che possiamo inserire a mano nel report
  • il Cluster di invio, cioè in quale pacchetto di invio deve andare quel Cliente

Di seguito ci sono le formule che ho utilizzato in BO per popolare la tabella (vedi immagini sotto); ecco alcuni aspetti fondamentali della soluzione:

  1. le seguenti formule devono essere sempre indicatori
  2. abbiamo il Peso Dominio, ovvero il calcolo del peso totale del dominio; si deve inserire nella tabella un ordinamento per questa informazione, per avere quindi i Guid (chiave) del medesimo dominio tutti vicini e permettere al Progressivo nel Dominio (che poi è un conteggio cumulato posizionale) di lavorare bene, soprattutto perché ha una rottura sul dominio nella formula, se i dati sono ordinati male in tabella, non funziona
  3. il calcolo del pregressivo nel dominio funziona tramite un conteggio cumulato
Formule:

Dominio mail
=Inferiore(Destra([Prefered Contact Mail];(Lunghezza([Prefered Contact Mail])-Pos([Prefered Contact Mail];"@")+1)))

Cluster Invio
=InteroSup([Progressivo-su-dominio]/[Dimensione-Cluster]) 

Dimensione Singolo Cluster (modificabile a piacere)
=20000

Peso Dominio
=Conteggio([Prefered Contact Mail]) In ([Dominio mail])

Progressivo nel Domionio
=ConteggioCumulato([Prefered Contact Mail];FORCE_COL;([Dominio mail]))

Immagine 1
Ecco come si presenta la tabella all'inizio del report.

Immagine 2
Ecco come si presenta la tabella al cambio tra un dominio e l'altro, si vede il conteggio a destra dell'ultimo pacchetto di invio e quindi il primo pacchetto di invio per il nuovo dominio.


venerdì 17 novembre 2017

Copia di una condizione da una query all'altra

Piccola nota interessante: in Web Intelligence Rich Client è possibile copiare una condizione di una query in un'altra query. Per farlo si deve trascinare la condizione sul tab della query di destinazione e attendere alcuni istanti, e poi, mantenendo il tasto del mouse premuto, trascinarla nella zona delle condizioni della query di destinazione.


venerdì 3 novembre 2017

Confronto insiemistico tra due query

Con Web Intelligence a volte abbiamo la necessità di confrontare i contenuti di due query e vogliamo capire quali righe arrivano da una query e quali dall'altra.


Nell’esempio riportato sotto abbiamo due query, la prima estrae alcuni ID disponibili anche nella seconda query, ma per entrambe le query vi sono identificativi che non sono presenti in entrambi gli insiemi (verde e rosso).

In una tabella guidata dall’oggetto «id unito» Web Intelligence espone automaticamente l’unione degli insiemi; nessun filtro viene applicato alla tabella.



Creando due variabili che contano, per ogni query, gli ID, usando l’opzione «Tutto» per costringere il conteggio a contare in modo non distinto, si ottiene un flag che consente di capire se l’identificativo è presente in una query o in entrambe.



Filtrando opportunamente i due flag sarà possibile ottenere

1.l’intersezione dei due insiemi

2.la differenza A-B

3.La differenza B-A (il filtro che si vede in alto nell'immagine si riferisce alla tabella 3)




mercoledì 14 giugno 2017

Giorni tra, senza sabati e domeniche

Trovo questa soluzione molto utile e geniale, permette di calcolare i giorni tra due date, escludendo i sabati e le domeniche, senza avere una tabella calendario a supporto.

L’ho tradotta in italiano per testarla


=(Tronca(GiorniTra([Start Date];[End Date]) / 7 ; 0) * 5) + InNumero(Sottostringa("1234555123444512333451222345111234500123450123455"; ((NumeroGiornoDellaSettimana([Start Date])-1)*7)+Resto(GiorniTra([Start Date];[End Date]);7)+1 ; 1))

Ecco la formula originale in inglese

=(Truncate(DaysBetween([Start Date]; [End Date]) / 7 ; 0) * 5) + ToNumber(Substr("1234555123444512333451222345111234500123450123455"; ((DayNumberOfWeek([Start Date])-1)*7)+Mod(DaysBetween([Start Date];[End Date]);7)+1 ; 1))

Ecco dove ho trovato questa soluzione, seguendo questo link è possibile leggere tutta la spiegazione dettagliata, passo per passo:

venerdì 18 aprile 2014

Media rolling degli ultimi X mesi

Ho trovato questa soluzione molto interessante, quindi la condivido così com'è aggiungendo solo una spiegazione in italiano: al seguente link è possibile capire come ottenere la media di un valore numerico per gli ultimi 12 mesi rolling, per esempio.
Immaginiamo di avere una tabella che per ogni mese ci fornisce i nostri ricavi, ma che al fianco di ogni mese vogliamo vedere la media delle revenue per gli ultimi 12 mesi precedenti ad ogni mese.
La soluzione proposta al seguente link fa al caso vostro, si basa su due funzioni, cioè la sommacumulata() e la funzione indietro() o precedente().
La soluzione spiega anche come usare i filtri per nascondere le righe inutili e quindi utilizza la funzione nessunfiltro() per fare in modo che la formula alla base della soluzione funzioni comunque, anche se la tabella ha un filtro che serve a mascherare le righe inutili

Link Soluzione: media ultimi mesi rolling


giovedì 5 dicembre 2013

Differenza tra periodi

Tramite l'operatore "Dove" abbiamo la possibilità di calcolare la differenza (delta) tra informazioni disponibili su differenti periodi temporali, ad esempio tra differenti settimane; il calcolo può essere comodamente posizionato in una colonna di "footer", per intenderci la colonna che Web Intelligence aggiunge quando chiediamo una somma in una tabella a campi incrociati, evitando quindi di avere invece la differenza all'interno del corpo e vederla quindi ripetuta per ogni periodo temporale.

Nell'esempio che segue abbiamo un report che mostra una tabella a campi incrociati che espone due settimane a confronto, le due settimane messe a confronto sono pilotate da un apposito filtro sulla tabella. Nella colonna di totale dove di solito Web Intelligence inserisce le sue somme automatiche ho sostituito la formula della somma con la seguente formula:

=([Nr Id 00 Risorsa Final] Dove ([Data riferimento]=Max([Data riferimento]) In Blocco)) - ([Nr Id 00 Risorsa Final] Dove ([Data riferimento]=Min([Data riferimento]) In Blocco))

In questo modo il filtro derivante dall'operatore Dove si focalizzerà sulla prima settimana selezionata dal filtro sulla tabella e sulla seconda e quindi calcolerà in modo semplice e veloce la differenza; questa soluzione consente di modificare velocemente il filtro, ad esempio con un controllo di input, ed ottenere sempre la differenza.


mercoledì 27 novembre 2013

Novità introdotte da Web Intelligence 4.1 rispetto alla 3.1

Elenco di seguito le novità più interessanti introdotte da Web Intelligence 4.1 rispetto alla versione 3.1, in molti probabilmente stanno aspettando che la main release 4.x diventi stabile, e quindi probabilmente partono dalla versione 3.1.

  • interfaccia di Web Intelligence Rich Client completamente ridisegnata
  • nuove forme grafiche come: grafico a colonne, mappa calore, mappa di testo, grafico mono barra, waterfall
  • export/import di file excel da 1.000.000 di righe (.XLSX)
  • fit to one page
  • la possibilità di nascondere le colonne di una tabella o una tabella intera, anche sulla base di una formula (esempio: la tabella si nasconde al verificarsi di alune condizioni)
  • nuovo data management dove è possibile vedere velocemente il numero di righe estratte, la durata delle query, duplicare le query, unire le query o cancellarle; selezionando gli oggetti di una query si possono vedere i valori distinti oppure facendo doppio click su una query si può vedere un set tidotto di righe in modalità datasheet
  • gestione dei Template: import ed export di fogli di stile CSS utile per creare un solo template di colori e font e riutilizzarlo in tutti i report
  • semplificata e diretta gestione degli ordinamenti
  • migliorata la cestione della CPU, Web Intelligence Rich Client quando chiude un documento consete già l'apertura di un nuovo report perchè prosegue in backgroud
  • migliorate integrazioni con SAP, è possibile lanciare una query BEx
  • uso dei drill con il tasto (+) vicino all'elemento nel caso di universi OLAP
  • merge delle dimensioni con bottone destro sulla dimensione per velocizzare il merge
  • dall'editor delle formule ora è possibile accedere ai possibili valori di una dimensione, senza doverli digitare a mano
  • si può costringere la query a cancellare gli oggetti non usati nel report
  • link tra una tabella e un grafico: selezionando degli elementi in una tabella si causano dei filtri in un grafico sulla stessa pagina
  • nuovo motore dedicato ai grafici che migliorata la gestione, molte cose si possono modificare velocemente con bottone destro, migliorata la gestione dei colori
  • freeze colums e rows durante la modalità di lettura dei dati
  • copia/incolla degli oggetti e delle query tra documenti diversi
  • preview di un set di dati mentre si prepara la query; i valori possono essere trasformati in condizioni della query tramite bottone destro del mouse
  • nel pannello delle query la funzionalità di ricerca degli oggetti ora filtra la lista degli oggetti dell'universo mostrando solo gli oggetti che corrispondono alla ricerca
  • nuove formule con funzioni che consentono la gestione dei Set e dei Livelli nelle dimensioni nel caso di universi OLAP
  • possibilità di raggruppare i dati in modo semplice e veloce, evitando le riclassifiche nel DB o nell’universo
  • possibilità di salvare nella query le risposte date ad un prompt
  • possibilità di copiare il nome, il tipo e la descrizione di un oggetto per incollari ad esempio in un file di testo o in un documento
Purtroppo parallelamente abbiamo perso la possibilità di creare una crosstab, trascinando una dimensione direttamente sopra l'intestazione di una tabella e la gestione diretta dei filtri complessi di un report (ora tale gestione è diventata un po' più macchinosa e scomoda).

Grafico a barre nella riga della tabella

Segnalo questo video molto interessante che mostra come ottenere un grafico a barre all'interno delle righe di una tabella grazie ad alcune formule e una sapiente formattazione.

Video

sabato 4 maggio 2013

Calendario

Vi è mai successo di estrarre dati da un universo, per esempio per un periodo temporale definito a livello di singolo giorno, e di verificare poi che le date estratte a volte hanno dei buchi? Significa che per un particolare giorno i dati non sono disponibili, questo però crea un difetto visivo brutto esteticamente se si realizza un grafico, o comunque anche in forma tabellare se si portano le date in colonna non si avrà continuità tra le date da sinistra verso destra, rendendo brutta visivamente una eventuale linea temporale.
È possibile risolvere il problema creando una nuova query nel report che ci fornisca una sorta di calendario, che garantisca quindi la presenza di una data per tutti i giorni necessari.

La query calendario può puntare ad un universo, l'importante è essere sicuri che tale query possa fornire tutte le singole date che ci servono, e poi sincronizzare la nuova query con la precedente per data. Sincronizzando, se la prima query ha diverse dimensioni di analisi oltre alla data, sarebbe importante avere la possibilità di sincronizzare le due query per data e per tutte le dimensioni che la prima query include, per evitare poi di avere problemi perchè le due query sono differenti per quanto riguarda le dimensioni di analisi. Ovviamnete se le due query hanno le stesse dimensioni per via della sincronia, si potrebbe allora obiettare che la seconda query è uguale alla prima, e quindi anche questa potrebbe non avere tutte le date necessarie: non è detto, perchè magari la prima query ha dei filtri particolari che la portano a non estrarre tutte le date possibili per il perido analizzato, quindi sulla seconda si possono evitare tali filtri, solo per arrivare ad avere tutte le date necessarie e poter sincronizzare. In questo caso la seconda query può essere un duplicato della prima e poi cambieremo i filtri.

Se non è possibile creare una seconda query su un universo per ottenere tutte le date del periodo interessato è possibile creare un elenco di date in excel e caricare quindi il file excel come nuova query in Web Intelligence Rich Client, sincronizzando la query che punta al file excel con la prima per data dovremmo colmare i buchi delle date mancanti. Se necessario è possibile declinare il file excel per tutte le date e le dimensioni di analisi utili per la sincronia, per non avere problemi di sincronizzazione. Se la moltiplicazione tra le date del calendario nel file excel e le occorrenze delle altre dimensioni eccede un certo numero può darsi che il file excel diventi troppo popoloso e difficoltoso da manutenere, rendendo questa soluzione scomoda.