一、Index函数
语法:
INDEX ( <检索行号>, [<关系>], [<OrderBy>],[空白],[PartitionBy] )
含义:
对指定分区(PartitioinBy)中的行(关系表),按指定的列进行排序(OrderBy)后,根据(检索行号)定位单行。
参数:
参数 | 属性 | 描述 |
检索行号 | 偏移的行,可以是常量,也可以是返回值的表达式 | |
关系表 | 可选 | 表表达式,要包含第3、第5个参数中用的列 |
OrderBy | 可选 | 排序依据,如省略,第二个参数须指定 |
空白 | 可选 | 保留的参数位置,暂时无用 |
PartitionBy | 可选 | 分区依据如果省略,视同只有一个分区 |
备注:
OrderBy、PartitionBy中出现的列,需要先在“关系表”中引用。
二、实例
已知表:日期表和表:销售记录(2020年~2022年),
表:日期表
表:销售记录(2020年~2022年)
生成月度销售金额报表
1、新建度量值,销售金额 = SUM('销售记录'[金额])
2、新建度量值,index(1) = CALCULATE('度量值表'[销售金额],INDEX(1,ALLSELECTED('日期表'[年],'日期表'[月]),ORDERBY('日期表'[月],ASC),,PARTITIONBY('日期表'[年])))
解析:以‘日期表’[年]作为分区,按‘日期表’[月]进行升序排列,然后定位第一行(1)
3、新建度量值,index(-1) = CALCULATE('度量值表'[销售金额],INDEX(-1,ALLSELECTED('日期表'[年],'日期表'[月]),ORDERBY('日期表'[月],ASC),,PARTITIONBY('日期表'[年])))
解析:以‘日期表’[年]作为分区,按‘日期表’[月]进行升序排列,然后定位最后一行(-1)
4、新建度量值,index(2) = CALCULATE('度量值表'[销售金额],INDEX(2,ALLSELECTED('日期表'[年],'日期表'[月]),ORDERBY('日期表'[月],ASC),,PARTITIONBY('日期表'[年])))
解析:以‘日期表’[年]作为分区,按‘日期表’[月]进行升序排列,然后定位第二行(2)
5、新建度量值,index(-2) = CALCULATE('度量值表'[销售金额],INDEX(-2,ALLSELECTED('日期表'[年],'日期表'[月]),ORDERBY('日期表'[月],ASC),,PARTITIONBY('日期表'[年])))
解析:以‘日期表’[年]作为分区,按‘日期表’[月]进行升序排列,然后定位倒数第二行(-2)