首页 > 解决方案 > Power BI - 如何从原始源创建另一个表

问题描述

我编写了一个将数据拉入 Power BI 的查询。我想知道是否可以创建另一个查询,该查询在没有某些列的情况下提取原始数据。我知道我可以删除一列,但我想知道是否可以删除一列并聚合其他列。我想从后端(PowerQuery)执行此操作。我知道我可以在不包含其他列的情况下创建另一个查询,但由于这是实时数据,我需要从原始查询中提取数据。

这是原始数据。

在此处输入图像描述

这就是我想要达到的目标。我想删除“代码”列,但同时还要聚合其他列(呼叫、无效)和不同的列(日期、名称、连接类型)。

在此处输入图像描述

这在电源查询上可能吗?!

标签: powerbipowerquery

解决方案


当然这是可能的。以下是如何在 Power Query 中执行此操作的示例 M 代码:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("ndKxCoMwEAbgd8ksohdN5y527VDoIA5BQwnYCufSx28oKZHmzqQdJEL4uPvv0vcCoDyUUEElCnExT726s3bf1aKZ3Hm8G7Sjdn/yfTMUtAHSNKQ5mQVvVrOV2oT6r5b0ajbrmlHurNF+B+tQP0bj++aJzCfdvKCdtqGi9iAB2Vz0wgJsyDFu+qz5pxEV22dsuH0myQ4lacKi2x9yBaVIBaSKt5bTYbwy9tmT6pMrGqJKQMVBP5PhBQ==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Date = _t, Name = _t, Code = _t, #"Connection Type" = _t, Country = _t, Calls = _t, Invalid = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Name", type text}, {"Code", type text}, {"Connection Type", type text}, {"Country", type text}, {"Calls", Int64.Type}, {"Invalid", Int64.Type}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"Code"}),
    #"Grouped Rows" = Table.Group(#"Removed Columns", {"Date", "Name", "Connection Type", "Country"}, {{"Calls", each List.Sum([Calls]), type text}, {"Invalid", each List.Sum([Invalid]), type text}})
in
    #"Grouped Rows"

Table.RemoveColumns将删除该Code列并将Table.Group数据分组到指定列(DateName和)Connection TypeCountry聚合数据,在这种情况下求和(CallsInvalid)。

您只能使用 UI 来执行此操作。在 Power Query 编辑器中,右键单击Code列的标题并选择Remove。然后从Transform选项卡单击最左边的按钮Group By并填写如下:

在此处输入图像描述


推荐阅读