venerdì 15 febbraio 2013

Come nascondere una colonna in Web Intelligence ed usarla per ordinare o filtrare

Con questa soluzione cito un post molto interessante che ho trovaro su BOB; il client, Desktop Intelligence, consente di usare una dimensione di analisi per fare un ordinamento o un filtro, ma consente anche di nascondere tale dimensione. Un esempio: l'elenco di mesi in formato testo e un elenco di numeri che ci consentono di ordinare correttamente e in automatico i mesi, oppure un ordinamento automatico che vogliamo gestire a back end con un'apposita colonna numerica che vogliamo nascondere.

Web Intelligence 3.1 (finalmente nella versione 4.x questa funzione è stata inserita) purtroppo non ci consente di nascondere gli oggetti in una tabella, ma il seguente trucco potrebbe essere un'ottima soluzione.

1. Creare la colonna con la dimensione che volete nascondere, [dim_nascosta], e ordinate o filtrate su questa colonna
2. Create un alert
3. Impostate una condizione che è sempre vera (per esempio "[dim_nascosta] = [dim_nascosta]")
4. Nel box dove si inserisce il testo dell'alert da mostrare inserite la dimensione che volete mostrare, [dim_visibile], validate e vedrete la colonna popolata dalla dimensione [dim_nascosta] sostituita con la dimensione [dim_visibile]

Il motore di visualizzazione di Web Intelligence prima disegna la tabella e poi applica gli alert

