相关文章推荐
爱听歌的刺猬  ·  在 React ...·  4 月前    · 
个性的小马驹  ·  php mysql PDO的使用 ...·  1 年前    · 

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 =
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 =
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的初学者。

受经济危机的影响,BI(商业智能)市场增速放缓。不过在云计算、数据管理的融合趋势,以及开源浪潮的影响之下,BI开始释放出崭新的活力与激情。未来十年,变革与创新有望缔造一个全新的BI世界。   经济危机对于各个IT领域造成的影响不尽相同。一方面,紧缩的IT预算反而激发了一些与管理、自动化相关的IT需求;但另一方面,包括BI在内,一些与业务数据深度挖掘与处理的需求开始放缓。据Gartner在2010年4月发布的《2009年市场份额:商业智能、分析和绩效管理软件》调查显示,与2008年相比,整个BI市场规模在2009年增长了4.2%,达到近93亿美元。其中,BI平台占BI软件收入的64.2%,全面 前端展示时需要将模板字符串过滤器拼接起来展示,这种情况下,过滤器返回的时0。我想要的是–分钟,而返回的是0分钟。 <template> <span>{{ `${ msg | formatText }${ times_unit }` }}</span> </template> filters: ​在日常的分析中,经常会碰到计算结果为值的情况,比如计算上年同期数据,度量值如下:上年销售金额 = CALCULATE([销售金额], SAMEPERIODLASTYEAR('日期表'[日期]))在业务的第一年,上年同期数据是不存在的,就会返回值。值在矩阵和表格中什么都不显示,像这样:而在卡片图中,直接显示大大的两个字:白,非常扎眼,那怎么能不这样显示呢?常用的做法是将值以... 对于自然日期维度的业务数据,在PowerBI中可以轻松的使用时间智能函数来进行各种时间指标的计算(各种时间指标的度量值,让你一次看个够),但如果不是按标准的日历,甚至都没有日期维度,该怎么计算呢?比如下面这个业务数据,每个订单时间并不是按日期来区分的,而是按期间来划分,一年划分为6个期间,分别为P1、P2……上面的数据连个日期维度都没有,如何计算每一期的同比和环比呢?其实计算逻辑与日期维... 2、在运行输入框内输入regedit,按回车键打开注册表; 3、在注册表中找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa项; 4、点击Lsa项,点击下方跳出的FipsAlgori... Desktop开发工具,主界面分布开发报表常用的多个面板: (1)顶部:主菜单,打开Home菜单,通过“GetData”创建数据连接;通过“Edit Queries”对数据源进行编辑。 (2)左边框:分别是Report,Data和Relationships,在开发报表时,用于切换视图,在Relationships界面中,管理 Power BI切片器的值出现Blank的时候,一般由以下两种原因导致: 1.当前切片器的字段中就包含值或者Null 2.与切片器字段所在的维表关联的事实表中,关联的字段存在值、Null或者值不在维表中。 这里需要注意的是,报表整个模型中,任意一个事实表中存在上述的情况,都会导致维表的切片器出现Blank.所以不能只检查当前Page用到的事实表。 今天写Powershell(以下简称PS)调用Excel的时候发现判断某个单元格出现非Null的情况(肉眼看上去是,而且选择那个单元格双击也是),回顾在写Vba的时候都是 range("A1") <> "" , 但是PS规范里除了 ""(也就是Emtpy)还有一个Null,这样在判断一个单元格是否为真的的情况下必须用 $sht.range("A1").value() -ne ...