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

LAGW

概述

返回当前行的上一行

语法

分析表达式

LAGW(<table>,<expression> [,PARTITIONBY(<expression>[,[expression] [,...]])] ,ORDERBY(<expresion> [(ASC|DESC)] [,<expression> [(ASC|DESC)] [,...] ] ))

参数

参数

定义

table

进行计算的表。

expression

计算表达式。

PARTITION BY 子句

将查询结果集划分为多个分区。

窗口函数分别应用于每个分区,并为每个分区重新启动计算。

如果未指定 PARTITION BY,则此函数将查询结果集的所有行视为单个分区。

ORDER BY 子句

定义结果集的每个分区内行的逻辑顺序。

也就是说,它指定了执行窗口函数计算的逻辑顺序。

如果未指定,则默认顺序为 ASC,且开窗函数将使用分区中的所有行。

ROWS|RANGE 子句

通过指定分区中的起点和终点,进一步限制分区中的行数。

这是通过按照逻辑关联或物理关联对当前行指定某一范围的行实现的。 物理关联通过使用 ROWS 子句实现。

ROWS 子句通过指定当前行之前或之后的固定数目的行,限制分区中的行数。

此外,RANGE 子句通过指定针对当前行中的值的某一范围的值,从逻辑上限制分区中的行数。 基于 ORDER BY 子句中的顺序对之前和之后的行进行定义。

窗口框架“RANGE …CURRENT ROW ...”包括在 ORDER BY 表达式中与当前行具有相同值的所有行。

例如,ROWS BETWEEN 2 PRECEDING AND CURRENT ROW 意味着该函数对其操作的行的窗口在大小上是 3 行,开头为之前的 2 行,再包括当前行。

返回值

当前行的上一行

示例

以 EnglishProductCategoryName 为分区条件,在 DimProduct 表的 ListPrice 列 中进行计算,为每一行返回它上一行的值。

分析表达式

LAGW (
    'DimProduct',
    'DimProduct'[ListPrice],
    PARTITIONBY('DimProductCategory'[EnglishProductCategoryName]),
    ORDERBY('DimProduct'[ProductName])
)