PowerBI2022年底正式推出的DAX新函数OFFSETINDEXWINDOW
2022年的最后一次更新,正式发布了三个新的DAX函数,OFFSET、INDEX、WINDOW,这篇文章来看一下这三个函数的用法。
OFFSET
用于检索偏移特定行后的结果,语法如下: OFFSET(
偏移的行数, //可以是常量,也可以是返回值的表达式
表表达式, //可选
orderBy, //可选,排序依据,如省略,第二个参数须指定
空白参数, //可选,保留的参数位置,暂时无用
partitionBy // 可选,分区依据,如果省略,视同只有一个分区
)
语法看起来比较复杂,通过具体的示例来理解,可以更轻松地熟悉它的用法。
下面根据这个表格来说明,这是每个季度的销售额,
如果要获得上个季度的销售额,除了用之前的时间智能函数,还可以这样写: OFFSET =
CALCULATE(
[销售额],
OFFSET(-1,ALLSELECTED("日期表"[年度季度]))
)
OFFSET返回表,度量值中一般利用CALCULATE来返回定位后的结果(下面两个函数同样如此)。
这里就是只用了OFFSET的前2个参数,第一个参数-1,表示提取向前偏移1行的数据(如果是向后偏移2行,取下下个季度的值,第一个参数应该是2);第二个参数是输出的行,后面的参数都可以省略,结果如下:
第3个参数ORDERBY省略,默认按照第二个参数列排序,也就是按年度季度排序,向前偏移一行,就得到了上个季度的数据。
如果想在每年范围内进行这样的偏移计算,就需要用到最后一个参数,度量值这样写: OFFSET =
CALCULATE(
[销售额],
OFFSET(
-1,
ALLSELECTED("日期表"[年度季度],"日期表"[年度]),,,
PARTITIONBY("日期表"[年度])
)
)
对于在PARTITIONBY中的字段(以及在ORDERBY中的字段),必须放到第二个参数中,这就是上面度量值中,第二个参数里面也要带上"日期表"[年度]的原因,在年度内偏移的效果如下:
这种偏移只在年度的区间内进行,年度变化后,再重新取开始,所以第一个季度都是空值。
INDEX
用于检索特定行的结果,语法如下:
INDEX(
检索位置, //1表示第一行,-1表示最后一行,以此类推
表表达式, //可选
orderBy, //可选,排序依据,如省略,第二个参数须指定
空白参数, //可选,保留的参数位置,暂时无用
partitionBy // 可选,分区依据,如果省略,视同只有一个分区
)
它和OFFSET的参数几乎一样,还是拿上面的例子来说明这个函数的用法。
如果要返回第一个季度的数据,度量值这样写:
INDEX =
CALCULATE(
[销售额],
INDEX(1,ALLSELECTED("日期表"[年度季度]))
)
可以看出它全部返回的都是第一行的数据;如果想按年度返回本年第一季度的数据,同样可以利用最后一个partitionBy参数: INDEX =
CALCULATE(
[销售额],
INDEX(
1,
ALLSELECTED("日期表"[年度季度],"日期表"[年度]),,,
PARTITIONBY("日期表"[年度])
)
)
每一行的结果都是本年第一季度的数据。
WINDOW
返回位于给定区间内的多个行,语法如下: WINDOW(
起始位置,
起始位置类型, //可选, ABS(绝对)和 REL(相对),默认为 REL
结束位置,
结束位置类型, //可选, ABS(绝对)和 REL(相对),默认为 REL
表表达式, //可选
orderBy, //可选,排序依据,如省略,第5个参数须指定
空白参数, //可选,保留的参数位置,暂时无用
partitionBy // 可选,分区依据,如果省略,视同只有一个分区
)
后面4个参数与前两个函数也是一样的,只是WINDOW返回一个区间,所以前面用了4个参数来确定起止位置以及位置的类型。
常用的滚动就和,比如计算前两个季度的累计之和,可以用WINDOW函数这样写度量值: WINDOW=
CALCULATE(
[销售额],
WINDOW(
-1,REL,0,REL,
ALLSELECTED("日期表"[年度季度])
)
)
如果位置类型是相对,则位置负数就表示向前移动几行,0表示当前行,效果如下:
如果将位置改成绝对,1就表示表的第一行(-1表示表的最后一行),度量值这样写: WINDOW =
CALCULATE(
[销售额],
WINDOW(
1,ABS,1,ABS,
ALLSELECTED("日期表"[年度季度])
)
)
起止位置都是第一行,其效果就是取绝对位置的第一行数据:
还可以通过设置起始位置绝对引用,结束位置相对引用,来实现累计求和的效果: WINDOW =
CALCULATE(
[销售额],
WINDOW(
1,ABS,0,REL,
ALLSELECTED("日期表"[年度季度])
)
)
起始位置1绝对,就是从第1行开始,结束位置0相对,就是到达当前行结束,因此可以实现从第一行累加到当前行的效果。
看到WINDOW函数的起止位置设置,是不是有Excel单元格绝对引用、相对引用的感觉,它确实像Excel一样,带来了更加灵活的区间计算。
WINDOW函数像前面两个函数一样,也可以设置最后一个partitionBy参数,来实现本年内的区域计算,比如本年累积求和:
WINDOW =
CALCULATE(
[销售额],
WINDOW(
1,ABS,0,REL,
ALLSELECTED("日期表"[年度季度],"日期表"[年度]),,,PARTITIONBY("日期表"[年度])
)
)
以上就是这三个新函数的基本用法,为便于理解,上面的示例用的是日期序列计算,其实熟悉了他们的用法以后,其他类型的计算也是可以用这些函数。
这三个函数还没有最终完善,相信之后它们会变得更加强大和灵活,也会带来更丰富的应用场景。 其他精彩内容
PowerBI如何进行财年分析?
漂亮的桑基图,PowerBI帮你轻松制作
PowerBI报告中如何嵌入视频?
临潭县石门口大峡谷有你不曾见过的壮美新甘肃每日甘肃网通讯员丁彦青摄影报道临潭,古称洮州,地处青藏高原东北边缘,位于甘肃省南部,甘南藏族自治州东部,东邻岷县,北接康乐渭源两县,地形西高东低,大多地区属高山丘陵地带。临潭
喜迎二十大甘肃日报重磅报道再访祁连山祁连系匈奴语,匈奴称天为祁连,祁连山也是天山之意。这条山脉号称天,实不为过。东西八百余公里长,南北二三百公里宽。在祖国西北大地一矗,挡住了西面的库姆塔格沙漠,拦住了北面的巴丹吉林和
调查显示八成受访者愿意从事元宇宙工作中国青年报客户端北京9月26日电(中青报中青网记者王聪聪)元宇宙社交虚拟人区块链底层技术搭建大批元宇宙相关岗位如雨后春笋涌现在市场上。今天发布的2022元宇宙行业人才发展报告显示,
西蒙斯三场球奠定主控地位解放杜兰特欧文培育新饼皇今天早些时候,篮网10797击败雄鹿,拿到季前赛首胜。本场球,本西蒙斯打出了加盟篮网后的最佳表现,他全场得到7分8篮板10助攻,并在攻防两端都有突出的贡献。此前的两场季前赛,西蒙斯
iQOONeo7定档10月20日天玑9000旗舰配置中端价视频加载中iQOONEO7话题热度是直线上升,可见性价比是真的深入人心。从最近爆料的信息来看iQOONeo7将有多处提升续航从现款4700毫安提升到5000毫安,120瓦的有线快充
雷诺将推全新纯电小车,2门2座,续航140公里,造型酷炫微型新能源车细分市场的竞争可谓十分激烈,各家车企争先推出新车型,就拿雷诺汽车来说吧,其在近期发布了一款全新的微型纯电车MobilizeDuo,造型酷炫。据悉,新车纯电续航里程可达1
彩虹集团12天收获8个涨停,股价创新高新京报讯(记者郑明珠)10月13日,彩虹集团再次涨停,近12个连续交易日收获8个涨停,累计涨113。15。截至10月13日收盘,彩虹集团每股股价为41。99元,创上市以来新高,总市
行情还会持续吗?今天大盘被权重股拖累,北上资金和昨天一样净流出近亿,今天银行,房地产,白酒,煤炭权重股重跌,小盘股大部份飘红,所以今天上涨个股大多于下跌个股,今天赚钱效应还是很不错的,昨日打板的股
近地小行星数量突破3万大关小行星撞击可能是一个危险的事件,破坏的区域可以会是一座城市一个国家甚至更糟糕的是整个地球。对即将到来的末日岩石有一些预知可以让我们人类有时间进行干预尤其是由于NASA的DART任务
峰值亮度超2000nits?看海信U8H就明白了电视机几乎是家家必备,而随着科技的快速发展,电视机也朝着更加智能化体验多样化的趋势演变。原本只是用来观看电视剧新闻的电视机,如今已是家庭休闲娱乐的主要终端设备,玩游戏观看摄影作品时
电器降价也别盲目购买!这些电器的3不买定律,建议收藏起来电器降价也别盲目购买!这些电器的3不买定律,建议收藏起来家电和其他的产品一样,每年也都会有一些家电大优惠和降价促销的活动。有的朋友觉得电器降价之后就一定要赶紧入手,这样才能够捡到便