答案 0 :(得分:2)
我不太了解这种转换的用例,但是您可以通过复制源表,删除除2之外的所有列,然后附加所有副本来实现所需的功能。
假设我们有一个名为Table
的表,如下所示:
通过单击New Source
-> Blank Query
来制作表的3个副本:
,然后输入=Table
作为查询文本,其中Table
是源表的名称。如果我们的查询分别命名为Query1
,Query2
和Query3
,则单击它们中的每个并删除多余的列,并将A
和B
保留在{{ 1}},将Query1
中的B
和C
保留在Query2
中,并将C
和D
保留在Query3
中。在所有3个查询中将其余列重命名为相同的名称,然后单击Append Queries
或Append Queries as New
,然后选择3个副本:
这将为您提供所需的结果:
或者您可以一次性完成,而无需创建三个不同的查询。使您的“查询”窗格有点混乱
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUXICYmcgdlGKjQUA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [c1 = _t, c2 = _t, c3 = _t, c4 = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"c1", type text}, {"c2", type text}, {"c3", type text}, {"c4", type text}}),
_t1 = Table.SelectColumns(#"Changed Type", {"c1", "c2"}),
_t1_r = Table.RenameColumns(_t1, {{"c1", "ca"}, {"c2", "cb"}}),
_t2 = Table.SelectColumns(#"Changed Type", {"c2", "c3"}),
_t2_r = Table.RenameColumns(_t2, {{"c2", "ca"}, {"c3", "cb"}}),
_t3 = Table.SelectColumns(#"Changed Type", {"c3", "c4"}),
_t3_r = Table.RenameColumns(_t3, {{"c3", "ca"}, {"c4", "cb"}}),
_res = Table.Combine({_t1_r, _t2_r, _t3_r})
in
_res
答案 1 :(得分:2)
我可以想到的这种转换的一个用例是有用的,当我们拥有这样的时间序列数据时,我们想比较当前周期和最后一个周期的值。
因此,这是列数可变的情况的版本。
let
Source = ...,
SingleRow = Table.SingleRow(Source),
Values = Record.FieldValues(SingleRow),
Pairs = List.Zip({List.RemoveLastN(Values, 1), List.RemoveFirstN(Values, 1)}),
Result = Table.FromRows(Pairs, {"Last", "Current"})
in
Result
答案 2 :(得分:1)