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

MINW-列取最小值

1. 概述

1.1 功能概述

Wyn 分析表达式提供MINW函数计算一组行中每一列的 MIN即最小值 。

2. 表达式介绍

2.1 语法

  1. 分析表达式语法如下:

    MINW(<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)])])

2.2 参数

  1. 表达式参数说明:

    参数

    定义

    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 行,再包括当前行。

    UNBOUNDED PRECEDING

    在窗口中,指定当前行之前的所有行。

    CURRENT ROW

    指定窗口与 ROWS 一起使用时在当前行开始或结束,或与 RANGE 一起使用时指定当前值。CURRENT ROW 可以指定为起点和终点。

    UNBOUNDED FOLLOWING

    在窗口中,指定当前行之后的所有行。

    <Number> PRECEDING | FOLLOWING

    当与 ROWS 或 RANGE 一起使用时,指定窗口在下一行或上一行开始或结束。

2.3 返回值

  1. 返回最小值。

2.4 示例

  1. 如下表达式,以 DimProductCategory 表的 EnglishProductCategoryName列进行分片,在DimProduct 表中进行滑窗运算。每一行返回它前一行到后两行的ListPrice 中的最小值。

    MINW
    (
    'DimProduct',
    'DimProduct'[ListPrice],
    PARTITIONBY('DimProductCategory'[EnglishProductCategoryName]),
    ORDERBY('DimProduct'[ProductName]),
    ROWS(1 PRECEDING , 2 FOLLOWING)
    )

2.5 备注

  1. 当使用rows/range子句时,必须使用orderby子句。