1

我试图在 Power BI 中找到一种将表格转换为特定格式以进行自定义可视化的方法。我想做的转换如下图: 在此处输入图像描述

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

4

3 回答 3

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
于 2019-11-18T17:54:16.207 回答
2

我不太了解这种转换的用例,但是您可以通过复制源表,删除除 2 之外的所有列,然后附加所有副本来实现您想要的。

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

在此处输入图像描述

New Source通过单击->制作表格的 3 个副本Blank Query

在此处输入图像描述

并输入=Table作为查询文本,其中Table是我们的源表的名称。如果我们的查询名为Query1,Query2Query3,然后单击它们中的每一个并删除多余的列并保留ABin Query1、keep Band CinQuery2Cand Din Query3。在所有 3 个查询中将剩余的列重命名为相同的名称,然后单击Append QueriesAppend 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
于 2019-11-17T13:26:31.437 回答
1

我暗示这个转换的“规则”是你想要一个表,其中第一列和第二列形成原始集合中的每个“对”项目。给定加载到 Power Query 中的数据,如下所示:

在此处输入图像描述

我会转置数据:

在此处输入图像描述

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

(第一个参考的结果如下所示)

在此处输入图像描述

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

于 2019-11-18T18:00:42.483 回答