Hitachi Vantara Pentaho Community Forums
Results 1 to 20 of 20

Thread: Range dinamici per Dial Chart

  1. #1

    Default Range dinamici per Dial Chart

    ciao a tutti,
    sto utilizzando da poco la suite Pentaho e devo realizzare dei Dial Chart basati su dei dati pescati da un database. L'idea è quella di far variare i cruscotti sia per quanto riguarda il dato indicato sia per il range, i cui valori sono sempre reperibili dal database. Questo vuol dire cambiare la "taratura" del cruscotto in base ai valori presi. Purtoppo ho delle difficoltà a configurare i parametri. Come si può realizzare una cosa del genere?
    Grazie in anticipo

  2. #2

    Default

    Quote Originally Posted by Adrianvs View Post
    ciao a tutti,
    sto utilizzando da poco la suite Pentaho e devo realizzare dei Dial Chart basati su dei dati pescati da un database. L'idea è quella di far variare i cruscotti sia per quanto riguarda il dato indicato sia per il range, i cui valori sono sempre reperibili dal database. Questo vuol dire cambiare la "taratura" del cruscotto in base ai valori presi. Purtoppo ho delle difficoltà a configurare i parametri. Come si può realizzare una cosa del genere?
    Grazie in anticipo
    fai una query che ti ritorna un resultset con tuple del tipo (min,valore, max) ed iteri su di esso all'interno del loop crei il widget

  3. #3

    Default

    fatto...
    ho questo file .xaction che definisce il valore indicato dalla lancetta, che lo prendo dal database ed è ok. Poi richiama un file dialchart.xml che definisce la grafica del cruscotto (e quindi anche il range)..come faccio a dire a quest'ultimo come prendere le variabili estratte dal result-set?
    thanks

  4. #4

    Default

    Quote Originally Posted by Adrianvs View Post
    fatto...
    ho questo file .xaction che definisce il valore indicato dalla lancetta, che lo prendo dal database ed è ok. Poi richiama un file dialchart.xml che definisce la grafica del cruscotto (e quindi anche il range)..come faccio a dire a quest'ultimo come prendere le variabili estratte dal result-set?
    thanks
    così
    PHP Code:
    <action-definition
           ...
            <
    action-inputs
                ....
                <
    chart-data type="result-set" mapping="rs_name"/>  
                
            </
    action-inputs>
    </
    action-definition

  5. #5

    Default

    Perfetto...il range si prende i valori dal database.
    Come posso creare un cruscotto per ogni riga del result set? C'è un metodo universale per creare dei "loop" in base ai risultati delle query?

    PS: c'è un manualeda qualche parte, anche in inglese, per pentaho 2.0?

    grazie

  6. #6

    Default

    lo stai facendo con una jsp o con una xaction?
    nel primo caso devi iterare con un costrutto java (for,while...)
    nel secondo caso c'è "Loop" in "process action"

  7. #7

    Default

    per la guida potrebbe esserti utile questa reference :
    http://wiki.pentaho.com/display/Serv...nent+Reference

  8. #8

    Default

    anzitutto grazie per le immediate risposte

    Sto visualizzando il grafico con un xaction con javascript tramite la sintassi
    Code:
    chart_url =  '<img src="' + BASEURL + "getImage?image=" + CHARTOUTPUT + '" />';
    Come si applica la funzione loop?
    Grazie ancora

  9. #9

    Default

    stai quindi utilizzando design studio ?
    in tal caso dovresti aggiungere una sorta di process action chiamata Loop ed inserire al suo interno la costruzione del tag img

  10. #10

    Default

    si uso design studio....ora faccio delle prove thanks

  11. #11

    Default

    aspè quindi devo iterare la costruzione del tag img per fare spuntare + cruscotti?

  12. #12

    Default

    diciamo che devi costruire l'html relativo, quindi, io farei, all'interno del loop
    1)costruzione del chart
    2)javascript per definire l'html

    per il secondo punto poi utilizzare anche un message template, cmq rimanendo sul javascript il codice è orientativamente il seguente:
    PHP Code:
    chart_url +=  <img src="' + BASEURL + "getImage?image=" + CHARTOUTPUT + '" />'; 
    attenzione al + prima dell'uguale (chart_url += )
    non so che esperienza hai con javascript ma serve per la concatenzione.
    potrebbe essere necessario inizializzare la variabile chart_url (che si dovrebbe chiamare + propriamente chart_urls in tal caso): mettilo negli input dell'action sequence con default spuntato


    ....and let me know
    Last edited by 4ndr34; 02-06-2009 at 06:28 AM.

  13. #13

    Default

    allora...grazie a questo trucchetto funziona
    La situazione è questa nel process action:

    1)Connessione databasse+query
    2)Javascript che mi crea un resultset con il valore
    3)Loop su query_result
    3a)Dial chart: ChartComponent dove definisco l'xml che si prende i nomi e i range del cruscotto dal precedente process action
    3b)Output Chart con chart_url+= bla bla
    I cruscotti li crea e i valori della lancetta sono esatti...perchè, da quello che ho capito, tali valori se li prende dall'oggetto resultset che nel processo 2) è stato popolato con un for tramite l'istruzione results.addRow(new Array(valore))...fin qua tutto ok, ma i range dei cruscotti non variano perchè non ho capito come farli "ciclare", cioè prendono solo l'ultimo valore che esce dal ciclo for del processo 2. Se definisco qualcosa del tipo results.setColumnHeaders( 'nome','target','valore' ); mi da un errore tipo "parsing exception" o qualcosa simile...quindi come impostare tali valori in modo che l'xml se li prende?
    Non so se ho formulato in modo chiaro la domanda, cmq manca solo questo ed è perfetto...thanks

  14. #14

    Default

    diciamo che x il punto 2) non è necessario javascript se i valori che devi utilizzare li devi prendere direttamente dal db.
    Puoi utilizzare un componente "relational" inserendo una query del tipo
    Code:
    select x as actual, value_a as min,value_b as max from tabelle_varie_con _eventuali_join
    questo dovrebbe risolvere anche il discorso del range dinamico, se per range intendi il valore massimo ed il minimo del tachimetro.
    se per range invece intendi gli intervalli "stile-semaforo" rosso-giallo-verde (o altri colori che vuoi utilizzare per evidenziare sotto-intervalli diversi) allora la cosa si complica un po

  15. #15

    Default

    il valore massimo ad esempio è 100 quello minimo è 0....servirebbero solo i valori intermedi i cui valori li pesco dal db, o meglio ne prendo uno e l'altro lo calcolo in funzione di esso. Cioè per settare la lancetta uso results.addRow(new Array(Value)); e ho tanti cruscotti quanti le righe con il valore della lancetta corretto. Solo che gli altri valori (ad esempio il nome della misura che imposto nel titolo del dialchart) non so come settarli per la definizione nell'xml...faccio ancora qualche prova vediamo

  16. #16

    Default

    cioè il dial chart funziona con un tipo di input definito chart-data....che ha come valori quelli impostati dall'xaction che contiene javascript
    Se lo tolgo non funge

  17. #17

    Default

    Dunque...ho "resettato" tutto. Ho creato un xaction che ha questi processi:

    1) Connessione database + query--> output: query_result + colonne del resultSet
    2) Loop su query_result
    2a) Javascript che prende come input quello che esce da 1) e concatena la stringa Out+='<br/>'+nome+target+value; dove Out l'ho definita in Process input con default spuntato.
    L'output grossolanamente mi da le rispettive righe uscite dalla query con i valori corretti...quindi l'estrazione dei dati direttamente con il loop funziona. Il punto è ora creare i cruscotti da questo punto: come configurare il tutto? ovvero come fare un Xml per Dial Chart ke si prende value come valore della lancetta, nome come nome della misura quindi come titolo del dialchart corrispondente e target come target intermedio (ad esempio il valore dopo il quale viene colorato di rosso, stile semaforo). Non ho capito questo punto...grazie

  18. #18

    Default

    potrei vedere l'xml?
    xchè ho un dubbio.
    puoi anche mandarmelo con un MP

  19. #19

    Default

    ciao
    purtroppo in questi giorni non ho a portata di mano il codice...la prossima settimana ti mando tutto.
    Cmq in generale il problema è creare un cruscotto per ogni riga di una tabella mysql nella forma:

    nome target valore
    blablabla0 50 57
    blablabla1 70 60
    blablabla2 75 85
    blablabla3 80 88
    .........

    Ogni cruscotto ha il titolo "nome", valore della lancetta "valore" e range basato su "target" (ad esempio nella visualizzazione a semaforo il valore prima della parte rossa).
    La mia soluzione funzionava con le lancette ma il resto non ho capito come impostarlo correttamente sulla grafica del cruscotto.
    Se hai soluzioni alternative scrivi pure. Grazie e a presto

  20. #20

    Default

    ciao a tutti
    questo problema l'ho abbandonato per dedicarmi ad altro però non ho ancora trovato una soluzione....
    Nel ChartComponent ho usato il mapping su title (togliendo dalla configurazione xml i tag <title></title>) e su chart-data, quindi titolo e lancetta sono corretti. Per poter fare il range (valori intermedi stile semaforo), intuitivamente dovrebbe essere eseguito un mapping sui valori estratti dal database...ma dove?
    se metto ad esempio nel primo range:
    Code:
      <intervals> 
        <interval> 
          <label>low</label>  
          <!-- this is the value that the range starts at -->  
          <minimum>0</minimum>  
          <!-- this is the value that the range stops at -->  
          <maximum>{low}</maximum>  
          <!-- color>#ff8080</color -->
    il valore low estratto dal database non cicla, quindi in tutti i dial mi stampa lo stesso valore (ad esempio il primo).

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Privacy Policy | Legal Notices | Safe Harbor Privacy Policy

Copyright © 2005 - 2019 Hitachi Vantara Corporation. All Rights Reserved.