Power BI以另外一个表的规则分段powerbi统计出现次数函数数量?

之前分享了通过切换不同的粒度类型,来动态显示最近的N个粒度期间的数据(PowerBI动态显示最近N期的数据),在这个案例中,用了独立的日期表作为切片器,这个做法也可以进一步优化,改用建立关系的日期粒度表来作为切片器,以便与报表的其他图表交互。

原模型不变,这里将切片器中的字段都改为来自日期粒度表,并写一个度量值:

并用这个度量值作为柱形图的值,未建立的关系的独立日期粒度表作为坐标轴,同样可以实现上篇文章的效果:

此外,最近被星友问到,对于这种动态的粒度,如何选择不同粒度类型,来正确计算出上年同期以及上期的数据呢?

对于上年同期的数据,相对比较简单,只需要这样写一个度量值就可以了:

这个度量值的逻辑是将当前日期粒度表所筛选的日期范围,视同日期表的日期范围,并利用时间智能函数返回该范围的上年同期的时间段;当然,为了避免日期粒度表同时筛选,用ALL来忽略掉它。

这样,无论选择任何粒度,都可以轻松计算出上年同期的数据。

计算当前粒度的上期,同样可以使用上面度量值的思路,但是稍微麻烦的一点是,对于不同的粒度,计算上期用到的时间智能函数是不同的,所以还需要先判断当前所选择的粒度类型。

上期的度量值写法如下:

当粒度类型为年时,上期就是上年同期,所以直接用上面建的上年同期度量值,当为其他粒度类型,则通过DATEADD函数来相应的计算该粒度的上期的时间段。

用本期、上期以及上年同期这三个度量值做个柱形图,来看看动态效果:

有上期和上年同期的数据以后,再计算任何粒度的同比和环比也就可以很轻松的实现了。

这个例子是我实际工作中需要,但方法不是我原创,我在大牛代码基础上夹带了一丁点私货做了一点点改进而已。

先来看需求:如下图,订单数量居于不同区间获得不同数额的提成。而梯度划分和每个区间的提成数额都会发生变化,要求能快捷更新。


如果梯度和各区间提成数额都是固定的,很好办。但是如果梯度表要动态变化,就比较头大。

我本来想用DAX来做,没搞定;转而求其次用PowerQuery来处理。

首先,如果梯度表要动态更新,那么它必须成为数据源表,而不能写死在公式里。

其次,既然梯度表是数据源,而又需要根据不同订单量从其每一行提取数据,那么这里就需要一个函数来动态取值。这个函数如下:

前面说了(x)=>x可以用“(单数)=>单数”代替,结果是一样的。最后结果就是把表格变成了一个文本串,这个文本串可以直接放到Expression.Evaluate()的参数中,进行运算,得到结果,供下一步处理。

目前采用PowerQuery解决,用DAX是不是更简单些呢,我估计如果梯度是写死的,用DAX估计会简单些。但考虑到梯度是动态变化的,需要变成数据源表,估计DAX处理起来就不如PowerQuery了。但具体结果如何,还有待试验了才知道。

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...

  • 芦花趁着最后的秋色还在风中摇曳。芦苇上密生的灰褐色柔毛,源源不绝地形成花絮,撒向轻雾盘旋的天空,撒向水气氤...

  • "生长是一个神奇的过程,几天、几周、几个月,孩子们就能完全脱离之前的模样,身体逐渐伸展开展。而衣服却不会因为身体的...

  • 1、从文章中学到的 尊重是为人处世中很重要的一点,看似很简单却很难做到,而人与人交往的前提就是尊重,只有做到...

  • 中午时分,老公正在厨房做饭菜,我在旁边打下手,宝贝女儿还未放学回来。 12:26门铃准时响起,老公擦干手,小跑去开...

我要回帖

更多关于 powerbi统计出现次数函数 的文章

 

随机推荐