J'ai donc un tableau contenant beaucoup de données sur les billets.

Il y a plusieurs ID dans ce tableau. La signification de ces identifiants est stockée dans une autre table (toutes dans la même table).

Exemple de tableau de données 1

TicketID    IssueType   Status
1              1          3
2              1          7
3              3          4
4              9          3 

Exemple de tableau de données 2

Property    Label           Value
IssueType   Printer           1
IssueType   Backup            3
IssueType   Sales             9
Status      New               3
Status      Complete          4
Status      Waiting Customer  7
 

Je veux que les nombres de la première table soient remplacés par les données d'étiquette correspondant à la propriété. Comment puis-je faire ceci?

Exemple de solution:

TicketID    IssueType   Status
1            Printer    New
2            Printer    Waiting customer
3            Backup     Complete
4            Sales      New
 

J'ai essayé d'utiliser Combine Query, mais cela m'oblige à filtrer dans la deuxième table, et dès que je supprime ce filtre, l'étiquette correcte n'est plus affichée. Merci d'avance.

1
Moi 2 sept. 2020 à 14:32

3 réponses

Meilleure réponse

En attendant, j'ai résolu ma propre question. J'ai quitté Power Query et j'ai décidé d'ajouter une colonne dans laquelle j'utilise CALCULATE pour récupérer les données de l'autre table. Un exemple serait

var number = 'table1'[IssueType]
var issue = CALCULATE(MAX('table2'[label]), 'table2'[Property]="IssueType", 'table2'[Value] = number)
return issue
0
Moi 8 sept. 2020 à 09:11

Considérant que le nom de votre premier tableau est le tableau 1 Et le deuxième nom du tableau est - tableau 2

Maintenant, modifiez simplement votre tableau 1 à l'aide de l ' Éditeur avancé et placez simplement ce code ci-dessous après avoir supprimé le code existant.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSAWNjpVidaCUjKM8czDMGi+somYB5JkCWJURlLAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [TicketID = _t, IssueType = _t, Status = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"TicketID", Int64.Type}, {"IssueType", Int64.Type}, {"Status", Int64.Type}}),
    
    //--Here from the new transformation starts
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"TicketID"}, "Attribute", "Value"),
    #"Merged Queries" = Table.NestedJoin(#"Unpivoted Other Columns", {"Attribute", "Value"}, #"table 2", {"Property", "Value"}, "table 2", JoinKind.LeftOuter),
    #"Expanded table 2" = Table.ExpandTableColumn(#"Merged Queries", "table 2", {"Label"}, {"table 2.Label"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded table 2",{"Value"}),
    #"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[Attribute]), "Attribute", "table 2.Label", List.Max)
in
    #"Pivoted Column"

Voici ci-dessous la sortie finale-

enter image description here

0
mkRabbani 2 sept. 2020 à 14:12

Au plus basique, ajoutez deux colonnes personnalisées avec des formules personnalisées dans Table1

Colonne personnalisée n ° 1 pour l'étiquette de type de problème

= (i)=> List.First(Table.SelectRows(Table2, each [Property]="IssueType" and [Value]=i[IssueType]) [Label])

Colonne personnalisée n ° 2 pour l'étiquette d'état

= (i)=> List.First(Table.SelectRows(Table2, each [Property]="Status" and [Value]=i[Status]) [Label])

Exemple de code complet

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"TicketID", Int64.Type}, {"IssueType", Int64.Type}, {"Status", Int64.Type}}),
#"Added Custom" = Table.AddColumn(#"Changed Type","IssueTypeLabel",(i)=> List.First(Table.SelectRows(Table2, each [Property]="IssueType" and [Value]=i[IssueType]) [Label])),
#"Added Custom2" = Table.AddColumn(#"Added Custom","StatusLabel",(i)=> List.First(Table.SelectRows(Table2, each [Property]="Status" and [Value]=i[Status]) [Label]))
in #"Added Custom2"

Vous pouvez décompresser, fusionner, pivoter mais je soupçonne que cette méthode est plus rapide pour les fichiers plus volumineux

1
horseyride 2 sept. 2020 à 15:25