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).

martedì 23 aprile 2019

Dimensioni geografiche

Una delle novità più interessanti introdotte dalla versione BI 4.2 SP3 di Web Intelligence è la possibilità di ottenere le latitudini e longitudini geografiche di una posizione, partendo da un oggetto dimensione che contiene il nome di un luogo, ad esempio i nomi delle città; l'obiettivo sarà quindi quello di utilizzare poi le coordinate geografiche così ottenute per rappresentare i dati su una mappa geografica.

Ottenere le coordinate è molto semplice; selezionando il bottone destro del mouse sulla dimensione di analisi che contiene i nomi delle città è possibile selezionare la voce "Edit as a Geography" e quindi "By Name".
Si apre una maschera che mostrerà le città che sono state trovate automaticamente e quelle che invece richiedono un intervento manuale.
Ultimata la mappatura vedremo che sotto la dimensione di analisi che abbiamo scelto, ci saranno dei nuovi oggetti di tipo "Dettaglio"; questi oggetti potranno essere utilizzati come dimensioni di riferimento per una mappa (cioè un oggetto grafico di tipo mappa).

Ecco le immagini che descrivono il processo di mappatura.


Con un semplice click destro del mouse è possibile attivare la funzione

Le città che non vengono mappate automaticamente devono essere mappate a mano

Al termine della mappatura saranno disponibili i nuovi oggetti "Dettaglio"

Al termine del processo sarà possibile realizzare una mappa e posizionare quindi delle metriche su una cartina geografica

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

Usare gli universi come strato semantico applicativo per estrarre dati

Tutti gli esperti BO conoscono bene i benefici e le potenzialità degli Universi di BO, perchè costituiscono lo strato semantico che separa l'utente dai dati.
Gli universi contengono modelli dati, nomi di business degli oggetti, commenti e permettono di gestire in un solo punto eventuali evolutive, senza creare impatti agli utenti e ai report.

SAP consente ad applicazioni di terzi di beneficiare di tutto questo, per estrarre dati oppure per creare applicazioni alternative e personalizzate a Web Intelligence o semplicemente per estrarre metadati.

L'interfaccia avviene tramite servizi REST APIs e i set di dati sono disponibili via protocollo OData.

Diverse applicazioni stanno già beneficiando di questa possibilità, come Oracle Eloqua e Alteryx.

Ecco il link alla pagina di SAP che spiega tutto: link

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ì 16 marzo 2018

SAP's BI Analytics Strategy

Notizie interessanti in questo articolo di SAP che ci spiega la strategia di crescita dei prodotti:
  • La versione BI 4.x non ci costringerà a costose migrazioni e sarà supportata fino alla fine del 2024
  • Lumira sta crescendo tantissimo perchè SAP punta molto su questo strumento, che tra l'altro accoglierà in ottica di convergenza dei prodotti, nuove funzionalità e sarà supportato almeno fino al 2024
  • BO Explorer e Dashboards subiranno gli effetti negativi derivanti dalla morte di Adobe Flash nel 2020, quindi bisogna fare attenzione ad investire su questi due strumenti purtroppo

Ecco i link:


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.


lunedì 6 novembre 2017

SAP BI Platform Support Tool

Segnalo questo utilissimo tool di supporto gratuito, perchè tra le varie funzioni consente di fare l'analisi di impatto degli universi (diretta per gli universi UNX e indiretta per gli universi UNV, cioè tramite una temporanea conversione da UNV a UNX).
Anche le altre funzionalità sono molto interessanti, come le dipendenze degli oggetti partendo da un report oppure l'accesso diretto ai diritti di un gruppo e la comparazione rispetto ad un altro gruppo.
Esiste anche la possibilità di fare un'analisi end to end tramite un trace (modifica temporaneamente il file .ini), il tool quindi si può rivelare molto utile per chi si occupa di supporto tecnico alla piattaforma.
Il tool si installa facilmente su un PC Client (deve essere a 64 bit) ed ha un'interfaccia molto intuitiva.
Supporta le versioni dalla 4.0 in poi.

SAP BI Platform Support Tool

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)




martedì 31 ottobre 2017

Distribuzione di frequenza

