举个栗子!Tableau 技巧(256):灵活折叠文本表的多级数据行
通常,Tableau 默认的图表分层结构是统一打开或关上,有什么办法可以按需选择展开或折叠?如下示例:单击“+”展开层级,单击“-“收起层级。
可以试试集操作!今天的栗子,就来分享具体实现方法吧~

本期《举个栗子》,我们要给大家分享的 Tableau 技巧是:灵活折叠文本表的多级数据行。
为方便学习,栗子使用自拟的有五个层级的数据(如下图),掌握栗子方法后,数据粉可尝试使用其他数据源实现。懒癌患者可通过以下链接获取栗子数据源:
https://www.dkmeco.com/community/example/detail-700

具体步骤如下:
1、创建集
打开 Tableau Desktop,连接栗子数据源,新建工作表。首先,需要创建集:二级科目集、三级科目集。
右键单击“数据”窗格中的"二级科目"字段,下拉菜单选择:创建-集。如下图所示,弹窗中勾选所需的二级科目,单击:确定。

按照上述步骤,再创建:三级科目 集,弹窗中勾选:A11000、B10000、C12100、C12200。

2、创建工作表:明细表
➤ 将工作表命名为:明细表。将字段“一级科目”、“二级科目”、“三级科目”、“科目名称”拖放至行;将字段“度量名称”拖放至列,将字段“度量值”拖放至“标记”卡的文本中,移除“度量值”卡中不需要的度量胶囊。完成后的效果如下图:

➤ 创建计算字段:展示名称,用于更好的区分层级关系。键入函数
IF [科目级别]=1 THEN [科目名称]
ELSEIF [科目级别]=2 THEN ’ '+[科目名称]
ELSEIF [科目级别]=3 THEN ’ '+[科目名称]
END

在“数据”窗格中,右键单击字段“科目级别”,下拉菜单选择:转换为维度。然后,将字段“展示名称”和“科目级别”拖放至行。
分别右键单击行上的“一级科目”、“二级科目”、“三级科目”、“科目名称”、“科目级别”胶囊,下拉菜单选择:隐藏标题。

3、创建计算字段
➤ 创建计算字段:筛选,键入函数
[科目级别]=1
OR
[科目级别]=2
OR
([科目级别]=3 AND [二级科目 集])

将计算字段“筛选”拖放至明细表的“筛选器”卡中,弹窗中勾选:真。可以发现,有些“科目名称”被筛选隐藏掉了。

接下来,就需要创建“+“和”-“符号,用于展开或者收起数据行。
➤ 创建计算字段:-(2~3),键入函数
IF ATTR([科目级别])=1 OR ATTR([科目级别])=5 THEN ‘’
ELSEIF SUM(IF [二级科目 集]=TRUE THEN 1 ELSE 0 END)!=0 AND MIN({ FIXED [二级科目]:COUNTD([三级科目])})!=1 AND ATTR([科目级别])=2 THEN ‘-’
ELSE ‘’ END

➤ 创建计算字段:+(2~3),键入函数
IF ATTR([科目级别])=1 OR ATTR([科目级别])=5 THEN ‘’
ELSEIF SUM(IF [二级科目 集]=TRUE THEN 1 ELSE 0 END)=0 AND MIN({ FIXED [二级科目]:COUNTD([三级科目])})!=1 THEN ‘+’
ELSE ‘’ END

Tips:加减号是写逻辑判断一下符号的变化,展开和收起主要是用集操作完成的,但是一个工作表对于同一个集,不能既添加值又移除值,所以得用不同的工作表来做。
然后,对文本表做一些格式设置。在本栗中,需将字段字体设置为:微软雅黑 9 号,将表格行标题的阴影颜色设置为:#ffc994,并隐藏“展示名称”的行字段标签。

设置完成后的明细表如下:

4、创建工作表:展开和收起
➤ 新建工作表:+(2~3展开)。双击列上空白处,键入:‘’,然后回车。
将“一级科目”、“二级科目”、“三级科目”、“+(23)”、“科目名称”、“展示名称”、“科目级别”拖放至行。除了“+(23)”胶囊外,其他胶囊都需隐藏标题。
将”度量名称”拖放至“筛选器”卡,弹窗直接单击:确认。将字段“筛选”拖放至“筛选器”卡,弹窗勾选:真。

分别右键单击视图中的 +(2~3)和 ‘’,选择隐藏字段标签。

