Tenho duas tabelas que preciso mesclar usando uma coluna de ID. Ambas têm valores duplicados, mas preciso apenas dos valores máximos. Então, classifiquei as tabelas em ordem decrescente e removi as duplicatas. No entanto, após mesclar as tabelas, em vez de receber o valor máximo, a tabela mesclada retorna o primeiro valor antes da classificação.
As tabelas são assim:
EU IA | valor1 |
---|---|
um | 8.7 |
um | 10.9 |
b | 5.2 |
c | 9.0 |
EU IA | valor2 |
---|---|
um | 50 |
b | 60 |
c | 80 |
Classifiquei as tabelas e removi as duplicatas:
EU IA | valor1 |
---|---|
um | 10.9 |
b | 5.2 |
c | 9.0 |
EU IA | valor2 |
---|---|
um | 50 |
b | 60 |
c | 80 |
Após a fusão, recebo isto:
EU IA | valor1 | valor2 |
---|---|---|
um | 8.7 | 50 |
b | 5.2 | 60 |
c | 9.0 | 80 |
Mas eu quero isso:
EU IA | valor1 | valor2 |
---|---|---|
um | 10.9 | 50 |
b | 5.2 | 60 |
c | 9.0 | 80 |
É assim que meu código se parece:
#first table to be merged
let
source = Table.Combine({table1, table2}),
sorted = Table.Sort(source,{{"value1", Order.Descending}}),
remove_duplicates = Table.Distinct(sorted, {"ID"}),
table1_final = Table.Sort(remove_duplicates ,{{"ID", Order.Ascending}})
#second table to be merged
source2 = Table.Combine({table1, table2}),
sorted2 = Table.Sort(source2,{{"value2", Order.Descending}}),
remove_duplicates2 = Table.Distinct(sorted2, {"ID"}),
table2_final = Table.Sort(remove_duplicates ,{{"ID", Order.Ascending}})
#merged table
source3 = Table.NestedJoin(table1_final, {"ID"}, table2_final , {"ID"}, "table1_final ", JoinKind.FullOuter),
expanded = Table.ExpandTableColumn(source3 , "table2_final", {"value2"}, {"value2"})
in
expanded
Pegue a primeira tabela. Agrupe-a para obter os máximos
Mesclar a segunda tabela. Expandir a coluna value2
Código completo