Giusto per completezza metto i codici M delle query utilizzate per arrivare al risultato finale:
Funzione personalizzata che tratta gli intervalli nominati "AreaDati":
let
DatiSingoloFoglio = (Content)=> let
AreaDati = Content,
MeseFoglio = Date.Month(AreaDati[Column2]{3}),
AreaDati2 = AreaDati,
RimossePrimeRighe = Table.Skip(AreaDati2,13),
RimosseColonne = Table.RemoveColumns(RimossePrimeRighe,{"Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15", "Column16", "Column17", "Column18"}),
Intestazioni = Table.PromoteHeaders(RimosseColonne, [PromoteAllScalars=true]),
EliminatoRisultato = Table.SelectRows(Intestazioni, each ([CALCIATORE] <> "RISULTATO")),
EliminatiVuoti = Table.SelectRows(EliminatoRisultato, each [CALCIATORE] <> null and [CALCIATORE] <> ""),
ColonnaMese = Table.AddColumn(EliminatiVuoti, "MESE", each MeseFoglio)
in ColonnaMese
in
DatiSingoloFoglio
Query, scritta manualmente, con l'elenco dei mesi in forma "letterale" e "numerica" utilizzata per avere una tabella completa dei 12 mesi anche se non vi sono dati per un certo mese:
let
Origine = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("TY5LDsIwDETv4nUXFOiHZUJdK1Iao9RlQdT7X6NOExDL92Y8ckrQQgOEIRjHsDcJrsozWhu/4qZiMfFT6K5kXtF5PLE7Q6La7fOY2ygUHBT9Rr6mY74lXqXgQ3FFEVxsLGvtRRWL8E/k7wK//yr5v8k9q9kP", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"MESE N" = _t, #"MESE LETTERA" = _t]),
Formati = Table.TransformColumnTypes(Origine,{{"MESE N", Int64.Type}, {"MESE LETTERA", type text}})
in
Formati
Query finale della tabella caricata nel foglio con i dati di riepilgo:
let
Origine = Excel.CurrentWorkbook(),
SelezionaAreaDati = Table.SelectRows(Origine, each Text.Contains([Name], "AreaDati")),
RichiamaFunzioneFogli = Table.AddColumn(SelezionaAreaDati, "DatiFoglio", each FunzioneFogli([Content])),
RimosseColonne = Table.SelectColumns(RichiamaFunzioneFogli,{"DatiFoglio"}),
EspanseTabelleDatiFogli = Table.ExpandTableColumn(RimosseColonne, "DatiFoglio", {"CALCIATORE", "GOL", "MESE"}, {"CALCIATORE", "GOL", "MESE"}),
Formati = Table.TransformColumnTypes(EspanseTabelleDatiFogli,{{"GOL", Int64.Type}, {"MESE", Int64.Type}, {"CALCIATORE", type text}}),
RaggruppaCalciatoreMese = Table.Group(Formati, {"CALCIATORE", "MESE"}, {{"GOL", each List.Sum([GOL]), type nullable number}}),
MergeTabellaMesi = Table.NestedJoin(RaggruppaCalciatoreMese, {"MESE"}, MESI, {"MESE N"}, "MESI", JoinKind.FullOuter),
EspansaTabellaMesi = Table.ExpandTableColumn(MergeTabellaMesi, "MESI", {"MESE N", "MESE LETTERA"}, {"MESE N", "MESE LETTERA"}),
OrdinatiMesiNumero = Table.Sort(EspansaTabellaMesi,{{"MESE N", Order.Ascending}}),
RimosseColonneNonUtili = Table.RemoveColumns(OrdinatiMesiNumero,{"MESE", "MESE N"}),
PivotColonnaMeseLettera = Table.Pivot(RimosseColonneNonUtili, List.Distinct(RimosseColonneNonUtili[#"MESE LETTERA"]), "MESE LETTERA", "GOL", List.Sum),
RimosssiVuotiCalciatore = Table.SelectRows(PivotColonnaMeseLettera, each [CALCIATORE] <> null and [CALCIATORE] <> "")
in
RimosssiVuotiCalciatore
ciao