Salta al contenuto principale

Microsoft Excel - Power Query - Creazione di pattern

Vogliamo trasformare la tabella

Microsoft Excel - Power Query - Creazione di pattern - tabella iniziale

 

In questo modo

Microsoft Excel - Power Query - Creazione di pattern - tabella finale

In pratica per ogni campione raggruppiamo i test in unica stringa creando un pattern.

Soluzione con AI

Chiediamo a https://claude.ai

Crea una powerquery che legge Una tabella che contiene due colonne: Campione e Test. Per ogni campione ci possono essere più test. Vedi la tabella di esempio campioni.csv.
Successivamente crea una tabella con due colonne: Campione e pattern. Il pattern viene creato concatenando i nomi dei Test per lo stesso campione. Un esempio di risultato è pattern.csv

Risultato

La query principale utilizza la funzione Table.Group() per raggruppare per campione e Text.Combine() per concatenare tutti i test di ogni campione senza separatori.

Come utilizzarla:

  1. In Power BI: Vai su "Ottieni dati" > "Query vuota" e incolla il codice
  2. In Excel: Vai su "Dati" > "Ottieni dati" > "Da altre origini" > "Query vuota"
  3. Modifica il percorso del file nella riga Origine = Csv.Document...

Risultato atteso: 

Campione 1001 → Pattern: AAABBBCCC 
Campione 1002 → Pattern: AAABBBCCCDDD
Campione 1003 → Pattern: AAADDD E così via...

La query gestisce automaticamente il raggruppamento e la concatenazione, producendo esattamente il formato della tabella pattern.csv che hai fornito come esempio.

Codice

let
   Origine = Csv.Document(File.Contents("C:\percorso\campioni.csv"),[Delimiter=";", Columns=2, Encoding=1252, QuoteStyle=QuoteStyle.None]),
   #"Intestazioni alzate" = Table.PromoteHeaders(Origine, [PromoteAllScalars=true]),
   #"Tipo modificato" = Table.TransformColumnTypes(#"Intestazioni alzate",{{"Campione", Int64.Type}, {"Test", type text}}),
   
   // Ordina prima per Campione e poi per Test per garantire l'ordine corretto
   #"Righe ordinate" = Table.Sort(#"Tipo modificato",{{"Campione", Order.Ascending}, {"Test", Order.Ascending}}),
   
   // Raggruppa e concatena mantenendo l'ordine
   #"Righe raggruppate" = Table.Group(#"Righe ordinate", {"Campione"}, {
       {"Pattern", each Text.Combine([Test], ""), type text}
   })
in
   #"Righe raggruppate" 

VERSIONE AVANZATA - Da Excel o altra fonte dati:

Se la tabella è già caricata in Power BI/Excel come "TabellaOrigine":

let
   Origine = TabellaOrigine,
   #"Righe raggruppate" = Table.Group(Origine, {"Campione"}, {
       {"Pattern", each Text.Combine(List.Sort([Test]), ""), type text}
   })
in
   #"Righe raggruppate" 

Il codice può essere copiato da qui

https://claude.ai/public/artifacts/2a694ff6-0ba1-4d42-b125-7ebbccf1d609 

Allegato
pattern.csv (137 byte)
campioni.csv (230 byte)