Quando si contano degli eventi avvenuti ad esempio per ogni cliente, è spesso importante poter calcolare la distribuzione della frequenza degli eventi, in forma aggregata.
Ad esempio: i nostri clienti hanno la facoltà di collegarsi alla nostra rete WiFi con il loro smartphone, vogliamo capire quanti sono i clienti che si collegano tanto, poco e pochissimo e magari capire quale può essere la distribuzione.

Se contiamo gli eventi di collegamento alla rete WiFi per cliente, possiamo avere un elenco di clienti, e per ognuno il numero di connessioni alla rete WiFi.
Ordinando il numero di collegamenti in modalità Z-A vedremo quali sono i clienti che si collegano più spesso, ma l'elenco sarà infinito, perchè ci saranno clienti che si collegano n volte, poi n-1, poi n-2.

Grazie ad una semplice formula possiamo raggruppare velocemente i clienti, ovvero possiamo creare una dimensione di analisi che aggreghi i clienti che fanno parte di una certa fascia, cioè hanno un range di numero di collegamenti comune, e quindi contare quanti clienti appartengono ad una certa fascia di numero di collegamenti.

Nell'ipotesi quindi di avere dall'universo una query che ci fornisce Codice cliente e Numero di connessioni WiFi (magari in un determinato periodo), possiamo creare la dimensione di analisi "Range", ecco la formula:

"Range"
=Se([WiFi Access - Nr of Connection] In ([Customer number])>20;">20";
Se(([WiFi Access - Nr of Connection] In ([Customer number])<=20 E [WiFi Access - Nr of Connection] In ([Customer number])>10);"10-20";
Se(([WiFi Access - Nr of Connection] In ([Customer number])<=10 E [WiFi Access - Nr of Connection] In ([Customer number])>5);"5-10";
[WiFi Access - Nr of Connection] In ([Customer number])
)
)
)

La formula aggrega il numero di collegamenti per singoli cliente e tramite un IF verifica in quale fascia ricade, quindi espone un'etichetta di testo.

Sarà quindi possibile passare dalla tabella di dettaglio riportata sulla sinistra, nell'immagine sotto, alla tabella aggregata di destra e magari fare un grafico se necessario.


Se la metrica che conta i collegamenti (ovvero gli eventi che vogliamo contare) non fosse disponibile nell'universo, ma sono comunque disponibili le informazioni di base, ovvero il Codice del cliente e il Codice dell'evento di collegamento (o il codice dell'evento che vogliamo contare), si può fare una query per estrarrei i due codici e quindi contare gli eventi per ogni cliente, tramite la seguente formula.


"Nr Connessioni"
=Conteggio([Codice collegamento]) In ([Customer number])

Creando una tabella che espone il Codice cliente e il nuovo oggetto che abbiamo appena creato, cioè il Numero di Connesisoni, otterremo per ogni cliente il numero di Connessioni.

Questa formula ci consentirà di avere la stessa tabella riportata nell'immagine in alto a sinistra; non sarà comunque possibile usare la formula dedicata al "Range" riportata sopra, perchè non avendo un conteggio nativo dall'universo, ma avendo fatto il conteggio degli eventi di collegamento dal Report, la formula dedicata al "Range" tenderà ad aggregare i dati, perchè il Conteggio all'interno dell'oggetto "Nr Connessioni" è una funzione di aggregazione.
Sarà possibile ovviare a questo problema pubblicando la tabella come servizio web (bottone destro del mouse sul bordo della tabella). A questo punto, creando un nuovo report, che usa come fonte il servizio web appena creato, sarà possibile ottenere un fornitore dati che ha in ingresso il conteggio già pronto, degli eventi di collegamento per cliente, quindi si potrà creare in questo nuovo report la dimensione "Range" descritta sopra.

lunedì 30 ottobre 2017

Personalizzare l'aspetto del BI Launch Pad

A volte è necessario personalizzare l'aspetto del "BI Launch Pad" (il portale di accesso via web a Business Objects); nella versione XI 3.x la modifica del logo era un'attività semplice e veloce (e questa magari poteva bastare) che si poteva fare dal CMC, tramite le proprietà dell'applicazione "Infoview".

Dalla versione BI 4.x l'attività di personalizzazione del sito è diventata un pò più complessa e richiede degli skill particolari, perchè si basa su file .css, ma a quanto pare sarà mantenuta in questa modalità nelle future versioni.

A tal proposito segnalo questo utilissimo tutorial.