TRASPORE DATI 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

Alieno86
Messaggi: 47 | Topic creati
Iscritto il: mer 9 giu 2021, 16:36
Ringraziato: 5 volte

TRASPORE DATI

Messaggio da Alieno86 »

Salve a tutti,
avrei bisogno di trasporre alcuni dati da incolonnati a righe; allego un file che spiega la casistica velocemente.
Dovessi risolvere con excel utilizzerei la funzione unici e poi copia trasponi per ogni struttura.
L'obbiettivo finale è calcolare la deviazione standard degli scoref per struttura.


Immagine
Allegati
prova.xlsx
(26.69 KiB) Scaricato 15 volte


Avatar utente

Andrea90
Messaggi: 2193 | Topic creati
Iscritto il: dom 28 giu 2020, 19:41
Luogo: Bologna
Ringraziato: 666 volte
Contatta:

TRASPORE DATI

Messaggio da Andrea90 »

Ciao Alieno86,

Non capisco cosa intendi per scoref1, scoref2, ecc.

Se li vuoi porre in colonna devono essere dimensioni presenti nella tabella, a quel punto puoi lasciare la base dati così come è, e poi con una pivot (powerpivot) crearti il report con le strutture per riga e i scoref per colonna.

Andrea
Se hai gradito l'aiuto che hai ricevuto considera di contribuire alle spese per il mantenimento del forum facendo una libera DONAZIONE --> Link

Ricordarsi di segnare come "RISOLTE" le discussioni per le quali si è ricevuto un feedback positivo. Per vedere come fare --> Link
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:

TRASPORE DATI

Messaggio da Enrico Galli »

Ciao Andrea90, credo che l'utente necessiti appunto di una dimensione che distingua i punteggi, ovvero un indice annidato (dopo aver raggruppato per struttura) da utilizzare poi come campo da mettere in colonna (con PQ o pivot, poco importa a quel punto)

Esempio:

Codice: Seleziona tutto

let
    Origine = Excel.CurrentWorkbook(),
    Tabella1_2 = Origine{[Name="Tabella1_2"]}[Content],
    #"Raggruppate righe" = Table.Group(Tabella1_2, {"struttura"}, {{"ar", each Table.AddIndexColumn(_, "id",1,1), type table }}),
    #"Rimosse colonne" = Table.RemoveColumns(#"Raggruppate righe",{"struttura"}),
    #"Tabella ar espansa" = Table.ExpandTableColumn(#"Rimosse colonne", "ar", {"struttura", "scoref", "id"}, {"struttura", "scoref", "id"}),
    #"Prefisso aggiunto" = Table.TransformColumns(#"Tabella ar espansa", {{"id", each "scoref " & Text.From(_, "it-IT"), type text}}),
    #"Modificato tipo" = Table.TransformColumnTypes(#"Prefisso aggiunto",{{"struttura", type text}, {"id", type text}, {"scoref", type number}}),
    #"Colonna trasformata tramite Pivot" = Table.Pivot(#"Modificato tipo", List.Distinct(#"Modificato tipo"[id]), "id", "scoref")
in
    #"Colonna trasformata tramite Pivot"
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
Alieno86
Messaggi: 47 | Topic creati
Iscritto il: mer 9 giu 2021, 16:36
Ringraziato: 5 volte

TRASPORE DATI

Messaggio da Alieno86 »

Enrico Galli ha scritto: mar 30 nov 2021, 16:26 let
Origine = Excel.CurrentWorkbook(),
Tabella1_2 = Origine{[Name="Tabella1_2"]}[Content],
#"Raggruppate righe" = Table.Group(Tabella1_2, {"struttura"}, {{"ar", each Table.AddIndexColumn(_, "id",1,1), type table }}),
#"Rimosse colonne" = Table.RemoveColumns(#"Raggruppate righe",{"struttura"}),
#"Tabella ar espansa" = Table.ExpandTableColumn(#"Rimosse colonne", "ar", {"struttura", "scoref", "id"}, {"struttura", "scoref", "id"}),
#"Prefisso aggiunto" = Table.TransformColumns(#"Tabella ar espansa", {{"id", each "scoref " & Text.From(_, "it-IT"), type text}}),
#"Modificato tipo" = Table.TransformColumnTypes(#"Prefisso aggiunto",{{"struttura", type text}, {"id", type text}, {"scoref", type number}}),
#"Colonna trasformata tramite Pivot" = Table.Pivot(#"Modificato tipo", List.Distinct(#"Modificato tipo"[id]), "id", "scoref")
in
#"Colonna trasformata tramite Pivot"
perfetto complimenti.
Avatar utente

Autore del topic
Alieno86
Messaggi: 47 | Topic creati
Iscritto il: mer 9 giu 2021, 16:36
Ringraziato: 5 volte

TRASPORE DATI

Messaggio da Alieno86 »

mi pare d'aver capito che il fulcro del discorso è

"ar", each Table.AddIndexColumn(_, "id",1,1), type table

però anche leggendo la spiegazione su https://docs.microsoft.com/ non ho capito come hai fatto a legare al punteggio la struttura.

Francesco
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:

TRASPORE DATI

Messaggio da Enrico Galli »

Ciao Alieno86 , quel passaggio in effetti è la chiave dell'operazione, e non è possibile ottenerlo interamente da interfaccia grafica. Dapprima ho fatto un semplice raggruppamento sulle strutture, mettendo come unica aggregazione "Tutte le righe", ottenendo qualcosa tipo:

Table.Group(Tabella1_2, {"struttura"}, {{"ar", each _, type table }})

(in realtà c'è anche una parte tra parentesi quadre con la definizione delle colonne della tabella annidata, che io cancello).
Al posto di each _, che significa sostanzialmente "per ogni struttura, fammi vedere la porzione di tabella che otterrei filtrando per quella struttura", scrivo a mano each Table.AddIndexColumn(_, "id",1,1), che vuol dire "prendi la porzione di tabella che otterrei filtrando per quella struttura, e aggiungile una colonna indice progressivo che parte da 1 e si incrementa di 1". Spero di averti chiarito, sia pur rapidamente, il concetto
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
Alieno86
Messaggi: 47 | Topic creati
Iscritto il: mer 9 giu 2021, 16:36
Ringraziato: 5 volte

TRASPORE DATI

Messaggio da Alieno86 »

Enrico Galli ha scritto: mar 30 nov 2021, 18:35 Ciao Alieno86 , quel passaggio in effetti è la chiave dell'operazione, e non è possibile ottenerlo interamente da interfaccia grafica. Dapprima ho fatto un semplice raggruppamento sulle strutture, mettendo come unica aggregazione "Tutte le righe", ottenendo qualcosa tipo:

Table.Group(Tabella1_2, {"struttura"}, {{"ar", each _, type table }})

(in realtà c'è anche una parte tra parentesi quadre con la definizione delle colonne della tabella annidata, che io cancello).
Al posto di each _, che significa sostanzialmente "per ogni struttura, fammi vedere la porzione di tabella che otterrei filtrando per quella struttura", scrivo a mano each Table.AddIndexColumn(_, "id",1,1), che vuol dire "prendi la porzione di tabella che otterrei filtrando per quella struttura, e aggiungile una colonna indice progressivo che parte da 1 e si incrementa di 1". Spero di averti chiarito, sia pur rapidamente, il concetto
Grazie della spiegazione, sicuramente non alla mia portata, ma veramente grazie per la disponibilità e cordialità.
Rispondi