Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers. Get Fabric certified for FREE! Learn more
场景:
本博客将重点介绍如何在 Power BI 中使用 Power Query 计算分组。我们将提供一个包含产品和值两个字段的数据源,目标是设计一个直方图,以更好地传达关于产品基础的见解。
最初导入的表格模型如下所示:
详细步骤:
但是,表中没有分组列,因此您需要创建一个值分组列。我们可以添加排序步骤,以避免分组后行排序改变。
解决方案 1:
为了得到值分组:首先,找出值分组的最小值(例如 22 → 20、34 → 30),并删除个位数。您可以将值除以 10,然后使用 Number.IntegerDivide 对其向下取整。结果乘以 10。找到最小值后,再加 9 获得最大值。使用 Text.Format 合并值分组的最小值和最大值,以避免因数据类型的不同而引起的错误。
let
源 = Table.FromRows(
Json.Document(
Binary.Decompress(
Binary.FromText(
"Lc7LDYAwDAPQXXLuAVqKuPIrfxaIuv8axA63J8eJoiqjBIlRalCZwETOxp5aEA7kCjZkATO5GZMXdmz5rQOpF05j5+mFNeo2ZeeDeUu+/zP1Aw==",
BinaryEncoding.Base64
),
Compression.Deflate
)
),
let
_t = ((type nullable text) meta [Serialized.Text = true])
in
type table [产品 = _t, 值 = _t]
),
#"更改数据类型" = Table.TransformColumnTypes(源, {{"值", Int64.Type}}),
#"分组" = Table.AddColumn(
#"更改数据类型",
"分组",
each Text.Format(
"#[left]-#[right]",
[left = Number.IntegerDivide([值] / 10, 1) * 10, right = left + 9]
)
),
#"排序" = Table.Sort(分组, {"分组", 0})
in
#"排序"
结果:
解决方案 2:
例如,如果 10-20 值分组中没有产品,按照解决方案 1 中的分组方法则不会显示 10-20组的数据。我们可以使用另一种方法:
let
源 = Table.FromRows(
Json.Document(
Binary.Decompress(
Binary.FromText(
"Lc7LDYAwDAPQXXLuAVqKuPIrfxaIuv8axA63J8eJoiqjBIlRalCZwETOxp5aEA7kCjZkATO5GZMXdmz5rQOpF05j5+mFNeo2ZeeDeUu+/zP1Aw==",
BinaryEncoding.Base64
),
Compression.Deflate
)
),
let
_t = ((type nullable text) meta [Serialized.Text = true])
in
type table [产品 = _t, 值 = _t]
),
#"更改数据类型 1" = Table.TransformColumnTypes(源, {{"产品", type text}, {"值", Int64.Type}}),
#"分组" = Table.FromColumns(
{List.Transform(List.Numbers(0, 7, 10), each Text.Format("#{0}-#{1}", {_, _ + 9}))},
{"分组"}
),
#"计数" = Table.AddColumn(
分组,
"行数",
each Table.RowCount(
Table.SelectRows(
#"更改数据类型 1",
(x) =>
x[值]
>= Number.From(Text.Split([分组], "-"){0})
and x[值] < Number.From(Text.Split([分组], "-"){1})
)
)
),
#"更改数据类型 2" = Table.TransformColumnTypes(计数, {{"行数", Int64.Type}})
in
#"更改数据类型 2"
结果:
解决方案 3:
Power BI Desktop 还内置了创建新建组的功能,但坐标轴的形式是固定的。如果要自定义坐标轴,可以参考第一种和第二种解决方案。
调整装箱大小:
结果:
总结:
您可以根据需求选择使用不同的方法。在许多情况下,第二种方法更适用。
原作者:Liang
审核:Ula Huang & Kerry Wang
翻译:Yaning Yang
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.