Hitachi Vantara Pentaho Community Forums
Results 1 to 4 of 4

Thread: Scostamento medio annuo

  1. #1
    Join Date
    Jun 2010
    Posts
    6

    Default Scostamento medio annuo

    Ciao a tutti,

    sono alle prime armi con Pentaho e vorrei, per scopi personali, realizzare un report che francamente ho difficoltà a creare (ammesso che sia possibile). Ecco cosa vorrei fare (sto semplificando molto):

    Immaginiamo di avere una tabella in cui per ogni voce ho il totale di quella voce per ogni anno passato. Esempio:

    Anno - Voce - Totale
    ----------------------------
    2008 Abbigliamento 100
    2008 Alimentari 200
    2008 Varie 300
    ...
    2009 Abbigliamento 110
    2009 Alimentari 210
    2009 Varie 400
    ...
    2010 Abbigliamento 121
    2010 Alimentari 210
    2010 Varie 300

    (la lista è lunga qualsivoglia anni e per molte altre voci).
    Quello che vorrei poter calcolare è il VALORE MEDIO DI INCREMENTO DELLE VOCI al passare degli anni. Esempio: Abbigliamento è passato da 100 a 110 (ovvero +10%) nel 2009 e poi 121 nel 2010 (che è ancora un aumento del 10%) e quindi l'incremento medio è il 10%. Analogamente "Varie" è passato da 300 a 400 (ovvero +33%) e poi a 300 (ovvero -25%): incremento medio +4%. A me servirebbe sapere il valore medio di incremento per tutte le voci.

    E' possibile farlo in query o devo creare delle tabelle intermedie?

    Grazie anticipate a tutti.

    Maurizio
    Last edited by DemaGogo; 07-18-2010 at 02:12 PM.

  2. #2
    Join Date
    Apr 2010
    Posts
    127

    Default

    Quote Originally Posted by DemaGogo View Post
    Quello che vorrei poter calcolare è il VALORE MEDIO DI INCREMENTO DELLE VOCI al passare degli anni. Esempio: Abbigliamento è passato da 100 a 110 (ovvero +10%) nel 2009 e poi 121 nel 2010 (che è ancora un aumento del 10%) e quindi l'incremento medio è il 10%. Analogamente "Varie" è passato da 300 a 400 (ovvero +33%) e poi a 300 (ovvero -25%): incremento medio +4%. A me servirebbe sapere il valore medio di incremento per tutte le voci.
    Come prima cosa, sei sicuro che questo calcolo sia corretto?
    Se parti da 300 e arrivi a 300 l'incremento medio sarà 0 no?
    Estremizzando: se l'anno 1 hai 10, l'anno 2 hai 0 (-100%) e l'anno 3 hai 1 (+ infinito %), l'incremento medio quant'è, infinito??

    Nella tua implementazione credo che dovresti fare in modo da avere, in ogni record, una colonna per l'anno X e una per l'anno X+1, calcoli la variazione tra queste e poi fai una media.
    Credo però che sarebbe più corretto fare il confronto tra l'ultimo valore e il primo, e dividerlo per il n° di anni.

    "Tabelle intermedie" se servono puoi anche "crearle" come subquery SQL.

  3. #3
    Join Date
    Jun 2010
    Posts
    6

    Default

    Ciao SCP,

    grazie per la risposta. La tua osservazione è corretta ma, come dicevo, quello che ho postato è un esempio esemplificatore piuttosto striminzito. Del resto l'applicativo che voglio realizzare non è finalizzato a nulla, se non a testare le potenzialità dello strumento (sono un consulente BI e il mio obiettivo è confrontare Pentaho rispetto ai tool che già conosco - a titolo d'esempio, in SAP BW quello che ho descritto lo si potrebbe fare direttamente in query senza modificare il datamodel).

    Tornando all'esempio: se ho ben capito mi suggerisci di creare una struttura in cui sono presenti sia gli importi all'anno X che quello all'anno X-1; alternativamente mi suggerisci delle subquery. Se volessi perseguire la seconda strada, potrei farlo in nel Report Designer? Se non ho capito male, non potrei farlo, perchè le due query non possono "dialogare" tra loro, giusto? Quindi se non sbaglio, la soluzione migliore è la tabella intermedia (quindi dovrei smanettare con le trasformazioni in PDI).

    Grazie ancora,

    Maurizio

  4. #4
    Join Date
    Apr 2010
    Posts
    127

    Default

    Quote Originally Posted by DemaGogo View Post
    se ho ben capito mi suggerisci di creare una struttura in cui sono presenti sia gli importi all'anno X che quello all'anno X-1; alternativamente mi suggerisci delle subquery
    Non sono alternative, io penserei di fare una cosa tipo:

    Code:
    SELECT avg(variazione) as var_media
    FROM (
       SELECT anno, valore as corrente, ( SELECT valore FROM tabella t2 WHERE t2.anno = t1.anno-1 ) as precedente, 100*(corrente/precedente-1) as variazione
        FROM tabella t1
        WHERE anno > ( SELECT min(anno) FROM tabella )
    )
    Occhio alle divisioni per 0...

    Non è particolarmente bella ma se non hai tabelle enormi non dovrebbe essere un problema...

    Edit: questo per avere la media. Se oltre alla media ti interessano anche i dati che mostravi sopra, ottenuti con una query diversa, devi definire un subreport. Ogni subreport può definire una query diversa.

    PS: se scrivi nei forum in inglese hai sicuramente più risposte
    Last edited by SCP; 07-19-2010 at 04:46 AM.

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.