tableau 实战工作场景常用函数与LOD表达式的应用详解

news2025/6/8 15:30:49

这是tableau实战工作场景图表制作第七期--常用函数与LOD表达式的应用

数据资源已经与这篇博客捆绑,有需要者可以下载通过网盘分享的文件:3.2-8月成交数据.xlsx等3个文件

链接:   https://pan.baidu.com/s/17WtUoZTqzoNo5kTFjua4hw?pwd=0623 提取码: 0623 

--来自百度网盘超级会员v1的分享,内含3.2-8月成交数据.xlsx,3.2-8月获客数据.csv,3.2-8月业绩目标.xlsx

一.导入数据详细见博客tableau 实战工作场景柱状图详解


二、INDEX()函数解决合并区域问题
工作中,我们经常会遇到业务侧提到的需要,现在我们这些行是有合并区域的,比如城市、小组就有合并区域,但是业务不想看到合并区域。

1.将城市、小组、日期(天)(复制)移动到行上(日期(天)(复制)详细见tableau实战工作场景图表制作第三期--折线图),并复制成交额,命名为成交额(参考),将成交额(参考)、成交额拖到文本上

2.除了对行上字段的顺序变化,比如将日期(天)(复制)移动到城市、小组前面,小组移动到城市字段左侧

3.推荐大家使用INDEX()函数创建索引。双击行直接输入index()函数,并改为离散,移动到最左侧,它就会为每一行添加一个标签。如果你要进行排序的话,标签也可以充当排序的序号这样一个功能。不然你会发现tableau根本不支持你进行这样的一个功能,他需要函数搭配才能实现。

三、简单排序问题
1.做一个最简单的排序。将index()函数移走,右键成交额-->快速表计算-->排名。右键成交额-->编辑表计算,默认是表(向下),这就相当于成交额在整个区域排第几名,它都会把序号写上。比如我们这里可以看到成交额10001,排名是821名。



2.我们把成交额排名改为区(向下),并点击按成交额(参考)排序

3.再拖一个成交额到文本上,快速表计算-->累计汇总。清除日期(天)(复制)、度量名称的排序,右键日期(天)(复制)、度量名称,点击清除排序。让它仅按日期进行排序




4.累计汇总如果是表向下,它就会每一个有数值的行都会进行累计的加总,比如8月6日累计汇总成交额32001就等于前面有数值两行8月5日成交额10001和8月6日成交额22000的累计汇总。右键累计汇总成交额的编辑表计算,改为区(向下)。就是每个小组它每天的累计是多少。这里面某些是没有成交额的,它会跳过。并编辑表别名,命名为累计。排名字段命名为排序。




5.将累计汇总的成交额拖拽到左侧,命名为累计1。右键累计1,点击编辑进去查看函数。RUNNING_SUM()返回指定分区中从第一行到当前行的总计



 

四、同环比的计算
1.将成交额拖拽到度量值区域,右键成交额-->快速表计算-->百分比差异。右键成交额,点击编辑表计算-->选择区(向下)。那么相对于天环比就计算出来了。比如8月5日成交额10001,8月6日成交额22000,环比就是(22000-10001)/10001*100%=119.98%。

2.我们把刚刚计算的环比拖入到左侧,命名为同环比。右键同环比,点击编辑。查看函数逻辑。

(ZN(SUM([成交额])) - LOOKUP(ZN(SUM([成交额])), -1)) / ABS(LOOKUP(ZN(SUM([成交额])), -1))

ZN()函数不为null,则返回它本身,否则返回0.这是一个避免零值的这样一个操作。
ABS()返回的是绝对值
LOOKUP()函数可以理解为往前看几行。比如说我们要计算的是一个天环比,也就是把这一行本身的成交额-上一行的成交额,因此这里面就是做一个LOOKUP(ZN(SUM([成交额])), -1))的操作。
-1指的就是上一行。如果我们想要计算一周前的环比,我们可以直接将-1改为-7,往前偏移7位


比如说2020年8月8日成交额是6986,2020年8月1日成交额位68030,

(6986-68030)/68030*100%=-89.73%

3.可以创建一个计算字段,具体看看具体数值,LOOKUP(ZN(SUM([成交额])), -7),可以看到8月30日同环比具体数值2000就是8月23日的成交额2000.
-7就是往前看7行,1就是往后看1行