25 commenti:

  1. Di quale versione di XI stai parlando?
    Se questo report ha un output su Excel, la colonna è visibile?
    Grazie
    Massimo

    RispondiElimina
    Risposte
    1. Mi riferisco alla versione di Web Intelligence XI 3.1, ma dovrebbe funzionare con qualsiasi versione che gestisce gli Alert, quindi anche la XI 2 ad esempio. Esportando il report in Excel si dovrebbe vedere solo la colonna sostituita, quindi quella nascosta non si dovrebbe vedere perchè l'export avviene dopo che gli Alert sono stati applicati, ma non ho verificato.

      Ciao.

      Elimina
    2. scusami, parli del segnalatore? io ho provato come dici tu, con la stessa condizione sempre verificata e con il titolo (nome) del segnalatore con l'oggetto da sostituire tra []. applico il segnalatore sulla colonna, come dici tu, e mi rimane sempre il campo che dovrebbe essere sostituito. in cosa sbaglio?

      Elimina
    3. Se la sostituzione non avviene significa che la condizione nell'alert non si verifica, puoi incollare qui quello che scrivi nella condizione?

      Grazie
      Ciao

      Elimina
    4. ok,
      ho trovato, sbagliavo una cosa del tuo punto 4, quello che tu dici il testo dell'alert da mostrare sarebbe la scheda "visualizzazione dei segnalatori", ho interpretato male il tuo concetto....
      grazie

      Elimina
  2. Funziona perfettamente, grazie!!!
    Ciao

    RispondiElimina
  3. Ciao Massimo, avrei bisogno di una tua consulenza:
    ho 3 oggetti di universo, 1° oggetto "polizza", 2° oggetto "tariffa" con 3 valori differenti es, A, B, C per polizza, 3° oggetto "datavalidita" con 2 date differenti per ognuna delle 3 tariffe della polizza.

    Come esercizio devo fare un report che riporti una tabella con l'oggetto "polizza" come prima colonna ed una variabile ad hoc calcolata che riporti di ogni tariffa della polizza il max tra le 2 date di ognuna,come seconda colonna.

    Purtroppo non riesco a fare lo "spacchettamento" senza necessariamente riportare anche l'oggetto "tariffa" nella tabella (diciamo che dovrebbe funzionare con i contesti di calcolo, non vorrei inserire l'oggetto "tariffa" nascosto)

    Come posso fare? mi aiuti?grazie

    RispondiElimina
    Risposte
    1. ciao,
      prova a definire una variabile di tipo dimensione con la seguente formula =max([datavalidita] in ([polizza];[tariffa])) in ([polizza];[tariffa]) se ti da errore #MULTIVALUE tramutala in indicatore.

      Fammi sapere
      Ciao

      Elimina
  4. lo faccio subito e ti dico, grazie 1000

    RispondiElimina
  5. Ciao Massimo,
    ho provato (forse ho omesso che sto lavorando su webi xi 3.1)
    Purtroppo non funziona, ho creato un oggetto dimensione con la formula che mi hai passato e in automatico si trasforma in oggetto indicatore in quanto riconosce la funzione max(), in tabella viene visualizzato il multivalue non riuscendo così a spacchettare.
    Probabilmente i contesti si applicano su oggetti realmente presenti su layout, quindi anche la "tariffa", soprattutto quello di ingresso, mentre quello di uscita determina un unico valore in quanto applicabile come un pie di pagina.
    Cmq la tua intuizione sul creare la variabile come dimensione dovrebbe essere mantenuta, forse è lì il trucco, ma non riesco a mantenere le caratteristiche dell'oggetto.
    O forse dovrebbe essere creato un oggetto che esegua internamente una subselect tra oggetti.
    Dammi tue news, grazie ancora massimo (cmq mi chiamo Mauro)

    RispondiElimina
  6. ciao a tutti,
    ho un quesito operativo.

    Ci sono x modalità di un carattere e per ognuna c'è una misura di conteggio di ID diversi occorsi.
    Dovrei creare una misura che per ogni modalità mi calcoli le occorrenze nelle altre e in quella.

    Esempio

    Mod. ContaID NuovaMisura
    A 2 se di questi 2, 1 è presente anche in C e/o in B, deve apparire 1.
    B 4
    C 7

    RispondiElimina
    Risposte
    1. Ciao, purtroppo non ho capito, nell'esempio puoi riportare anche i dati di base che avresti non solo il risultato atteso?

      Grazie
      Ciao

      Elimina
  7. Ciao Massimo,
    ho creato una gerarchia con 3 dimensioni per eseguire il drill, e un alert che, se il contenuto della cella è = alla prima dimensione della gerarchia, mi visualizza "Dettaglio" sotto forma di Hyperlink. C'è la possibilità, nel momento che effettuo il drill di far "apparire" una nuova colonna nella tabella del report?
    Spero di essermi spiegato. Grazie anticipatamente

    RispondiElimina
    Risposte
    1. Quale versione stai usando?
      Hai inserito questo commento in questo Post perchè usi l'alert per sostituire il contenuto della dimensione di analisi che usi per fare il drill con la scritta "Dettaglio" sotto forma di Hyperlink?
      L'effetto desiderato è, al livello più alto della gerarchia, non vedere il contenuto della dimensione al primo livello della gerarchia, ma la scritta "Dettaglio" e quindi selezionando la scritta ipertestuale, si vuole avviare in drill, ma il contenuto deve essere su una nuova colonna?
      In generale comunque non è possibile aggiungere colonne dinamicamente, infatti il Post non nasconde veramente una colonna, ma usa una colonna esistente per usare una dimensione per fare l'ordinamente e contemporaneamente mostrare il contenuto di un'altra dimensione, quindi alla fine la colonna deve esistere sempre. Potresti provare a modificare i parametri dei formati dell'arte, ma su una colonna aggiuntiva, in modo che quando c'è la scritta "Dettaglio", i formati rendono la colonna invisibile, negli altri casi invece, i formati la rendono visibile, cioè con un colore del bordo che non coincide con il colore di sfondo.

      Ciao

      Elimina
  8. Ah si scusa, è la XI 3.1, si esatto volevo nascondere la prima dimensione della gerarchia. Avevo pensato, infatti, di nascondere le colonne con i formati, che poi tornavano visibili una volta cliccato sull'hyperlink ma non riesco a farlo, uso il "contenuto della cella" e non un'oggetto...come faccio a dire all'alert che se il contenuto di una cella è "dettaglio", cambia il formato di un'altra cella?

    RispondiElimina
    Risposte
    1. Per ora sei riuscito a visualizzare la scritta "Dettagli" quando sei sul primo livello della gerarchia e poi a far uscire invece il valore del secondo livello quando selezioni la scritta "Dettagli" ? Intendo sulla medesima colonna (dato che il drill down lavora sempre sulla stessa colonna)

      Elimina
  9. si si...il drill funziona alla perfezione

    RispondiElimina
  10. Non puoi fare tutto con una sola colonna, devi lavorare su due colonne, la prima potrebbe essere quella che hai già gestito, la seconda invece può essere quella che scompare al livello 1 della gerarchia e invece si presenta ai livelli successivi, ma il risultato finale non è esattamente quello che desideri.
    Per farlo devi gestire un alert anche sulla seconda colonna, dove al livello uno deve avere dei formati con bordi e sfondo della cella che coincidono con lo sfondo, mentre ai livelli successivi deve avere formati con bordi e sfondo diversi dallo sfondo del foglio. Potresti quindi al primo livello avere lamscritta "dettagli" nella prima colonna, e la seconda colonna non visibile, poi per i successivi livelli potresti avere il numero del livello sulla prima colonna e il valore che vuoi mostrare sulla seconda. Bisogna provare sarei agevolato se avessi il file .wid o qualche schermata.
    I formati delle celle si gestiscono tramite un apposito tasto che ti apre la possibilita di gestire tutto, colore del testo, del bordo, font e sfondo.


    Ciao

    RispondiElimina
  11. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  12. Ma l'alert funziona o "sul contenuto della cella" o sul valore di un oggetto...come faccio a dire all'alert sulla seconda colonna che il contenuto della cella della prima colonna è al primo livello della gerarchia?

    RispondiElimina
    Risposte
    1. Perdonami, ma è proprio quello che mi chiedevo rispetto al risultato che hai già ottenuto, cioè quando sopra ti chiedevo se il drill funziona, mi ha un pò stupito, perchè vuol dire che hai trovato il modo di far apparire la scritta "dettagli" quando sei al primo livello ed i contenuti quando non sei al primo livello... oppure ho capito male io, scusami. Forse è meglio se mi mandi un .wid così capisco meglio cosa hai fatto fino ad ora.

      Elimina
    2. Il Drill funziona, al primo livello della gerarchia mi fa apparire "Dettaglio" con un hyperlink e se ci clicco sopra mi sale la gerarchia.
      Cmq ho risolto. Ho creato due variabili che mi prendono il FiltroDrill() sul primo e sul secondo livello della gerarchia e le ho usate per rendere visibili le colonne di cui avevo bisogno.
      Grazie cmq per il tempo che ti ho fatto perdere

      Elimina
    3. Ottimo! Spero almeno di averti indirizzato in qualche modo.

      Nulla figurati

      Elimina