Unpivot tabella con colonne variabili e colonne unite L’argomento è risolto

Non è propriamente un programma di BI, ma nelle sue versioni più recenti anche Excel può fare grandi cose!

Moderatore: Utilizzo_prof_Excel

Rispondi
Avatar utente

alex77
Messaggi: 160 | Topic creati
Iscritto il: sab 24 ott 2020, 23:04
Luogo: Treviso
Ringraziato: 11 volte

Unpivot tabella con colonne variabili e colonne unite

Messaggio da alex77 »

Buongiorno a tutti,
da un programma software per la preventivazione dei cicli/costi di lavorazione di assiemi meccanici ho la possibilità di estrarre su excel i dati, appunto, di tempo/costo lavorazione. Purtroppo i dati sono esposti in maniera, a mio parere, discutibile, o comunque "da trattare" per poter essere utilizzabili. In particolare un foglio, i cui dati sono quelli di mio interesse, riporta nelle prime colonne i codici dei vari componenti e altri dati ad essi relativi e nelle successive dati di tempo e costo divisi per macchina. A seconda delle macchine che vengono utilizzate o meno per lavorare quell'insieme di codici, mi ritrovo con più o meno colonne. Problema ulteriore, le macchine sono indicate nella riga "sopra" con un merge delle colonne dei vari dati ad esse afferenti.
Quello che vorrei è fare l'unpivot della tabella e per quello ho visto che si può fare "unpivot altre colonne" e così risolvo il problema delle colonne in numero variabile. Ho però bisogno di avere un campo con il nome macchina, in modo che i vari dati (tempo lavorazione, tempi accessori...) che si ripetono per le varie macchine, siano "contestualizzati" per ciascuna macchina.
L'ho scritto malissimo, ma allego file esempio, con due soli codici (con lavorazioni differenti), con foglio originale estratto dal software di preventivazione (input) e quello che poi vorrei ottenere io (output)

Grazie per un eventuale aiuto

Alessandro
Allegati
Esempio.xlsx
(22.77 KiB) Scaricato 20 volte


Avatar utente

Enrico Galli
Messaggi: 890 | Topic creati
Iscritto il: dom 28 giu 2020, 19:03
Luogo: San Giovanni in Persiceto (BO)
Ringraziato: 325 volte
Contatta:

Unpivot tabella con colonne variabili e colonne unite

Messaggio da Enrico Galli »

Ciao, prova questa query, dopo aver trasformato in tabella (con intestazioni) il tuo intervallo:

Codice: Seleziona tutto

// OutputPQ
let
    Origine = Excel.CurrentWorkbook(){[Name="Tabella2"]}[Content],
    #"Intestazioni abbassate di livello" = Table.DemoteHeaders(Origine),
    #"Trasposta colonna" = Table.Transpose(#"Intestazioni abbassate di livello"),
    #"Aggiunta colonna personalizzata" = Table.AddColumn(#"Trasposta colonna", "Macchina", each if Text.StartsWith([Column1], "Colonna") then null else [Column1]),
    #"Ricopiato in basso" = Table.FillDown(#"Aggiunta colonna personalizzata",{"Macchina"}),
    #"Inserita colonna combinata" = Table.AddColumn(#"Ricopiato in basso", "Sottoposto a merge", each Text.Combine({[Macchina], [Column2]}, "|"), type text),
    #"Rimosse colonne" = Table.RemoveColumns(#"Inserita colonna combinata",{"Column1", "Column2", "Macchina"}),
    #"Riordinate colonne" = Table.ReorderColumns(#"Rimosse colonne",{"Sottoposto a merge", "Column3", "Column4"}),
    #"Trasposta colonna1" = Table.Transpose(#"Riordinate colonne"),
    #"Intestazioni alzate di livello" = Table.PromoteHeaders(#"Trasposta colonna1", [PromoteAllScalars=true]),
    #"Trasformate altre colonne tramite UnPivot" = Table.UnpivotOtherColumns(#"Intestazioni alzate di livello", {"LIVELLO", "TIPO", "CODICE", "QUANTITÀ ELEMENTO", "QUANTITÀ LOTTO REALE", "VALUTA", "UNITÀ DI MISURA TEMPO"}, "Attributo", "Valore"),
    #"Suddividi colonna in base al delimitatore" = Table.SplitColumn(#"Trasformate altre colonne tramite UnPivot", "Attributo", Splitter.SplitTextByDelimiter("|", QuoteStyle.Csv), {"Attributo.1", "Attributo.2"}),
    #"Modificato tipo" = Table.TransformColumnTypes(#"Suddividi colonna in base al delimitatore",{{"Attributo.1", type text}, {"Attributo.2", type text}, {"QUANTITÀ ELEMENTO", type number}, {"QUANTITÀ LOTTO REALE", type number}, {"LIVELLO", type text}, {"TIPO", type text}, {"CODICE", type text}, {"VALUTA", type text}, {"UNITÀ DI MISURA TEMPO", type text}, {"Valore", type text}})
in
    #"Modificato tipo"
Allegati
UnpivotPQ.xlsx
(33.99 KiB) Scaricato 19 volte
Enrico Galli
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
Avatar utente

Autore del topic
alex77
Messaggi: 160 | Topic creati
Iscritto il: sab 24 ott 2020, 23:04
Luogo: Treviso
Ringraziato: 11 volte

Unpivot tabella con colonne variabili e colonne unite

Messaggio da alex77 »

Buongiorno Enrico Galli ,
grazie mille! Comincio a volervi bene, a voi, qua dentro! :D Quando ieri sera ho visto che avevi risposto, fremevo per arrivare in ufficio stamattina a provare (anche se ero certo funzionasse!)
Poi con il mio collega abbiamo convenuto di fare pivot degli "attributi.2" e relativi valori (tempi/costi), ma lì mi sono veramente arrangiato.
Grazie mille! Così ho anche imparato qualche trucchetto nuovo per trattare situazioni simili. Non avevo ben presente come utilizzare la trasposizione.

Buon weekend!

Alessandro
Avatar utente

Autore del topic
alex77
Messaggi: 160 | Topic creati
Iscritto il: sab 24 ott 2020, 23:04
Luogo: Treviso
Ringraziato: 11 volte

Unpivot tabella con colonne variabili e colonne unite

Messaggio da alex77 »

Enrico Galli , Ah dimenticavo, siccome ho file con magari 50-100-150 codici, può essere un problema per PQ quando fa la trasposta avere tutte queste colonne?

Ri buon weekend!

A.
Avatar utente

Enrico Galli
Messaggi: 890 | Topic creati
Iscritto il: dom 28 giu 2020, 19:03
Luogo: San Giovanni in Persiceto (BO)
Ringraziato: 325 volte
Contatta:

Unpivot tabella con colonne variabili e colonne unite

Messaggio da Enrico Galli »

alex77 ha scritto: ven 25 giu 2021, 9:54ho file con magari 50-100-150 codici, può essere un problema per PQ quando fa la trasposta avere tutte queste colonne?
No no, nessun problema (se non qualche secondo in più di attesa!)
Buon weekend anche a te! :wave:
Enrico Galli
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
Rispondi