五、窗口函数
1.依旧继续添加成交额到度量值,右键成交额,点击快速表计算-->移动平均。我们将移动平均的成交额拖拽到左侧,命名为窗口函数。右键窗口函数,点击编辑,进入查看函数的逻辑。
移动平均的本质就是:我基于我自己往前或者往后或者前后一起多少行,然后去计算它的平均值

WINDOW_AVG(SUM([成交额]), -2, 0),基于成交额,-2代表当前行的前两行,0代表当前行,那么就代表前两行与当前行的平均值。这样我们就可以算出来前天、昨天、今天这三天成交额的平均值
如果我们想要把它改成总和的话,改为WINDOW_SUM(SUM([成交额]), -2, 0),这就是过去三天的总和了。
比如说我们改为WINDOW_SUM(SUM([成交额]), -3, 4)就代表前面3天和后面4天和当天8天的成交额总和。,甚至可以将后面两个参数都去除,WINDOW_SUM(SUM([成交额])),默认基于整个窗口进行运算,当然表计算方式也要改变一下,比如改为区(向下).
总而言之,窗口函数的意思就是在当前的表格的行运算中具体的去取我基于当前的行前面几行后面几行,锁定成一个窗口区域,然后对它进行各种聚合运算

2.比如说我们改为WINDOW_SUM(SUM([成交额])),右键编辑表计算,选择区(向下),这里的区(向下)就是每个小组在它当前的区域里面它的一个成交额总和。我们来验证一下,比如我们可以在分析-->里将合计拖拽到小计里,发现成交额的小计和窗口函数算出来的整个窗口的总和计算结果是一样的



六、LOD表达式
LOD表达式本质上它就是要跨详细级别,也就是跨行级别进行运算
比如说我们要算的不是这个小组分区下面的和,现在要算的是北京这个城市的和。如果用窗口函数的话,只能基于当前分区进行运算。现在我就指定了任意一个维度,指定了任意一个级别,就是我要指定北京运算。也就是我现在做出的一个字段,就是每个城市有它自己的成交额,而不是下钻到每一个分区有它的成交额,这个时候我们要如何完成计算呢?
你可能回答是通过改变表计算的方式,比如改变特定维度去实现的,但是前提是掌握的很精通,这里我们讲解用LOD表达式

FIXED函数

1.创建计算字段,命名为城市成交额FIXED,输入我们的LOD表达式,将做好的字段拖拽到度量值。然后我们就可以发现北京对应的这个成交额是4309027(这样就让我们实现了锁定到某一个具体级别的运算,它更加灵活,你想指定哪个字段就指定哪个字段,我只根据你指定的字段进行运算,不是根据你当前视图上面你拖拽的维度进行聚合)
{FIXED [城市]:SUM([成交额])}
这里LOD表达式要用大括号去包裹,代表它是不同级别的运算,接着有个FIXED就是指锁定某一个级别,这里锁定到城市,然后后面聚合方式是SUM([成交额])



EXCLUDE函数

在当前的视图中,我们除了让它锁定到城市级别进行运算,我们可以让它排除小组和日期,就是我们忽略掉当前视图里的小组和日期这两个维度

2.创建计算字段,命名为城市成交额EXCLUDE,输入我们的LOD表达式,将做好的字段拖拽到度量
{EXCLUDE [小组],[日期 (天) (复制)]:SUM([成交额])}

FIXED锁定城市进行运算和EXCLUDE忽略小组和日期进行剩余的维度进行计算,它们之间的结果是一样的。
 

LOD表达式FIXED与EXCLUDE综合应用
比如我们要算一下这个小组当天的成交额占整个城市成交额的占比

小组当天的成交额是有的,但是这个城市当天的成交额我们又该如何计算呢?理论上我们锁定城市、日期就OK了
3.创建计算字段,命名为城市每日成交额FIXED,输入我们的LOD表达式,将做好的字段拖拽到度量,比如说北京8月23日成交额位214328
{FIXED [城市],[日期 (天) (复制)]:SUM([成交额])}

4.当然这里城市每天成交额还可以用EXCLUDE,创建计算字段,命名为城市每日成交额EXCLUDE,输入我们的LOD表达式,将做好的字段拖拽到度量。最后结果与FIXED表达式一致。
{EXCLUDE [小组]:SUM([成交额])}

 

5.现在我们计算这个小组当天的成交额占整个城市成交额的占比,这里有两种方法
方法一:

创建计算字段,命名为小组当天的成交额占整个城市成交额的占比,移动到度量值,点击快速表计算-->合计百分比
SUM([成交额 (参考)])/SUM([城市每天成交额EXCLUDE])

