使用Power Query / Get&转换(Excel 2016)以组合表

时间:2016-04-15 07:15:37

标签: powerquery m

如何根据公共索引列“country”组合多个表以生成货币转换,如下图所示:

本币交易*外汇汇率=货币调整

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

我不认为(A)和(B)的数学与(C)对齐。如果我有2英镑,那应该接近3美元,而不是30美分。

您希望在两个表之间组合行的内容通常称为左连接。您可以单击“合并”按钮以组合行。您想从(A)进行连接并向其添加(B)。完成后,您可以使用加分列和除数乘以计算货币汇率并应用它。

完成的解决方案看起来像最终查询:

section Section1;

shared LocalCurrencyTransactions = let
    Source = Csv.Document("Country,LocalCurrencyAmounts
    US,1
    UK,2.13
    JAPAN,328.08
    INDIA,66.56
    US,2
    UK,0.71
    JAPAN,109.36
    INDIA,133.12"),
    #"Promoted Headers" = Table.PromoteHeaders(Source),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Country", type text}, {"LocalCurrencyAmounts", type number}})
in
    #"Changed Type";

shared #"FX Rates" = let
    Source = Csv.Document("Country,LocalCurrency,USD
    US,1,$1.00
    UK,0.71,$1.00
    JAPAN,109.36,$1.00
    INDIA,66.56,$1.00"),
    #"Promoted Headers" = Table.PromoteHeaders(Source),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Country", type text}, {"LocalCurrency", type number}, {"USD", Int64.Type}})
in
    #"Changed Type";

shared CurrencyAdjustedToUSD = let
    Source = LocalCurrencyTransactions,
    #"Merged Queries" = Table.NestedJoin(Source,{"Country"},#"FX Rates",{"Country"},"NewColumn",JoinKind.LeftOuter),
    #"Expanded NewColumn" = Table.ExpandTableColumn(#"Merged Queries", "NewColumn", {"LocalCurrency", "USD"}, {"NewColumn.LocalCurrency", "NewColumn.USD"}),
    #"Inserted Division" = Table.AddColumn(#"Expanded NewColumn", "NewColumn.ConversionRate", each [NewColumn.USD] / [NewColumn.LocalCurrency], type number),
    #"Inserted Multiplication" = Table.AddColumn(#"Inserted Division", "USD", each List.Product({[LocalCurrencyAmounts], [NewColumn.ConversionRate]}), type number),
    #"Removed Columns" = Table.RemoveColumns(#"Inserted Multiplication",{"NewColumn.LocalCurrency", "NewColumn.USD", "NewColumn.ConversionRate"})
in
    #"Removed Columns";