Da [Table] a valori concatenati L’argomento è risolto
Moderatore: Utilizzo_prof_Excel
-
- Messaggi: 16 | Topic creati
- Iscritto il: mar 14 lug 2020, 21:39
- Luogo: Lecce-Pisa
- Ringraziato: 5 volte
Da [Table] a valori concatenati
Buona domenica al gruppo...
Un colonna del risultato di una query contiene valori null e Table, se la espando mi duplica i record (cosa che non voglio fare!), come è possibile concatenare i valori delle Table (procedendo per righe e relative colonne ) e riportarli nella stessa cella? Es.: r11, r12, r21, r22.
Le Table hanno due colonne la prima con tipo text e la seconda number ed un numero variabile di righe.
Mi scuso per il file ma al momento non ne ho uno senza dati sensibili che riproduca la casistica.
Un colonna del risultato di una query contiene valori null e Table, se la espando mi duplica i record (cosa che non voglio fare!), come è possibile concatenare i valori delle Table (procedendo per righe e relative colonne ) e riportarli nella stessa cella? Es.: r11, r12, r21, r22.
Le Table hanno due colonne la prima con tipo text e la seconda number ed un numero variabile di righe.
Mi scuso per il file ma al momento non ne ho uno senza dati sensibili che riproduca la casistica.
-
- Messaggi: 2244 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 672 volte
- Contatta:
Da [Table] a valori concatenati
Ciao ggratis,
Senza file faccio fatica a comprendere totalmente quello che dovrebbe essere l’output desiderato.
Così a prima vista ti suggerirei l’utilizzo di Text.Combine
https://docs.microsoft.com/en-us/powerq ... xt-combine
A presto,
Andrea
Senza file faccio fatica a comprendere totalmente quello che dovrebbe essere l’output desiderato.
Così a prima vista ti suggerirei l’utilizzo di Text.Combine
https://docs.microsoft.com/en-us/powerq ... xt-combine
A presto,
Andrea
-
- Messaggi: 890 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:03
- Luogo: San Giovanni in Persiceto (BO)
- Ringraziato: 325 volte
- Contatta:
Da [Table] a valori concatenati
Ciao. Se ho ben capito, occorre fare una trasformazione su quelle tabelle, ovvero un unpivoting di tutte le colonne. Dopodiché avrai una sola colonna, e potrai concatenarne i valori usando Text.Combine come ha detto Andrea
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
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
-
Autore del topic - Messaggi: 16 | Topic creati
- Iscritto il: mar 14 lug 2020, 21:39
- Luogo: Lecce-Pisa
- Ringraziato: 5 volte
Da [Table] a valori concatenati
Intanto un ringraziamento per la vostra attenzione,
ho allegato il file di esempio, nella colonna ScontoMaggiorazione, vorrei ottenere il risultato come illustrato.
Ho provato a capire come applicare Text.Combine Table.Combine ma devo entrare ancora nel meccanismo
Leggerò con attenzione i vostri suggerimenti
ancora grazie
gg
ho allegato il file di esempio, nella colonna ScontoMaggiorazione, vorrei ottenere il risultato come illustrato.
Ho provato a capire come applicare Text.Combine Table.Combine ma devo entrare ancora nel meccanismo
Leggerò con attenzione i vostri suggerimenti
ancora grazie
gg
- Allegati
-
- DaTabellaAValoreConcatenato.rar
- (33.82 KiB) Scaricato 13 volte
-
- Messaggi: 2244 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 672 volte
- Contatta:
Da [Table] a valori concatenati
Ciao ggratis,
Ti giro il file excel con una modifica che mostra il passaggio step by step.
Ho semplicemente aggiunto una udf fatta così:
e poi ho aggiunto i due step per le colonne calcolate, così da poter tenere separati tutti i passaggi e rendere la logica di utilizzo più semplice da comprendere. Poi con eventuali ottimizzazioni si può pensare di rendere il codice più snello.
A presto,
Andrea
Ti giro il file excel con una modifica che mostra il passaggio step by step.
Ho semplicemente aggiunto una udf fatta così:
Codice: Seleziona tutto
(TempTable as table) as table=>
let
CalcTest = Table.AddColumn(TempTable, "TempMerge", each Text.Combine({[Tipo], [Percentuale]}, " "), type text)
in
CalcTest
Codice: Seleziona tutto
#"Funzione personalizzata richiamata" = Table.AddColumn(#"Rimosse colonne1", "CalcMergeField", each try CalcMergeField([ScontoMaggiorazione]) otherwise null),
#"Aggiunta colonna personalizzata" = Table.AddColumn(#"Funzione personalizzata richiamata", "FinalResul", each try Text.Combine([CalcMergeField][TempMerge]," ") otherwise null)
Andrea
- Allegati
-
- DaTabellaAValore.xlsx
- (27.58 KiB) Scaricato 11 volte
-
- Messaggi: 890 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:03
- Luogo: San Giovanni in Persiceto (BO)
- Ringraziato: 325 volte
- Contatta:
Da [Table] a valori concatenati
Ecco invece la mia soluzione, più "pedestre", da sostituire in toto alla tua query:
Codice: Seleziona tutto
let
Origine = Table.SelectColumns(Table.RenameColumns(Table.AddColumn(Table.SelectRows(Folder.Files("C:\Users\enric\OneDrive\MondoBI\quesiti\Nuova cartella (2)"), each (Text.Contains([Name], ".xml") or Text.Contains([Name], ".XML"))and not Text.EndsWith([Name], "_MT_001.xml")), "Trasforma file", each fxTrasformaFile([Content])), {"Name", "NomeFile"}), {"NomeFile", "Trasforma file"}),
EspandiTabellaFile = Table.ExpandTableColumn(Origine, "Trasforma file", Table.ColumnNames(fxTrasformaFile(#"File di esempio"))),
EspandiIntestazioneCorpo = Table.ExpandTableColumn(EspandiTabellaFile, "Namespace:", {"FatturaElettronicaHeader", "FatturaElettronicaBody"}, {"FatturaElettronicaIntestastazione", "FatturaElettronicaCorpo"}),
IntestastazioneCedenteAnagrafica = Table.ExpandTableColumn(Table.ExpandTableColumn(Table.ExpandTableColumn(Table.ExpandTableColumn(EspandiIntestazioneCorpo, "FatturaElettronicaIntestastazione", {"CedentePrestatore"}, {"CedentePrestatore"}), "CedentePrestatore", {"DatiAnagrafici"}, {"DatiAnagrafici"}), "DatiAnagrafici", {"Anagrafica"}, {"Anagrafica"}), "Anagrafica", {"Denominazione", "Nome", "Cognome"}, {"Denominazione", "Nome", "Cognome"}),
MergeDenominazioneCognomeNome = Table.CombineColumns(IntestastazioneCedenteAnagrafica,{"Denominazione", "Cognome", "Nome"},Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),"Ditta"),
EspandiCorpo = Table.TransformColumns(Table.ExpandTableColumn(MergeDenominazioneCognomeNome, "FatturaElettronicaCorpo", {"DatiGenerali", "DatiBeniServizi"}, {"DatiGenerali", "DatiBeniServizi"}),{{"Ditta", each Text.TrimStart(_," "),type text}}),
EspandiDatiGeneraliDocumento = Table.ReorderColumns(Table.TransformColumnTypes(Table.ExpandTableColumn(Table.ExpandTableColumn(EspandiCorpo, "DatiGenerali", {"DatiGeneraliDocumento"}, {"DatiGeneraliDocumento"}), "DatiGeneraliDocumento", {"TipoDocumento", "Data", "Numero"}, {"TipoDocumento", "DataFattura", "NumeroFattura"}),{{"TipoDocumento", type text}, {"DataFattura", type date}, {"NumeroFattura", type text}}),{"NomeFile", "TipoDocumento", "DataFattura", "Ditta", "NumeroFattura"}),
EspandiBeniServizi = Table.ExpandTableColumn(EspandiDatiGeneraliDocumento, "DatiBeniServizi", {"DettaglioLinee", "DatiRiepilogo"}, {"DettaglioLinee", "DatiRiepilogo"}),
EspandiDettaglioLinee = Table.ExpandTableColumn(EspandiBeniServizi, "DettaglioLinee", {"NumeroLinea", "Descrizione", "Quantita", "UnitaMisura", "PrezzoUnitario", "ScontoMaggiorazione", "PrezzoTotale", "AliquotaIVA"}, {"NumeroLinea", "Descrizione", "Quantita", "UnitaMisura", "PrezzoUnitario", "ScontoMaggiorazione", "PrezzoTotale", "AliquotaIVA"}),
SostituzionePuntoVirgola = Table.ReplaceValue(EspandiDettaglioLinee,".",",",Replacer.ReplaceText,{"NumeroLinea", "Quantita", "PrezzoUnitario", "PrezzoTotale", "AliquotaIVA"}),
ModificatoTipo = Table.TransformColumnTypes(SostituzionePuntoVirgola,{{"NumeroLinea", type number}, {"Quantita", type number}, {"PrezzoUnitario", type number}, {"PrezzoTotale", type number}, {"AliquotaIVA", type number}, {"UnitaMisura", type text}}),
#"Rimosse colonne1" = Table.RemoveColumns(ModificatoTipo,{"DatiRiepilogo", "Attribute:versione"}),
#"Aggiunta colonna personalizzata" = Table.AddColumn(#"Rimosse colonne1", "unpivot", each Table.UnpivotOtherColumns([ScontoMaggiorazione], {}, "tipo", "valore")[valore]),
#"Valori estratti" = Table.TransformColumns(#"Aggiunta colonna personalizzata", {"unpivot", each Text.Combine(List.Transform(_, Text.From), " "), type text}),
#"Errori sostituiti" = Table.ReplaceErrorValues(#"Valori estratti", {{"unpivot", ""}}),
#"Rimosse colonne" = Table.RemoveColumns(#"Errori sostituiti",{"ScontoMaggiorazione"}),
#"Rinominate colonne" = Table.RenameColumns(#"Rimosse colonne",{{"unpivot", "ScontoMaggiorazione"}})
in
#"Rinominate colonne"
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
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
-
Autore del topic - Messaggi: 16 | Topic creati
- Iscritto il: mar 14 lug 2020, 21:39
- Luogo: Lecce-Pisa
- Ringraziato: 5 volte
Da [Table] a valori concatenati
...elementare vero?! ...come tutte le cose che si sanno fare!
Complimenti ad entrambi e grazie per le esaustive risposte
Complimenti ad entrambi e grazie per le esaustive risposte
... è questo che fa la differenza! Per la curiosità di leggere le ottimizzazioni, mi dispiace quasi indicare la discussione come risolta.
Beh, avrei voluto scriverla anch'io la settimana scorsa