Pagina 1 di 1

TRASPORE DATI

Inviato: mar 30 nov 2021, 15:51
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

TRASPORE DATI

Inviato: mar 30 nov 2021, 16:20
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

TRASPORE DATI

Inviato: mar 30 nov 2021, 16:26
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"

TRASPORE DATI

Inviato: mar 30 nov 2021, 16:50
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.

TRASPORE DATI

Inviato: mar 30 nov 2021, 17:00
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

TRASPORE DATI

Inviato: mar 30 nov 2021, 18:35
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

TRASPORE DATI

Inviato: mar 30 nov 2021, 21:39
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à.