方法二

创建计算字段,命名为小组当天的成交额占整个城市成交额的占比1,移动到度量值,点击度量-->总和,右键小组当天的成交额占整个城市成交额的占比1,点击快速表计算-->合计百分比
[成交额 (参考)]/[城市每天成交额EXCLUDE]


发现两种方法计算结果是一致的
但其实两种方法的聚合方式不一样,只不过在这个场景里,恰好相等。
解释说明

[成交额 (参考)]/[城市每天成交额EXCLUDE]是对每个日期的成交额/城市每天成交额的比率求和。是先算日期的比率,再求和
SUM([成交额 (参考)])/SUM([城市每天成交额EXCLUDE])是先对成交额求和,城市每天成交额求和,再两者相除。
所以在计算比率的时候一定要注意聚合方式。
假如日期(天)上面还有一个层级日期(月),如果都下钻到日期(天)这个层级,那么两者计算的比率是一致的。但是如果上卷到日期(月)这个层级,那么[成交额 (参考)]/[城市每天成交额EXCLUDE]是对日期(天)的成交额/城市每天成交额的比率求和,是先计算日期(天)的比率,再求和,不正确。
SUM([成交额 (参考)])/SUM([城市每天成交额EXCLUDE])是先在日期(月)这个维度下计算所有满足这个维度的成交额求和,城市每天成交额求和,再两者相除。是聚合到日期(月)这个维度,这个比率计算是正确的。

LOD表达式总结
LOD表达式一般视为指定详细级别进行的运算的非聚合字段,只不过原表是每一行一个值,而LOD表达式是基于你指定的详细级别计算出了一个值,那么LOD表达式在图表中,可以继续向上聚合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2404264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《PyTorch:开启深度学习新世界的魔法之门》

一、遇见 PyTorch:深度学习框架新星登场 在当今的技术领域中,深度学习已然成为推动人工智能发展的核心动力,而深度学习框架则是这场技术革命中的关键工具。在众多深度学习框架里,PyTorch 以其独特的魅力和强大的功能,迅速崛起并占据了重要的地位,吸引着无数开发者和研究者…

分布式光纤传感(DAS)技术应用解析:从原理到落地场景

近年来,分布式光纤传感(Distributed Acoustic Sensing,DAS)技术正悄然改变着众多传统行业的感知方式。它将普通的通信光缆转化为一个长距离、连续分布的“听觉传感器”,对振动、声音等信号实现高精度、高灵敏度的监测。…

Spring事务回滚在系统中的应用

以文章发布为例,介绍Spring事务回滚在系统中的应用 事务回滚的核心概念 事务回滚是数据库管理系统中的关键机制,它确保数据库操作要么全部成功,要么全部失败。在Spring框架中,我们可以通过Transactional注解轻松实现事务管理。 …

ASP.NET Core使用Quartz部署到IIS资源自动被回收解决方案

iis自动回收的原因 回收机制默认配置,间隔时间是1740分钟,意思是:默认情况下每1740分钟(29小时)回收一次,定期检查应用程序池中的工作进程,并终止那些已经存在很长时间或已经使用了太多资源的工作进程 进程模型默认配…

调用.net DLL让CANoe自动识别串口号

1.前言 CANoe9.0用CAPL控制数控电源_canoe读取程控电源电流值-CSDN博客 之前做CAPL通过串口控制数控电源,存在一个缺点:更换电脑需要改串口号 CSDN上有类似的博客,不过要收费,本文根据VID和PID来自动获取串口号,代码…

算法(蓝桥杯学习C/C++版)

up: 溶金落梧桐 溶金落梧桐的个人空间-溶金落梧桐个人主页-哔哩哔哩视频 蓝桥杯三十天冲刺系列 BV18eQkY3EtP 网站: OI Wiki OI Wiki - OI Wiki 注意 比赛时,devc勾选c11(必看) 必须勾选c11一共有两个方法,任用…

Docker镜像无法拉取问题解决办法

最近再学习RabbitMQ,需要从Docker镜像中拉取rabbitMQ,但是下拉失败 总的来说就是无法和docker镜像远程仓库建立连接 我又去尝试ping docker.io发现根本没有反应,还是无法连接找了许多办法还是没有办法解决,最后才发现是镜像问题&a…

ZephyrOS 嵌入式开发Black Pill V1.2之Debug调试器