接下来,优化文本表格式设置。如下图所示,移除文本表的行列分隔线,将工作表的阴影设置为:无;将行标题的阴影颜色设置为:#ffc994。

然后,将“标记”卡的标记类型改为:多边形。完成后的效果如下:

➤ 新建工作表:-(2~3收起)。
具体步骤跟工作表“+(23展开)”一致,只需将行上的“+(23)”字段换成“-(2~3)”即可。

5、创建仪表板
➤ 新建仪表板:科目。
将一个“平铺”的“水平容器”拖放至仪表板视图中,再将工作表“明细表”拖放至该“水平容器”中, 设置工作表为“适合宽度”,将“明细表”和“水平容器”及“平铺容器”的内外边距设置为:0。

接着,将一个“浮动”的“水平容器”拖放至仪表板视图中,叠放在刚刚的容器之上。切换平铺模式,先后将工作表“+(23)展开”和“-(23)收起”拖放至该水平容器中,实现左右布局。
隐藏两个工作表的标题,统一宽度和高度:20像素、1100像素;并将它们都设置为:适合宽度。然后,将该水平容器和两个工作表的内外边距都设置为:0。

浮动水平容器位置根据“明细表”的位置来设定,只要将前面的“+/-”和科目名称对应上即可。

6、创建集操作
单击顶部菜单栏“仪表板”,下拉菜单选择:操作。在弹窗中选择:添加动作-更改集值。

如下图步骤添加集动作:
➤ 集动作:二级科目-展开

➤ 集动作:二级科目-收起

设置完成后,就完成了我们需要的呈现。试试看,用鼠标单击“+”和“-”来展开和收起下级数据行吧!

本期的 Tableau 技巧,你 Get 到了吗?
下一期,再见~

