美文网首页BI学习笔记
BI技巧丨利用Index计算半累计

BI技巧丨利用Index计算半累计

作者: Fabric丨白茶 | 来源:发表于2023-08-10 20:20 被阅读0次

在实际的业务场景中,特别是财务模块和库存管理模块,经常需要我们针对每个月的期初期末进行相关指标计算,这也是我们之前曾经提到的Calculate基础应用——半累计计算。

现在我们也可以通过微软新推出的Index开窗函数来解决这一问题。

INDEX函数基础语法

INDEX(<position>[, <relation>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>])

参数介绍:

position:从中获取数据的绝对位置(从 1 开始):1为第一行,-1为最后一行。

relation:表表达式,后续参数orderby,partitionby,matchby的内部参数,都需要来自它或相关表。

orderby:可选项,排序依据。

blanks:可选项,保留参数,可以忽略。

partitionby:可选项,分区定义,参照SQL的开窗分区即可。

matchby:可选项,定义匹配数据和标识当前行的列的语句。

PS:

是不是非常的疑惑?感觉和OFFSET函数没啥区别啊?

没错,是这样的,除了函数功能有所区分以外,剩下的参数用途基本一致。

接下来我们搭配应用场景来看一下如何使用Index函数。

先来看看本期的案例数据:

案例数据就一张Sales的销售事实表,表结构也相对简单,将其导入到PowerBI中。

添加如下日期表,并建立模型关系。

Date =
GENERATE (
    CALENDAR ( MIN ( 'Sales'[DATE] ), MAX ( 'Sales'[DATE] ) ),
    VAR DA = [Date]
    VAR YEAR =
        YEAR ( DA )
    VAR QUARTER =
        "Q" & FORMAT ( DA, "Q" )
    VAR MONTE =
        FORMAT ( DA, "MM" )
    VAR DAY =
        DAY ( DA )
    RETURN
        ROW (
            "Year", YEAR,
            "Quarter", QUARTER,
            "Month", MONTE,
            "DayOfMonth", DAY,
            "YearQuarter", YEAR & QUARTER,
            "YearMonth", YEAR & MONTE,
            "YearMonthCount",
                YEAR * 12 + MONTE   ----新增列
        )
)

模型关系如下:

添加如下基础度量值:

销售数量:

001.Quantity =
SUM ( Sales[Quantity] )

半累计计算:

002.LastDayQuantity =
CALCULATE ( [001.Quantity], LASTDATE ( 'Date'[Date] ) )

半累计计算优化:

003.LastDayQuantityPlus =
CALCULATE (
    [001.Quantity],
    FILTER ( ALL ( 'Date' ), 'Date'[Date] = MAX ( 'Date'[Date] ) )
)

结果如下:

这是我们之前的处理方式,利用Lastdate函数或Filter+All+Max的组合,完成半累计计算,求出相关指标。

现在,我们可以通过Index函数,来实现上述需求:

004.IndexLastDayQuantity =
CALCULATE ( [001.Quantity], INDEX ( -1, VALUES ( 'Date' ) ) )

结果如下:

可以看出,三者计算的结果是一致的,那么性能方面呢?

性能方面的话,Lastdate的方式速度最快,Filter和Index速度不好区分。

从结果导向的方式,白茶还是推荐大家使用LastDate的方式。

除了上述的例子以外,Index还可以用来计算期初值。

005.IndexFirstDayQuantity =
CALCULATE ( [001.Quantity], INDEX ( 1, VALUES ( 'Date' ) ) )

结果如下:

相关文章

  • BI技巧丨财务累计

    日常使用PowerBI制作看板过程中,往往需要我们在看板的第一浏览区将用户最关注的核心指标呈现出来。白茶在之前的文...

  • BI技巧丨计算Topn品名

    BOSS:白茶,问你个事,能不能动态的根据我们的销量,告诉我销量前三的商品有哪些?这样便于我针对商品进行调控。白茶...

  • BI-SQL丨INDEX

    INDEX INDEX,索引。索引在数仓中属于高级技能之一,也是很多HR面试的时候喜欢问的点。 索引可以用来对数据...

  • BI技巧丨同环比计算

    我们在做BI报表分析的时候,大部分指标的运算逻辑都不是特别的复杂,很多用户对于指标最基本的需求,就是可以展示当月数...

  • Power BI如何计算累计至今

    有一类计算是,从历史最早日期至今的累计计算,比如从开业到现在总共卖出了多少件商品,累计实现了多少销售额等。 本年累...

  • BI技巧丨百分位计算

    百分位计算 百分位数据计算,可以说是日常计算中比较常见的需求,通常会用于价格段位分析使用,而在PowerBI中,用...

  • iOS(UI)

    ## 九宫格计算思路 - 利用控件的索引index计算出控件所在的行号和列号 - 利用列号计算控件的x值 - 利用...

  • UI基础4 九宫格计算 HUD Plist文件 Bundle

    九宫格计算思路 利用控件索引index计算出控件所在的行号和列号 利用列号计算控件的x值 利用行号计算控件的y值 ...

  • iOS回炉笔记整理1

    九宫格计算思路 利用控件的索引index计算出控件所在的行号和列号 利用列号计算控件的x值 利用行号计算控件的y值...

  • iOS零散知识

    九宫格计算思路 利用控件的索引index计算出控件所在的行号和列号 利用列号计算控件的x值 利用行号计算控件的y值...

网友评论

    本文标题:BI技巧丨利用Index计算半累计

    本文链接:https://www.haomeiwen.com/subject/aqsdpdtx.html