欢迎关注
【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 到 20),步长可以设置为 1,保证高精度。
-
2. 对于中等数值范围(如 20 到 100),步长可以设置为 5。
-
3. 对于较大的数值范围(如 100 到 1000),步长可以设置为 20。
-
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。