文章部分信息来源于网络,如有侵权请告知
相关文章:
举个栗子!Tableau 技巧(256):灵活折叠文本表的多级数据行
通常,Tableau 默认的图表分层结构是统一打开或关上,有什么办法可以按需选择展开或折叠?如下示例:单击“”展开层级,单击“-“收起层级。 可以试试集操作!今天的栗子,就来分享具体实现方法吧~ 本…...
Android View 初始化完成后,如果再调用measure再设置点击事件则点击事件会失效的解决方案
比如LinearLayout 或RecyclerView 我们在初始化完成并加载完数据后再次调用measure计算高度再setLayoutParams 会导致后面设置的点击事件失效。 比如: RecyclerView rv_select dialog.findViewById(R.id.rv_select); //点击事件rv_select.setOnItemClickListener(n…...
客户端电脑使用 FTP的Cadence_CIS库方法说明 (下)
简介:随着企业的规模扩大,硬件工程师的增多,使用统一服务器上的库管理,可以减少设计错误,提高效率。 使用在FTP上布局Cadence_CIS库,是目前的主流的做法之一; 本文方法,用于已经配置…...
【ES】笔记-let 声明及其特性
let 声明及其特性 声明变量 变量赋值、也可以批量赋值 let a;let b,c,d;let e100;let f521,giloveyou,h[];变量不能重复声明 let star罗志祥;let star小猪;块级作用域,let声明的变量只在块级作用域内有效 {let girl周杨青;}console.log(girl)注意:在 i…...
wps 预加载项插件本地开发启动项目打开wps 客户端,未看到加载项菜单,
wps 预加载项插件本地开发启动项目打开wps 客户端,未看到加载项菜单,请检查本地c盘安装目录下“jsplugins.xml”信息是否添加成功 如下图 name 插件项目 url 本地插件运行地址及端口 <jsplugins><jspluginonline name"wps-soft-copyright…...
uni-app开发微信小程序经常遇到的一些问题及解决方案
1.如何获取用户信息? 可以使用uni.getUserInfo接口获取用户信息。需要用户授权。 2.如何实现下拉刷新? 可以使用uni-app提供的页面组件内置下拉刷新功能,也可以自定义下拉刷新组件。 3.如何实现上拉加载更多? 可以在页面onReachBo…...
一个 git 仓库下拥有多个项目的 git hooks 配置方案
前言 通常情况下,一个 git 仓库就是一个项目,只需要配置一套 git hooks 脚本就可以执行各种校验任务。对于 monorepo 项目也是如此,monorepo 项目下的多个 packages 之间,它们是有关联的,可以互相引用,所以…...
钉钉对接打通金蝶云星空获取流程实例列表详情(宜搭)接口与其他应收单接口
钉钉对接打通金蝶云星空获取流程实例列表详情(宜搭)接口与其他应收单接口 对接系统钉钉 钉钉(DingTalk)是阿里巴巴集团专为中国企业打造的免费沟通和协同的多端平台,提供PC版,Web版和手机版,有考…...
用python做一个小项目,python做简单小项目
大家好,本文将围绕用python做一个小项目展开说明,python做简单小项目是一个很多人都想弄明白的事情,想搞清楚python入门小项目需要先了解以下几个事情。 来源丨网络 经常听到有朋友说,学习编程是一件非常枯燥无味的事情。其实&…...
输入筛选框搜索
文章目录 输入筛选框实现效果图需求前端工具版本添加依赖main.js导入依赖 代码 后端代码对应 sql对应 mapper.xml 文件的动态 sql 输入筛选框实现 效果图 需求 通过筛选框,选择公司,传入后端,后端根据公司名称去文章的内容中进行模糊查询 …...
公司植物日常护养方法备忘录
植物为我们净化空气,美化环境,我们要按照科学的经验照顾好它们。公司植物日常通用护养方法如下: 首先剪掉已经枯黄的部分。 需要晒太阳的植物按时搬到外面晒太阳,每次晒1到2个小时。 所有植物统一在每个月的20号左右施肥一次&am…...
小红书JAVA后端一面汇总总结
小红书 2 年社招 Java 后端一面的面经,面试的风格是从一个知识一层一层深入问到底层。 从 Java IO,问到 socket 底层。从 Java 内存,问到操作系统内存。所以学习知识的时候,不要只 看八股文,还是需要从点到面一层层去掌握, 才能比较好应对这类的面试场景。 问题记录 自我…...
【图论】强连通分量进阶
一.作用 强连通分量可以判断环和进行缩点。还有一系列作用.... 这篇文章介绍缩点 二.题目 https://www.luogu.com.cn/problem/P2341 三.思路 我们分析可以知道当一个点没有出度时,则为最受欢迎的牛。但如果有多个出度,则没有最受欢迎的牛。 这是只有…...
perl GetOptions
在Perl中,你可以使用标准模块Getopt::Long来解析命令行选项(Command Line Options)。Getopt::Long模块允许你定义命令行选项以及它们的值,并且还可以处理各种类型的选项,如标志选项(flag options࿰…...
QGIS下载谷歌地图或者其他地图
QGIS安装Welcome to the QGIS project! 打开QGIS 添加图源 Google_Maps: https://mt1.google.com/vt/lyrsr&x{x}&y{y}&z{z} Google_Terrain: https://mt1.google.com/vt/lyrst&x{x}&y{y}&z{z} Google_Roads:https://mt1.google.com/vt/lyrsh&x{x…...
Python-re模块-正则表达式模块常用方法
re模块介绍: Python的re模块提供了正则表达式的功能,可以用来进行高级的字符串匹配和处理。re模块的主要功能包括: 编译正则表达式 - 使用re.compile()可以编译正则表达式字符串,生成正则表达式对象。 匹配字符串 - 使用正则表达式对象的match()、search()、finda…...
修改el-select或者el-input样式失效
下午改el-input和el-select这两个的样式真的烦,,,还不如写原生标签了。。 样式使用的是sass 我已经在样式器中挨着挨着去找了,把层级的类都写下来了 .select-wraper{//下拉框.el-select{.el-input .el-input__wrapper{backgrou…...
【Apifox】Apifox设置参数说明:
文章目录 一、效果:二、Query参数:三、返回响应: 一、效果: 二、Query参数: 三、返回响应:...
离线数仓中,为什么用两个flume,一个kafka
实时数仓中,为什么没有零点漂移问题? 因为flink直接取的事件时间用kafka是为了速度快,并且数据不丢,那为什么既用了kafkachannel,也用了kafka,而不只用kafkachannel呢? 因为需要削峰填谷离线数仓…...
p7付费课程笔记6:CMS GC
目录 前言 工作步骤 缺点 问题 前言 上一章节我们讲了串/并行GC,这一章节说下CMS GC。看前思考一个问题,并行GC与CMS GC的区别在哪里。 什么是CMS收集器 CMS(Concurrent Mark-Sweep)是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