版本和环境信息如下: PC平台: Windows 11 专业版 Zephyr开发环境:v4.1.0 Windows 下搭建 Zephyr 开发环境 WeAct BlackPill V1.2开发板: WeAct STM32F411CEU6 BlackPill 核心板 Debug调试器: ST-LINK V2: ST-LINK V2 S…

服务器磁盘空间被Docker容器日志占满处理方法

事发场景: 原本正常的服务停止运行了,查看时MQTT服务链接失败,查看对应的容器服务发现是EMQX镜像停止运行了,重启也是也报错无法正常运行,报错如下图: 报错日志中连续出现两个"no space left on devi…

c++学习-this指针

1.基本概念 非静态成员函数都会默认传递this指针(静态成员函数属于类本身,不属于某个实例对象),方便访问对象对类成员变量和 成员函数。 2.基本使用 编译器实际处理类成员函数,this是第一个隐藏的参数,类…

交易所系统攻坚:高并发撮合引擎与合规化金融架构设计

交易所系统攻坚:高并发撮合引擎与合规化金融架构设计 ——2025年数字资产交易平台的性能与合规双轮驱动 一、高并发撮合引擎:从微秒级延迟到百万TPS 核心架构设计 订单簿优化:数据结构创新:基于红黑树与链表混合存储&#xff0c…

OpenCV计算机视觉实战(10)——形态学操作详解

OpenCV计算机视觉实战(10)——形态学操作详解 0. 前言1. 腐蚀与膨胀1.1 为什么要做腐蚀与膨胀1.2 OpenCV 实现 2. 开运算与闭运算2.1 开运算与闭运算原理2.2 OpenCV 实现 3. 形态学梯度与骨架提取3.1 形态学梯度3.2 骨架提取 小结系列链接 0. 前言 形态…

[论文阅读] 人工智能 | 利用负信号蒸馏:用REDI框架提升LLM推理能力

【论文速读】利用负信号蒸馏:用REDI框架提升LLM推理能力 论文信息 arXiv:2505.24850 cs.LG cs.AI cs.CL Harnessing Negative Signals: Reinforcement Distillation from Teacher Data for LLM Reasoning Authors: Shuyao Xu, Cheng Peng, Jiangxuan Long, Weidi…

基于 NXP + FPGA+Debian 高可靠性工业控制器解决方案

在工业系统开发中,**“稳定”**往往比“先进”更重要。设备一旦部署,生命周期动辄 5~10 年,系统重启或异常恢复成本高昂。 这时候,一套“值得托付”的软硬件组合,就显得尤为关键。 ✅ NXP —— 提供稳定、长期供货的工…

垂起固定翼无人机应用及技术分析

一、主要应用行业 1. 能源基础设施巡检 电力巡检:适用于超高压输电线路通道的快速巡查,实时回传数据提升智能运检效率。 油田管道监测:利用长航时特性(1.5-2小时)对大范围管道进行隐患排查,减少人力巡…

vite配置@别名,以及如何让IDE智能提示路经

1.配置路径(vite.config.js) // vite.config.js import { defineConfig } from "vite"; import vue from "vitejs/plugin-vue"; import path from "path";// https://vite.dev/config/ export default defineConfig({server: {port: 8080,},plu…

【Linux】LInux下第一个程序:进度条

前言: 在前面的文章中我们学习了LInux的基础指令 【Linux】初见,基础指令-CSDN博客【Linux】初见,基础指令(续)-CSDN博客 学习了vim编辑器【Linux】vim编辑器_linux vim insert-CSDN博客 学习了gcc/g【Linux】编译器gc…

RPA+AI:自动化办公机器人开发指南

RPAAI:自动化办公机器人开发指南 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 RPAAI:自动化办公机器人开发指南摘要引言技术融合路径1. 传感器层:多模态数据接入2. 决策层&…

计算矩阵A和B的乘积

根据矩阵乘法规则,编程计算矩阵的乘积。函数fix_prod_ele()是基本方法编写,函数fix_prod_opt()是优化方法编写。 程序代码 #define N 3 #define M 4 typedef int fix_matrix1[N][M]; typedef int fix_matrix2[M][N]; int fix_prod_ele(f…

Houdini POP入门学习05 - 物理属性

接下来随着教程学习碰撞部分,当粒子较为复杂或者下载了一些粒子模板进行修改时,会遇到一些较奇怪问题,如粒子穿透等,这些问题实际上可以通过调节参数解决。 hip资源文件:https://download.csdn.net/download/grayrail…