• #POWERBI_指标监控(第二部分,周期内下降天数及日期明细)


    在指标监控的第一部分文章中,我们已经讲了,如何用DAX去查询一段周期内连续下降或者上升指标。

    需要复习的同学可以点击下方链接:

    https://www.cnblogs.com/simone331/p/17730677.html

    根据学友上篇文章的反馈,今天,我们来拓展学 习一下,如何计算一个周期内(非连续),下降或上升天数统计,以及展示他们的明细日期。

    学会第二部分内容,我们又可以进一步丰富我们的指标监控看板了。

    我们先来看一下成品的效果。

    一:数据源准备及建立基础度量值

    还是用我们,第一部分案例用的数据源。

    建立基础度量值,产品销量和产品销量日环比度量值,具体代码如下

    1
    2
    3
    4
    产品销量 = CALCULATE(SUM('数据源'[销量]))
    产品销量日环比 =
    VAR T1 = CALCULATE([产品销量],DATEADD('日期表'[Date],-1,DAY))
    RETURN DIVIDE([产品销量]-T1,T1)

    二:建立指标度量值

    2.1周期N天_下降天数的度量值

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    产品销量_周期N天_下降天数 =
        VAR N='参数'[参数_值] ///控制天数,可以是一个固定的值,也可以是一个字段参数,动态的值
        VAR date_table =
            SUMMARIZE
                (FILTER('日期表','日期表'[Date]>=MAX('数据源'[日期])-N+1
                &&'日期表'[Date]<=MAX('数据源'[日期])),
                '日期表'[Date])
        VAR sales_table =
            ADDCOLUMNS(date_table,"产品日环比",[产品销量日环比])
        RETURN COUNTROWS(FILTER(sales_table,[产品销量日环比]<0))

    代码解释:代码的前半段,与我们第一部分案例代码一致,就不重复讲解了,有需要的朋友,可以去第一篇案例查看对应代码解释,不同的点在于,我们这段代码返回的值是

    RETURN  COUNTROWS(FILTER(sales_table,[产品销量日环比]<0))

    这里怎么去理解呢?

    我们的sales_table 是由N天日期与销量日环比组成的虚拟表,这里存储了我们所有下降日期及日环比指标,我们通过FILTER(sales_table,[产品销量日环比]<0),把指标下降的日期的行筛选了出来。

    然后通过COUNTROWS去对行进行计数,那么将返回一个值,这个值就是销量日环比小于0的天数,即下降的天数。

    这里的N是一个变量。如果我们的参数设置为30天,那么就会返回我们30天内所有的下降天数。

    2.2 周期N天_下降日期明细

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    产品销量_周期N天_下降日期明细 =
        VAR N='参数'[参数_值] ///控制天数,可以是一个固定的值,也可以是一个字段参数,动态的值
        VAR date_table =
            SUMMARIZE
                (FILTER('日期表','日期表'[Date]>=MAX('数据源'[日期])-N+1
                &&'日期表'[Date]<=MAX('数据源'[日期])),
                '日期表'[Date])
        VAR sales_table =
            ADDCOLUMNS(date_table,"产品日环比",[产品销量日环比])
        VAR sales_table_below = FILTER(sales_table,[产品销量日环比]<0)
        RETURN
        CONCATENATEX(sales_table_below,'日期表'[Date]," , ")

    代码解释:

    因为我们需要下降日期的明细,所以2.1中的代码就不适用了,因为countrows返回的是一个值,并不是文本,这里就到了CONCATENATEX函数发挥作用了,sales_table_below 变量 是所有下降日期的表,我们通过CONCATENATEX将这个表中的日期进行拼接,以逗号为分割便得到了最后我们需要的效果。

    三:总结

    一句话总结这个案例,就是通过构建虚拟日期表,在虚拟日期表的基础上构建虚拟的日期指标表,最后根据需要,去对这个虚拟的日期指标表,进行计数、拼接等等操作,来实现我们的业务模块功能。

    如果你感兴趣,并且对文章内容有疑问,欢迎私聊沟通交流。

    Enjoy Dax By Simone

  • 相关阅读:
    pcl--第七节 点云配准
    【RTOS训练营】晚课学员问题
    UE4 材质学习 (06-LandscapeLayerBlend地形节点的应用例子)
    基于Java web的校园滴滴代驾管理系统 毕业设计-附源码260839
    从零开始,探究Redis分布式锁底层原理!
    4、React组件三大核心属性
    LeetCode 152. 乘积最大子数组
    常见插件 资源拷贝插件
    312页18万字数字化校园总体建设方案
    robots.txt漏洞
  • 原文地址:https://www.cnblogs.com/simone331/p/17732940.html