专栏名称: PowerBI战友联盟
微软 Power BI MVP BI佐罗 带你学习BI真经。
目录
相关文章推荐
51好读  ›  专栏  ›  PowerBI战友联盟

如何在 PowerBI 中高效模拟广泛数据范围?

PowerBI战友联盟  · 公众号  ·  · 2024-12-20 18:46

正文

欢迎关注 【BI佐罗数据分析】 ,今日精华包括:视频案例,技巧干货。

↓ 预约直播,更多干货,不要错过 ↓

在 Power BI 中, 参数 是一项被低估但极具潜力的功能!这里指的不是 Power Query 中的参数,而是曾经被称为“假设分析(What-if)”的参数,Power BI 中的字段参数。

参数 为报告用户提供了一种模拟结果的能力,是一种灵活而强大的工具。比如,我们可以通过它模拟不同的成本、收入或其他变量。然而,当涉及到较大的数值范围时,传统参数设置可能会带来一些问题。接下来,我们通过一个案例来探讨如何优化参数的使用。

假设我们需要一个从 1 到 10000 的参数,步长为 1。这意味着会生成一张包含 10000 行的表,如下:

当将这些参数值加载到切片器中时,Power BI 无法显示所有 10000 个值。切片器会对数据进行采样,使得我们难以精准选择某个值。例如,当我们尝试将参数设置为 1125 时,它会自动变为 1120,这说明参数中并不存在 1125 这个值

假设我们希望用户能够模拟一个商品的成本,比如手表的价格。手表的价格可能从二手的 1 元到超级高端的奢华手表的 100000 元不等。如果我们想在报表中模拟手表成本,就不再是 10000 行,而是 100000 行!

问题在于,值越高,你对精度的要求就越低。如果一块手表的价格是 2 元或 8 元,这个差别很大,这是一个 300% 的差异!但是如果手表的价格是 96000 元或 96008 元,你可能根本不会在意。这只是 0.008% 的差异。

为了解决这个问题,你可以更改生成参数表的公式,使其在不同的数值范围内有不同的增量步长,然后通过 UNION 函数将它们合并,例如:

  1. 1. 对于较小的数值范围(如 1 到 20),步长可以设置为 1,保证高精度。

  2. 2. 对于中等数值范围(如 20 到 100),步长可以设置为 5。

  3. 3. 对于较大的数值范围(如 100 到 1000),步长可以设置为 20。

  4. 4. 对于非常大的数值范围(如 1000 到 500000),步长可以进一步增大到 1000。

以下是一个示例 DAX 表达式:

UNION (    GENERATESERIES ( 1 , 19 , 1 ) ,    GENERATESERIES ( 20 , 95 , 5 ) ,    GENERATESERIES ( 100 , 980 , 20 ) ,    GENERATESERIES ( 1000 , 9900 , 100 ) ,    GENERATESERIES ( 10000 , 95000 , 5000 ) ,    GENERATESERIES ( 100000 , 500000 , 10000 ))

这张表总共只有 229 行 ,却覆盖了从 1 到 500000 的范围!

切片器可以轻松处理 229 个值,因此一切都可以选择。我可以非常精确地选择开头的值,例如 7。

可以选择 90、95 或 100。如果我们需要更精确,可以将步长改为 2 而不是 5。

由于数值是以指数增长的,所以你必须对滑块的行为保持谨慎。更多地关注选中的值,而不是滑块的位置。注意从 7 到 95 的差别。如果我将切片器放在中间,我得到 4000。







请到「今天看啥」查看全文