在Power BI中,我有一个如下表:
Customer; Amount Paid; Pay CCY; Amount Received; Received CCY
A 10 USD -20 GBP
B 50 CAD -30 USD
C 100 GBP -50 CAD
我想将表转换为:
Customer Amount CCY
A 10 USD
B 50 CAD
C 100 GBP
A -20 GBP
B -30 USD
C -50 CAD
有简单的方法吗?
答案 0 :(得分:0)
在查询编辑器中,选择金额列,然后单击“转换”选项卡下的“取消透视列”。
结果应如下所示:
然后,您可以定义一个自定义列,以基于“属性”列或“值”列选择要使用的电流。然后删除多余的列。
整个查询(从“高级编辑器”粘贴)看起来像这样:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTI0ABKhwS5AUtcIxHZ3ClCK1YlWcgKyTUECzo5gSWOYQpCkM1gnTDlQFq4yNhYA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Customer = _t, #"Amount Paid" = _t, #"Pay CCY" = _t, #"Amount Received" = _t, #"Recieved CCY" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Customer", type text}, {"Amount Paid", Int64.Type}, {"Pay CCY", type text}, {"Amount Received", Int64.Type}, {"Recieved CCY", type text}}),
#"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Customer", "Pay CCY", "Recieved CCY"}, "Attribute", "Amount"),
#"Sorted Rows" = Table.Sort(#"Unpivoted Columns",{{"Attribute", Order.Ascending}, {"Customer", Order.Ascending}}),
#"Added Custom" = Table.AddColumn(#"Sorted Rows", "CCY", each if [Amount] > 0 then [Pay CCY] else [Recieved CCY], type text),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Pay CCY", "Recieved CCY", "Attribute"})
in
#"Removed Columns"
答案 1 :(得分:0)
我只是将表格附加到其自身,这是M -Code
let
Source = Excel.CurrentWorkbook(){[Name="tblData"]}[Content],
tblStart1 = Table.TransformColumnTypes(Source,{{"Customer", type text}, {"Amount Paid", Int64.Type}, {"Pay CCY", type text}, {"Amount Received", Int64.Type}, {"Received CCY", type text}}),
removeColumns1 = Table.SelectColumns(tblStart1,{"Customer", "Amount Paid", "Pay CCY"}),
tblLeft = Table.RenameColumns(removeColumns1,{{"Amount Paid", "Amount"}, {"Pay CCY", "CCY"}}),
tblStart2 = tblStart1,
removeColumns = Table.SelectColumns(tblStart2,{"Customer", "Amount Received", "Received CCY"}),
tblRight = Table.RenameColumns(removeColumns,{{"Amount Received", "Amount"}, {"Received CCY", "CCY"}}),
tblCombine = Table.Combine({tblLeft,tblRight})
in
tblCombine
结果是