2017-05-18 3 views
3

Si j'ai le tableau suivant (montré dans l'image ci-dessous), comment puis-je écrire une requête groupée qui concaténerait les résultats groupés?PowerQuery: Comment concaténer des valeurs groupées?

InputTable

Pour cet exemple, je veux groupe par le LetterColumn et concaténer les NumberColumn

Ainsi, les résultats souhaités seraient:

ResultsTable

Répondre

3

Si votre table est Source, et si NumberColumn a le type de nombre, alors cela fonctionnera:

= Table.Group(Source, {"LetterColumn"}, {{"Column", each Text.Combine(List.Transform(_[NumberColumn], (x) => Number.ToText(x)), ","), type text}})

Table.Group fait un groupe par opération, ce qui crée une table composée de toutes les lignes avec la même valeur dans LetterColumn. _[NumberColumn] donne une liste des valeurs dans la colonne NumberColumn de cette nouvelle table. La partie List.Transform transforme les nombres en valeurs de texte et Text.Combine joint ces nombres ensemble, avec une virgule séparant chaque valeur.

Si vous avez besoin des guillemets aussi bien, vous pouvez le faire:

= Table.Group(Source, {"LetterColumn"}, {{"Column", each """" & Text.Combine(List.Transform(_[NumberColumn], (x) => Number.ToText(x)), ",") & """", type text}})

"""" représente la

6

"caractère et & combine deux valeurs de texte Vous pouvez utiliser l'interface graphique pour. faites-le comme ceci:

  1. Sélectionnez votre LetterColumn puis Transform/GroupBy: enter image description here

  2. Sélectionnez Ajouter une colonne/personnalisée Colonne: enter image description here

  3. Cliquez flèches opposées en haut à droite de la nouvelle colonne AllData pour extraire les valeurs de la nouvelle colonne AllData:

    enter image description here enter image description here

  4. Supprimer la colonne AllData.

+0

Genius! Comment avez-vous trouvé cette syntaxe [AllData] [NumberColumn]? Je travaille avec cet outil depuis 4 ans et je n'ai jamais vu ça auparavant. –

+1

Honnêtement, je ne me souviens pas @ MikeHoney, mais je l'ai peut-être vu dans une réponse de marcelbeug dans le passé. J'ai appris beaucoup de choses de lui. Soit ça ... ou je l'ai juste essayé et ça a marché. 0) –