[]
        
在线Demo 免费试用
(Showing Draft Content)

累计分析

1. 需求描述

累计分析一般用来做累积的计算。

比如:

  • 从1月到12月,或者到现在的累计销售率分析。

  • 今年的销售完成率,即全年的Sum(Cost)/Sum(Budget)。

  • 到目前为止的销售完成率,也即到现在为止的Sum(Cost)/Sum(Budget)。

在本例中,我们要累计的值为 Sum(SaleAmount),维度为年份。

2. 在仪表板中实现

  1. 在表 'FactResllerSales'上添加一个计算列

    image

    表达式如下:

    Year('FactResellerSales'[OrderDate])
  2. 在表 'FactResllerSales'上添加一个度量值。

    image

    表达式如下:

    SumW(
      Summarize(
        'FactResellerSales',
        [Year],
        "value",
        Sum('FactResellerSales'[SalesAmount])
      ),
      [value],
      OrderBy([Year])
    )
  3. 绑定计算列和度量值到分类和数值

    image

3. 表达式解析

SUMW 函数语法如下:

SUMW(<table>,<expression> [,PARTITIONBY(<expression>[,[expression] [,...]])] [,ORDERBY(<expresion> [(ASC|DESC)] [,<expression> [(ASC|DESC)] [,...] ] )] [,(ROWS|RANGE)( ((UNBOUNDED|<Number>) (PRECEDING|FOLLOWING) | CURRENT ROW) [,((UNBOUNDED|<Number>) (PRECEDING|FOLLOWING) | CURRENT ROW)])])

1. 参数 <table>

第一个参数 <table> 是必需的。它可以是一个表或一个表函数,返回值是一个表。这个参数非常重要,必须包含维度(用于分组),值(需要在窗口函数中计算)的列。


在当前用例中,我们需要创建一个按照年维度分组计算销售额的表

Summarize(
    'FactResellerSales',
    [Year],        //分组字段
    "value",       //用于计算sales Amount 合计值得字段名
    Sum('FactResellerSales'[SalesAmount])    //计算sales Amount 合计值
  )

2. 参数<expression>

第二个参数 <expression> 是必需的。这里它可能是来自第一个参数 <table> 的“非限定”名称。

3. 参数<OrderBy>clause

该参数是可选的。但是如果我们要计算累积值,就需要这个参数。这也是来自第一个参数 <table> 的“非限定”名称。

4. 参数<Rows>

默认值是UNBUOUNDED PRECEDING, 即计算当前行及之前所有行的总和。在本例中我们正好需要试用默认值,所以此处可以省略。