BI技巧丨判定0与空
BOSS:那个谁!白茶啊,过来过来,有个需求和你说一下!
白茶:(黑人问号?)咋了,BOSS?
BOSS:是这样的,我们在十一期间啊,售卖了一部分商品,但是部分商品有些特殊,一部分销售金额为空,这个我们在计算毛利的时候需要让它成本乘以1.5;一部分商品的销售金额为0,这个计算毛利的时候统一显示为0.01,能处理不?
白茶:(????)BOSS,能到是能,介个是啥算法?
BOSS:别问太多,问就是公司业务!
白茶:哦,了解!
常规情况下,我们去衡量数据质量的时候,往往会在意有数值的数据,但是在实际业务中,特别是偏向于财务的算法中,0和空有些时候也是一个比较重要的计算依据。
先来看看本期的案例数据:
数据比较简单,只有6列,通过截图我们可以看到部分数据的销售金额为0,部分为空,但是却有成本,有数量。
正常情况下我们计算只需要考虑销售金额不为空的数据就可以,但是实际业务可能存在调拨库存、赠品销售的情况。
因此有些时候我们在偏向于财务场景应用的时候,就需要我们考量到这种情况,在PowerBI中如何区分0与空呢?
我们在PowerBI中通过Filter函数来筛选一下看看。
代码:
筛选0 =
FILTER ( 'Data', 'Data'[SalesAmt] = 0 )
可以看到,虽然我们通过Filter函数进行了0的筛选,但是实际出来的结果依然是包含空的情况。我们继续筛选一下空值看一下。
代码;
筛选空 =
FILTER ( 'Data', 'Data'[SalesAmt] = BLANK() )
结果同上,依然没有其他变化。
小伙伴可以思考一下,这个问题该如何解决?
3
2
1
...
解决的办法有两种:严格相等与ISBLANK。
严格相等:
通常情况下我们使用的都是相等运算符,这种情况下我们可以使用严格相等来区分0与空。
代码:
严格筛选0 =
FILTER ( 'Data', 'Data'[SalesAmt] == 0 )
代码:
严格筛选空 =
FILTER ( 'Data', 'Data'[SalesAmt] == BLANK() )
ISBLANK:
ISBLANK可以识别空。
代码:
ISBLANK筛选0 =
FILTER ( 'Data', NOT ISBLANK ( 'Data'[SalesAmt] ) && 'Data'[SalesAmt] = 0 )
代码:
ISBLANK筛选空 =
FILTER ( 'Data', ISBLANK ( 'Data'[SalesAmt] ) )
所以,我们可以通过这两种处理办法来完成BOSS最开始提到的需求。
一部分销售金额为空,这个我们在计算毛利的时候需要让它成本乘以1.5;
一部分商品的销售金额为0,这个计算毛利的时候统一显示为0.01。
毛利1:
毛利1 =
VAR AMT =
SUM ( 'Data'[SalesAmt] )
VAR COST =
SUMX ( 'Data', [Cost] * [Quantity] )
VAR Result =
SWITCH (
TRUE (),
AMT == BLANK (),
AMT - COST * 1.5,
AMT == 0, 0.01,
AMT - COST
)
RETURN
Result
结果如下:
毛利2:
毛利2 =
VAR AMT =
SUM ( 'Data'[SalesAmt] )
VAR COST =
SUMX ( 'Data', [Cost] * [Quantity] )
VAR Result =
SWITCH ( TRUE (), ISBLANK ( AMT ), AMT - COST * 1.5, AMT = 0, 0.01, AMT - COST )
RETURN
Result
结果如下:
小伙伴们❤GET了么?
(BOSS:可以可以!)
这里是白茶,一个PowerBI的初学者。
数据分析进阶之路,带你深入了解可视化技巧。