Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Power BI窗口函数应用于图表设计

Power BI窗口函数应用于图表设计

作者头像
wujunmin
发布于 2023-02-28 01:08:28
发布于 2023-02-28 01:08:28
1.9K00
代码可运行
举报
文章被收录于专栏:wujunminwujunmin
运行总次数:0
代码可运行

Power BI于2022年12月推出的窗口函数极大简化了使用SVG矢量图自定义图表的过程。OFFSET、INDEX和WINDOW函数对设计连续型图表有重大意义。(不了解窗口函数参考采总此文:Power BI本月正式推出的DAX新函数:OFFSET、INDEX、WINDOW

什么是连续型图表?连续性图表是指当前维度图表的内容和上一维度或下一维度存在关联。条形图柱形图是非连续型图表,因为每个柱子是独立分布的。折线图属于连续型图表,例如下图的纵向折线图,本行的折线走向受上一行和下一行影响。

瀑布图当前柱子的位置受上一个柱子的位置的影响。

OFFSET、INDEX、WINDOW分别实现了单行相对定位、单行绝对定位和任意范围的相对定位及绝对定位。以下以纵向折线图为例进行讲解。

纵向折线图每一行的折线形状由上一行数据、本行数据和下一行数据共同决定。比如,上一行数据50,本行数据20,下一行数据80,我们大体可以判断本行的折线走向大致如下图所示:

如何在计算本行折线的时候,让图表度量值知道上一行数据和下一行数据分别是多少?这就需要使用OFFSET函数进行上下偏移。如下是上一行和下一行的计算结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
上一行 = CALCULATE([Value],OFFSET(-1,ALLSELECTED('日期表'[Date]),ORDERBY('日期表'[Date])))
下一行 = CALCULATE([Value],OFFSET(1,ALLSELECTED('日期表'[Date]),ORDERBY('日期表'[Date])))

以下是纵向折线的完整度量值,新建好度量值后,标记为图像URL,拖入表格。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
纵向折线图 = 
VAR OffsetNext=CALCULATE([Value],OFFSET(1,ALLSELECTED('日期表'[Date]),ORDERBY('日期表'[Date])))
VAR OffsetLast=CALCULATE([Value],OFFSET(-1,ALLSELECTED('日期表'[Date]),ORDERBY('日期表'[Date])))
VAR MaxValue=MAXX(ALLSELECTED('日期表'[Date]),[Value])
VAR MinValue=MINX(ALLSELECTED('日期表'[Date]),[Value])
VAR Gap=MaxValue-MinValue
VAR r= 5 
VAR X_Last= (50-2*r) *(OffsetLast-MinValue)/Gap +r
VAR X= (50-2*r) *([Value]-MinValue)/Gap + r
VAR X_Next= (50-2*r) * (OffsetNext-MinValue)/Gap + r
VAR Y_Last= -25
VAR Y= 25
VAR Y_Next= 75
VAR SVG = "data:image/svg+xml;utf8,
    <svg xmlns='http://www.w3.org/2000/svg' width='50' height='50'>
        <polyline id='wujunmin'
            points='"&
                IF(OffsetLast<>BLANK(),X_Last &","&Y_Last&" ",BLANK())
                & X &","&Y&" "& 
                IF(OffsetNext<>BLANK(),X_Next &","&Y_Next,BLANK())&"' " & "
            stroke-width='1' stroke='black' fill='none'/>
        <circle cx='"&X&"' cy='"&Y&"' r='"&r&"' fill='" &IF([Value]>=30,"DarkCyan","tomato")&"' />
    </svg>"
RETURN
    SVG

此时你大概率得不到正确的结果,很可能显示如下图的断裂效果。这是因为水平网格线的存在切断了连线。

将网格线的宽度调整为0之后,即可得到一条连贯的折线。另外图像高度的设置与度量值中的高度保持一致(此处为50)。

这条折线还有第二种用法,放入条件格式的图标,下图右侧是条件格式模式:

有读者可能会有疑问,日期具有连续的特性,非连续的维度是否也可以同样操作?答案是可以的。下图的店铺业绩增长率是个示例:

这条折线的圆点设置了按条件变化颜色,在这基础上还可以进行深加工,比如加上数据标签:

目前(截止2022年12月)推出的窗口函数最神通广大的是WINDOW,一定程度上,可以只用WINDOW,而不使用OFFSET和INDEX。比如上方度量值在定义上一行和下一行的值时使用了OFFSET,现在替换为WINDOW如下所示。WINDOW需要指明定位范围,例如上一行(度量值中的offsetlast)定位的起点和终点都是-1,REL表示相对偏移。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
VAR OffsetNext=CALCULATE([Value],WINDOW(1,REL,1,REL,ALLSELECTED('日期表'[Date]),ORDERBY('日期表'[Date])))
VAR OffsetLast=CALCULATE([Value],WINDOW(-1,REL,-1,REL,ALLSELECTED('日期表'[Date]),ORDERBY('日期表'[Date])))

度量值同样可以放于表格矩阵列显示,也可设置为条件格式图标,以下是条件格式效果。

本文INDEX函数还没有用到,且听后文分解。前期介绍的若干自定义图表都可以基于窗口函数进行优化。

本文PBIX源文件在下方知识星球下载。直达链接(左下角阅读原文也可访问):https://t.zsxq.com/09PlAsPkz

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 wujunmin 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Power BI 矩阵展示门店数量变化过程
变化是零售业的常态,人货场随时在变,员工和消费者来来去去,货品进进出出,门店开开关关。本文以门店数量变化为例讲解如何制作下图的瀑布式变化效果。
wujunmin
2024/01/29
2320
Power BI 矩阵展示门店数量变化过程
Power BI如何在表格生成纵向折线图?
在表格中,每一行独立存在,上一行的内容和下一行没有交集,中间有一根看不见的线把每一行隔离开来。
wujunmin
2022/12/13
3K0
Power BI如何在表格生成纵向折线图?
窗口函数到底有多「神奇」?
实习和秋招笔面试的时候,SQL的考察必不可少,除了题目中会涉及业务背景外,大同小异的,大都考察聚合、表连接、窗口函数,尤以各种各样的窗口函数为重。
数据森麟
2021/01/25
7900
窗口函数到底有多「神奇」?
Power BI 卡片图趋势与过程指标组合
来源:https://seantheme.com/color-admin/admin/html/index_v3.html
wujunmin
2023/12/28
4490
Power BI 卡片图趋势与过程指标组合
一文体会 Power BI 新推出 DAX 窗口函数的终极意义
在 2022 年 12 月的更新中,Power BI 正式推出了 DAX 窗口函数。
BI佐罗
2023/03/01
1.4K0
一文体会 Power BI 新推出 DAX 窗口函数的终极意义
2.31 PowerBI数据建模-窗口函数并不难,真的像窗口一样
加入 PowerBI自己学 知识星球 可以:下载源文件,边学边练;遇到问题,提问交流,有问必答。
PowerBI自己学_轻松
2025/02/25
460
2.31 PowerBI数据建模-窗口函数并不难,真的像窗口一样
Power BI 折线图自定义特殊标注
本号已经使用DAX+ SVG在Power BI自定义了几十种实用的图表,但是一直没有涉及折线图。原因有二:
wujunmin
2022/04/06
1.2K0
Power BI 折线图自定义特殊标注
Power BI新功能-表格矩阵迷你图真棒!但是……
2021年12月更新的Power BI版本新增了迷你图功能,如下图在表格或矩阵中点击下拉箭头或鼠标右键,即可进入设置界面:
wujunmin
2022/02/09
1.7K0
Power BI新功能-表格矩阵迷你图真棒!但是……
基于DeepSeek的Power BI可视化优化:释放图表资源新潜能
这个世界上有无数的图表代码,也许是HTML、Python、R、Vega等实现,借助AI现在已经可以方便地将效果迁移到Power BI。
wujunmin
2025/03/06
1190
基于DeepSeek的Power BI可视化优化:释放图表资源新潜能
Power BI 图表跨界应用:从股市到零售业
一些财经网站有个股价格变化分布图,下图展示了52周的最高价、最低价以及当前价格(蓝色标识)。
wujunmin
2025/02/10
410
Power BI 图表跨界应用:从股市到零售业
3.13 PowerBI报告可视化-折线图:配上情绪区间,标记最大值最小值
加入 PowerBI自己学 知识星球 可以:下载源文件,边学边练;遇到问题,提问交流,有问必答。
PowerBI自己学_轻松
2025/02/25
570
3.13 PowerBI报告可视化-折线图:配上情绪区间,标记最大值最小值
Power BI 表格矩阵内嵌平滑折线图
Power BI有内置的折线图视觉对象,为什么要在表格矩阵内嵌折线图?最大的原因是表格矩阵具有扩展性,可以添加折线趋势以外的其他信息,供用户综合判断。
wujunmin
2025/03/28
480
Power BI 表格矩阵内嵌平滑折线图
Power BI 构造财务利润表的极简方式
上市公司的财报通常包含如下格式的表格。这个表格的困难之处在于,项目之间不是独立存在的,有些项目是由别的项目加减计算得到的。例如毛利等于收入减销售成本。 Excel有很大的灵活性,插入行就可以搞定这样的表格,Power BI则不然。
wujunmin
2024/04/17
6170
Power BI 构造财务利润表的极简方式
BI技巧丨增长率问题
在项目实施的过程中,柱形折线图可以说是我们使用频率较高的可视化图形之一,默认的呈现效果如下图:
PowerBI丨白茶
2022/05/01
4530
BI技巧丨增长率问题
PowerBI 实现超多系列对比分析 - 下篇 - 方案实现
该模型可以反应随着时间的发展,多品牌,多SKU,多地区等表示任何多系列的元素的发展。
BI佐罗
2021/02/09
1.7K0
从子弹图对比Power BI自定义图表的不同方式
SQLBI前几天出了一篇长文,对子弹图进行了深入的讲解。文章中有一个配图,体现了目前主流(不是全部)的自定义图表方式。借由这篇文章,我们可以对比下不同方式的优劣势。
wujunmin
2025/02/10
1310
从子弹图对比Power BI自定义图表的不同方式
BI技巧丨滚动柱形图
但是很多可视化图形,在数据跨年的时候,因为节点问题,会导致原本的趋势变成单点或者单个柱子,这对用户来说体验是非常差的。
PowerBI丨白茶
2022/05/14
9102
BI技巧丨滚动柱形图
PowerBI DAX 新函数 OFFSET
如果我们希望在透视表的另一列可以获取前一列的上一项的值,该怎么做呢?这个问题在以前需要做定位。而有了新的函数 OFFSET 可以简化这个过程。如下:
BI佐罗
2022/12/18
2K0
PowerBI DAX 新函数 OFFSET
Power BI原生图表自定义填充图案
以上所有效果不依赖任何第三方视觉对象,完全使用Power BI内置图表生成,交互功能一个不少(比如工具提示),数据标签,条件格式也完全支持。这是怎么办到的?
wujunmin
2022/12/13
1.1K0
Power BI原生图表自定义填充图案
Power BI模拟小米运动APP三环效果
小米运动APP有个图表使用三个半圆展示了三个健康相关的指标,如下图所示。从外到内分别是卡路里、步数和活动分钟数实际值与目标值的对比。
wujunmin
2022/12/13
4470
Power BI模拟小米运动APP三环效果
推荐阅读
相关推荐
Power BI 矩阵展示门店数量变化过程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档