Powerbi 功率双表变换

Powerbi 功率双表变换,powerbi,powerquery,Powerbi,Powerquery,我试图在Power BI中找到一种方法,将表格转换为特定格式,以实现自定义可视化。我想做的转换是下图: 这可能吗?我曾想过取消激励或转置,但似乎还没有弄清楚如何克服这一点。我并不真正理解此转换的用例,但您可以通过复制源表、删除除2之外的所有列,然后追加所有副本来实现 假设我们有一个表,名为table,如下所示: 通过单击新源->空白查询,制作表的3份副本: 然后输入=Table作为查询文本,其中Table是源表的名称。如果我们的查询被命名为Query1、Query2和Query3,然后单击

我试图在Power BI中找到一种方法,将表格转换为特定格式,以实现自定义可视化。我想做的转换是下图:


这可能吗?我曾想过取消激励或转置,但似乎还没有弄清楚如何克服这一点。

我并不真正理解此转换的用例,但您可以通过复制源表、删除除2之外的所有列,然后追加所有副本来实现

假设我们有一个表,名为
table
,如下所示:

通过单击
新源
->
空白查询
,制作表的3份副本:

然后输入
=Table
作为查询文本,其中
Table
是源表的名称。如果我们的查询被命名为
Query1
Query2
Query3
,然后单击每个查询并删除额外的列,在
Query1
中保留
A
B
,在
Query2
中保留
B
C
,在
Query3
中保留
C
D
。在所有3个查询中以相同的方式重命名其余列,然后单击
追加查询
追加查询为新
,然后选择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

我并不真正理解这种转换的用例,但您可以通过复制源表、删除除2之外的所有列,然后追加所有副本来实现所需的功能

假设我们有一个表,名为
table
,如下所示:

通过单击
新源
->
空白查询
,制作表的3份副本:

然后输入
=Table
作为查询文本,其中
Table
是源表的名称。如果我们的查询被命名为
Query1
Query2
Query3
,然后单击每个查询并删除额外的列,在
Query1
中保留
A
B
,在
Query2
中保留
B
C
,在
Query3
中保留
C
D
。在所有3个查询中以相同的方式重命名其余列,然后单击
追加查询
追加查询为新
,然后选择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

我认为这种转换会很有用的一个用例是,当我们有这样的时间序列数据时,我们想要比较当前和最后一个周期的值

这里是一个关于列数可变的情况的版本

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

我认为这种转换会很有用的一个用例是,当我们有这样的时间序列数据时,我们想要比较当前和最后一个周期的值

这里是一个关于列数可变的情况的版本

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
我的意思是,这种转换的“规则”是,您需要一个表,其中第一列和第二列构成原始集合中的每个“对”项。给定加载到Power Query中的数据,如下所示:

我将转换数据:

然后对查询进行两次引用。在第一行中删除最后一行,在第二行中删除第一行。然后将索引列添加到两者

(第一次引用的结果如下所示)

然后,只需在两个引用之间进行合并,就可以得到示例中显示的两列输出。

我的意思是,此转换的“规则”是,然后您需要一个表,其中第一列和第二列构成原始集合中的每一“对”项。给定加载到Power Query中的数据,如下所示:

我将转换数据:

然后对查询进行两次引用。在第一行中删除最后一行,在第二行中删除第一行。然后将索引列添加到两者

(第一次引用的结果如下所示)

然后,只需在两个引用之间进行合并,就可以得到示例中显示的两列输出