简单介绍一下:Tableau学习教程(万字教材)
Tableau是一款数据分析软件,使用非常简单,通过数据的导入,结合数据操作,即可实现对数据进行分析,并生成可视化的图表直接展现给人们想要看到的通过数据分析出来的信息。
简单的说, Tableau的程序很容易上手,各公司可以用它将大量数据拖放到数字“画布”上,转眼间就能创建好各种图表。界面上的数据越容易操控,公司对自己在所在业务领域里的所作所为到底是正确还是错误,就能了解得越透彻。
为什么要使用Tableau?
- 数据科学的终极技能。
- 方便使用。
- 适用于任何业务。
- 快速而简单。
- 不需要进行任何编码。
- 社区庞大。
- 掌握数据的力量。
- 它使理解和解释数据报告变得更容易。
帮助多多,想升职加工资就动起手来,下面文档已经把绝大多数功能已经包含了
(含数据源以及tableau打包工作簿,学不会我把手剁下来寄给你)
| 类型 | 培训章节 | 内容 | 详细内容 |
| 基础篇 | 1 | Tableau介绍 | Tableau生态体系及tableau desktop安装步骤,注册介绍、Tableau Desktop和Tableau Server等工作界面介绍 |
| 基础篇 | 2 | 数据源连接 | 文本文件连接、数据库数据源连接以及实时连接与数据提取的区别,简单数据预处理 |
| 基础篇 | 3 | 表格制作 | 左分组报表、明细表(添加小计、排序、创建分层结构、简单公式使用、字体颜色、背景颜色、边框、筛选器使用) |
| 基础篇 | 4 | 图表制作 | 折线图、柱状图、饼图(圆环图)、数据标签(文本框) |
| 热图、甘特图、散点图、气泡图、靶心图 | |||
| 基础篇 | 5 | 仪表板开发 | 仪表板布局(浮动、筛选器共用) |
| 基础篇 | 6 | 发布 | 工作簿发布,发布流程介绍、注意事项 |
| 进阶篇 | 1 | 注册 | tableau desktop离线注册 |
| 进阶篇 | 2 | 数据源连接 | 多数据源连接(sql数据集,参数使用,并集) |
| 进阶篇 | 3 | 复杂表格制作 | 数值计算、逻辑计算、字符串函数、日期函数、聚合函数、表计算函数(重点) |
| 动态表头、字体颜色判断、背景颜色判断、数据信息映射给图形、跳转 | |||
| 参数的使用(数据权限设置) | |||
| 进阶篇 | 4 | 图表制作 | 直方图(数据桶),人口金字塔图,日历图 |
| 柱状折线图(两柱一线)、雷达图、凹凸图。特点:对数据集模型有要求。 | |||
| 进阶篇 | 5 | 地图制作 | 地图的使用方法 |
| 进阶篇 | 6 | 仪表板开发 | 仪表板布局(垂直、水平)、美化 |
| 进阶篇 | 7 | Server | 数据源发布、发布后数据源的使用、服务器中报表权限设置、切换(实时,数据读取)、刷新计划修改、web版的使用 |
先附上数据源:链接:https://pan.baidu.com/s/1H0Ervedkq8cV4Z0giI5avA?pwd=hws8
提取码:hws8
目录
第一章:Tableau介绍
1.Tableau生态体系
2.tableau desktop安装步骤
3.注册介绍
4.Tableau Desktop工作界面介绍
5.Tableau Server工作界面介绍
第二章:数据源连接
1.文本文件连接
2.Excel文件连接
3.数据库数据源连接
4.数据源连接页面数据预处理
第三章:表格制作
1.左分组报表
2.明细表
3.添加合计与小计
4.排序
5.创建分层结构
6.创建计算字段(简单公式使用)
7.字体颜色
8.背景颜色
9.边框
10.筛选器使用
11.创建文件夹
第四章:图表制作
1.折线图
2.柱状图
3.饼图(圆环图)
4.数据标签(文本框)
5.热图
6.甘特图
7.散点图
8.气泡图
9.靶心图
第五章:仪表板开发
第六章:发布
1.发布流程介绍
1)登录Tableau 生产服务器
2)链接Tableau服务器
3)输入Tableau 服务器用户密码
4)报表数据源链接
5)点击发布工作簿
6)发布工作簿
7)点击发布
2.注意事项
第七章:注册
第八章:多数据源连接
1.关联
2.关系
第九章:复杂表格制作
1.逻辑计算
2.聚合函数
3.表计算(重点)
4.字体颜色判断
5.数据信息映射给图形
6.跳转
7.参数的使用(数据权限设置)
第十章:图表制作
1.直方图(数据桶)
2.人口金字塔图
3.日历图
编辑4.凹凸图
5.柱状折线图(两柱一线)
6.雷达图
第十一章:地图的使用方法
1.填充地图的制作
2.地图钻取
第十二章:仪表板开发
1.仪表板布局(垂直、水平)
2.设计仪表板
基础篇 (第一至六章)
第一章:Tableau介绍
1.Tableau生态体系
1.Tableau生态体系
1)Tableau Desktop
Tableau Desktop是设计和创建美观的视图与仪表板、实现快捷数据分析功能的桌面端分析工具,包括 Tableau Desktop Personal(个人版)和 Tableau Desktop
2)Tableau Server
Tableau Server是一款商业智能应用程序,用于发布和管理Tableau Desktop 制作的报表,也可以发布和管理数据源,如自动刷新发布到Server上的数据提取。
3)Tableau Online
Tableau Online 针对云分析而建立,是 Tableau Server 的一种托管版本,省去硬件部署、维护及软件安装的时间与成本,提供的功能与Tableau Server没有区别,按每人每年的方式付费使用。
4)Tableau Mobile
Tableau Mobile是基于iOS和Android平台移动端应用程序。用户可通过iPad、Android设备或移动浏览器,来查看发布到Tableau Server或Tableau Online上的工作簿,并可进行简单的编辑和导出操作。
5)Tableau Reader
Tableau Reader是一个免费的桌面应用程序,可以用来打开和查看打包工作簿文件(.twbx), 也可以与工作簿中的视图和仪表板进行交互操作,如筛选、排序、向下钻取和查看数据明细等。
6)Tableau Public
Tableau Public是Tableau的免费版本,适合所有想要在Web上讲述交互式数据故事的人。作为服务交付,Tableau Public可以立时启动并运行。Tableau Public可以连接到数据、创建交互式数据可视化内容,并将其直接发布到自己的网站,通过所发现的数据内在含义引导读者,让他们与数据互动,发掘新的见解,这一切不用编写代码即可实现。
2.tableau desktop安装步骤
具体操作演示
3.注册介绍
注册码:(各位友人,注册码需要购买,淘宝拼喜喜都有,一杯奶茶钱)
4.Tableau Desktop工作界面介绍
数据源连接界面
制作工作表界面
仪表板制作界面
制作故事界面
5.Tableau Server工作界面介绍
Tableau online界面展示:
第二章:数据源连接
1.文本文件连接
常见的文本文件为:csv、txt,此节也主要讲解csv文件与txt文件的连接使用,其他请参考官方文档
1)连接txt文件(请链接数据源文件夹下面:超市销售数据.txt文件,也可下载右侧附件:)
在连接之前需要打开查看文件的分隔符可知为“逗号”
然后打开tableau软件,连接”超市销售数据.txt”
打开文件后如下图所示:
由上图可知:tableau对数据的读取正确,可说明此时tableau自动识别字段分隔符就是“逗号”,且默认表中第一行就是表头;如果读取数据有异常值,如何设置分隔符和表头呢?
打开数据集(超市销售数据.txt)右侧到三角符号,“字段名称位于第一行中”说明txt文件中第一行表示数据的字段名称;若数据中没有字段名称,此时选中“自动生成字段名称”可为数据自动生成字段名;
打开文本文件属性,可设置数据的“字段分隔符”“文本限定符”“字符集”“区域设置”。
2)连接csv文件(请链接数据源文件夹下面:超市销售数据.csv文件,也可下载右侧附件:
打开tableau软件,连接”超市销售数据.txt”
打开文件后如下图所示:
由图可知在左侧出现了“超市销售数据.txt”“炒熟销售数据.csv”两个文件,而我只加载了“超市销售数据.csv”,由此可知软件默认会打开此路径下的所有文本文件。
2.Excel文件连接
Excel文件连接主要介绍单个sheet的多个excel文件连接和多个sheet的一个excel文件连接
1)并集介绍
先介绍单个sheet的多个excel文件连接,请链接数据源文件夹下面:超市销售数据.xls和2018全国城市等级.xls
或直接下载右侧附件:和。
打开超市销售数据.xls
点击右上角logo符号,同样的方法加载“2018全国城市等级.xls”数据集:
加载后,在连接处会出现两个数据源,如下图:
此种情况无法做“并集”处理,可以对两个不同数据元的数据集做“关联”处理,“关联”方法的学习后文会详细介绍。
(若要合并 Tableau 数据源中的数据,表必须来自同一连接)
下面介绍多个sheet的excel文件连接,请链接数据源文件夹下面:超市销售数据(多sheet).xls
或直接下载右侧附件:
连接超市销售数据(多sheet).xls文件:
选择“新建并集”拖至右侧数据框中:
将三个sheet全拖上去
然后确定:
并集的本质:将多个sheet拼接在一起。多个表中相同的字段名称的数据会追加在一起,不同的字段名称的数据会议null值填充。
为了获得最佳结果,您使用并集合并的表必须具有相同的结构。即,每个表必须具有相同的字段数,并且相关字段必须具有匹配的字段名称和数据类型。
3.数据库数据源连接
在tableau数据源连接页面选择要使用的数据库:
本例使用MySQL数据库,请将下面sql文件导入数据库中使用,表名,库名无要求
数据库脚本文件:、、
连接MySQL数据库,会出现MySQL登录页面:
填写好登录信息,点击登录:
可以直接将表拖至右侧,也可以通过”自定义SQL”将数据查询出来来使用:直接拖表至右侧与excel方法相同,以及并集功能的使用方法也与excel类似,就不再做过多赘述,下面我们直接看”自定义SQL“的使用:
点击”自定义SQL“,在编辑框中输入要查询数据的sql语句,点击预览数据,保证sql语句正确,然后点击确定。
注:有关”参数的使用”会在后续文档中有详细介绍
点击”立即更新”即可查看数据。
查看数据连接方式:实时和数据提取
实时:就是实时获取数据库中的数据
数据提取:一次性将数据库数据加载到内存中,数据库数据发生变化时,tableau中数据不会随之变化,只能刷新数据后才能在tableau看到最新的数据。
当选择数据提取时,在最后发布工作簿到服务器中时,要设置数据刷新计划,具体设置后面会有详细介绍,此处不做过多介绍。
4.数据源连接页面数据预处理
在数据源页面中不管是文本数据集,excel数据集,还是sql数据集都可以做一些简单的数据预处理:
1)重命名
双击字段名称可以对字段名称进行”重命名“:
2)隐藏
对不需要的字段可以进行隐藏:打开字段名右侧倒三角符号,点击”隐藏“按钮:
3)字段拆分(自动拆分,自定义拆分)
点击拆分,会进行自动拆分:
点击自定义拆分,根据自己的需求来拆分:
4)tableau数据类型介绍
第三章:表格制作
本届内容介绍将以数据库数据集为例来介绍,也可以使用excel数据集或文本数据集。
制作:左分组报表/明细表
要求:按地区、省自治区,细分,左分组,按月份汇总销售额,数量,利润
掌握内容:
1.左分组报表
1)连接好数据源以后,点击下面工作表1,可到工作表制作界面
查看要求:按地区、省自治区,细分,左分组,按月份汇总销售额,数量,利润来实现左分组报表:
- 将”地区“、”省/自治区“、”细分“依次拉到行标记框中;
- 将”度量名称“放置列标记框中;
- ”度量至值”放置标记框中,删除除“利润”、“数量”、“销售额”以外的字段;
- 点击度量值胶囊左侧符号,改为文本。
- 左下角双击可编辑工作表表名,右上角设置报表展示区域
2.明细表
- 右击复制工作表
- 右击重命名为”明细表”
- 创建计算字段
- 设置完成以后点击保存
- 将创建后的“序号”字段设置为“离散”状态:
- 将“序号”放置行标记框中第一个,点击倒三角,去除对“显示标题”的勾选,此时就能得到我们想要的明细表了。
3.添加合计与小计
返回到左分组工作表,给左分组报表添加“合计”、“小计”
合计实现快捷方法:
- 点击“分析”,点击下面“合计”,可快速给报表设置“合计”,也包括“小计”。
具体实现方法:
- 点击“分析”,点击“合计”,可详细设置行列“合计”与“小计”。
- 将“细分”,“省/自治区”的合计重命名为“小计”,将“地区”的合计重命名为“总计”
同样的方法可将“省/自治区”的合计命名为“小计”
4.排序
维度字段排序:
- 点击“细分”字段右侧倒三角符号,在点击排序:
- 我们选择“嵌套”,以销售额来降序排序
5.创建分层结构
创建分层架构可以使图表的维度做上下钻:
- 点击“地区”右侧倒三角符号,点击“分层结构”,“创建分层结构”,并对分层结构命名
- 将“省/自治区”,“细分”都拖到分层中
- 在表格名称上也出现了扩展缩放按钮
6.创建计算字段(简单公式使用)
Tableau提供如下函数类型可供使用:(只需了解,不许熟记)
1)数字函数
| 函数 | 语法 | 描述 | ||||
| ABS | ABS(number) | 返回给定数字的绝对值。 示例: ABS(-7) = 7 第二个示例返回 Budget Variance 字段中包含的所有数字的绝对值。 | ||||
| ACOS | ACOS(number) | 返回给定数字的反余弦。结果以弧度表示。 示例: ACOS(-1) = 3.14159265358979 | ||||
| ASIN | ASIN(number) | 返回给定数字的反正弦。结果以弧度表示。 示例: ASIN(1) = 1.5707963267949 | ||||
| ATAN | ATAN(number) | 返回给定数字的反正切。结果以弧度表示。 示例: ATAN(180) = 1.5652408283942 | ||||
| ATAN2 | ATAN2(y number, x number) | 返回两个给定数字(x 和 y)的反正切。结果以弧度表示。 示例: ATAN2(2, 1) = 1.10714871779409 | ||||
| CEILING | CEILING(number) |
| ||||
| COS | COS(number) | 返回角度的余弦。以弧度为单位指定角度。 示例: COS(PI( ) /4) = 0.707106781186548 | ||||
| COT | COT(number) | 返回角度的余切。以弧度为单位指定角度。 示例: COT(PI( ) /4) = 1 | ||||
| DEGREES | DEGREES(number) | 将以弧度表示的给定数字转换为度数。 示例: DEGREES(PI( )/4) = 45.0 | ||||
| DIV | DIV(整数 1, 整数 2) | 返回将整数 1 除以整数 2 的除法运算的整数部分。 示例: DIV(11,2) = 5 | ||||
| EXP | EXP(number) | 返回 e 的给定数字次幂。 示例: EXP(2) = 7.389 | ||||
| FLOOR | FLOOR(number) |
| ||||
| HEXBINX | HEXBINX(number, number) | 将 x、y 坐标映射到最接近的六边形数据桶的 x 坐标。数据桶的边长为 1,因此,可能需要相应地缩放输入。 HEXBINX 和 HEXBINY 是用于六边形数据桶的分桶和标绘函数。六边形数据桶是对 x/y 平面(例如地图)中的数据进行可视化的有效而简洁的选项。由于数据桶是六边形的,因此每个数据桶都非常近似于一个圆,并最大程度地减少了从数据点到数据桶中心的距离变化。这使得聚类分析更加准确并且能提供有用的信息。 示例: HEXBINX([Longitude], [Latitude]) | ||||
| HEXBINY | HEXBINY(number, number) | 将 x、y 坐标映射到最接近的六边形数据桶的 y 坐标。数据桶的边长为 1,因此,可能需要相应地缩放输入。 示例: HEXBINY([Longitude], [Latitude]) | ||||
| LN | LN(number) | 返回数字的自然对数。如果数字小于或等于 0,则返回 Null。 | ||||
| LOG | LOG(number [, base]) | 返回数字以给定底数为底的对数。如果省略了底数值,则使用底数 10。 | ||||
| MAX | MAX(number, number) | 返回两个参数(必须为相同类型)中的较大值。如果任一参数为 Null,则返回 Null。MAX 也可应用于聚合计算中的单个字段。 示例: MAX(4,7) | ||||
| MIN | MIN(number, number) | 返回两个参数(必须为相同类型)中的较小值。如果任一参数为 Null,则返回 Null。MIN 也可应用于聚合计算中的单个字段。 示例: MIN(4,7) | ||||
| PI | PI( ) | 返回数字常量 pi:3.14159。 | ||||
| POWER | POWER(number, power) | 计算数字的指定次幂。 示例: POWER(5,2) = 52 = 25 也可以使用 ^ 符号: 5^2 = POWER(5,2) = 25 | ||||
| RADIANS | RADIANS(number) | 将给定数字从度数转换为弧度。 示例: RADIANS(180) = 3.14159 | ||||
| ROUND | ROUND(number, [decimals]) | 将数字舍入为指定位数。decimals 参数指定要在最终结果中包含的小数位数精度。如果省略 decimals,则 number 舍入为最接近的整数。 示例: 此示例将每个 Sales 值舍入为整数: ROUND(Sales) 某些数据库(例如 SQL Server)允许指定负 length,其中 -1 将 number 舍入为 10 的倍数,-2 舍入为 100 的倍数,依此类推。此功能并不适用于所有数据库。例如,Excel 和 Access 不具备此功能。 | ||||
| SIGN | SIGN(number) | 返回数字的符号:可能的返回值为:在数字为负时为 -1,在数字为零时为 0,在数字为正时为 1。 示例: 如果 profit 字段的平均值为负值,则 SIGN(AVG(Profit)) = -1 | ||||
| SIN | SIN(number) | 返回角度的正弦。以弧度为单位指定角度。 示例: SIN(0) = 1.0 | ||||
| SQRT | SQRT(number) | 返回数字的平方根。 示例: SQRT(25) = 5 | ||||
| SQUARE | SQUARE(number) | 返回数字的平方。 示例: SQUARE(5) = 25 | ||||
| TAN | TAN(number) | 返回角度的正切。以弧度为单位指定角度。 示例: TAN(PI ( )/4) = 1.0 | ||||
| ZN | ZN(expression) | 如果表达式不为 Null,则返回该表达式,否则返回零。使用此函数可使用零值而不是 Null 值。 示例: ZN([Profit]) = [Profit] |
2)字符串函数
| 函数 | 语法 | 定义 |
| ASCII | ASCIi(string) | 返回 string 的第一个字符的 ASCII 码。 示例: ASCIi('A') = 65 |
| CHAR | CHAr(number) | 返回通过 ASCII 代码 number 编码的字符。 示例: CHAr(65) = 'A' |
| CONTAINS | CONTAINS(string, substring) | 如果给定字符串包含指定子字符串,则返回 true。 示例: CONTAINS(“Calculation”, “alcu”) = true |
| ENDSWITH | ENDSWITH(string, substring) | 如果给定字符串以指定子字符串结尾,则返回 true。会忽略尾随空格。 示例: ENDSWITH(“Tableau”, “leau”) = true |
| FIND | FIND(string, substring, [start]) | 返回 substring 在 string 中的索引位置,如果未找到 substring,则返回 0。如果添加了可选参数 start,则函数会忽略在索引位置 start 之前出现的任何 substring 实例。字符串中第一个字符的位置为 1。 示例: FIND("Calculation", "alcu") = 2 |
| FINDNTH | FINDNTH(string, substring, occurrence) | 返回指定字符串内的第 n 个子字符串的位置,其中 n 由 occurrence 参数定义。 注意: 所有数据源都不可使用 FINDNTH。 示例: FINDNTH("Calculation", "a", 2) = 7 |
| LEFT | LEFt(string, number) | 返回字符串最左侧一定数量的字符。 示例: LEFt("Matador", 4) = "Mata" |
| LEN | LEN(string) | 返回字符串长度。 示例: LEN("Matador") = 7 |
| LOWER | LOWER(string) | 返回 string,其所有字符为小写。 示例: LOWER("ProductVersion") = "productversion" |
| LTRIM | LTRIm(string) | 返回移除了所有前导空格的字符串。 示例: LTRIm(" Matador ") = "Matador " |
| MAX | MAX(a, b)
| 返回 a 和 b(必须为相同类型)中的较大值。此函数常用于比较数字,但也对字符串有效。对于字符串,MAX 查找数据库为该列定义的排序序列中的最高值。如果任一参数为 Null,则返回 Null。 示例: MAX ("Apple","Banana") = "Banana" |
| MID | (MId(string, start, [length]) | 返回从索引位置 start 开始的字符串。字符串中第一个字符的位置为 1。如果添加了可选参数 length,则返回的字符串仅包含该数量的字符。 示例: MId("Calculation", 2) = "alculation" |
| MIN | MIN(a, b) | 返回 a 和 b(必须为相同类型)中的较小值。此函数常用于比较数字,但也对字符串有效。对于字符串,MIN 查找排序序列中的最低值。如果任一参数为 Null,则返回 Null。 示例: MIN ("Apple","Banana") = "Apple" |
| REPLACE | REPLACE(string, substring, replacement) | 在 string 中搜索 substring 并将其替换为 replacement。如果未找到 substring,则字符串保持不变。 示例: REPLACE("Version8.5", "8.5", "9.0") = "Version9.0" |
| RIGHT | RIGHt(string, number) | 返回 string 中最右侧一定数量的字符。 示例: RIGHt("Calculation", 4) = "tion" |
| RTRIM | RTRIm(string) | 返回移除了所有尾随空格的 string。 示例: RTRIm(" Calculation ") = " Calculation" |
| SPACE | SPACe(number) | 返回由指定 number 个重复空格组成的字符串。 示例: SPACe(1) = " " |
| SPLIT | SPLIT(string, delimiter, token number) | |
| STARTSWITH | STARTSWITH(string, substring) | 如果 string 以 substring 开头,则返回 true。会忽略前导空格。 示例: STARTSWITH(“Joker”, “Jo”) = true |
| TRIM | TRIm(string) | 返回移除了前导和尾随空格的字符串。 示例: TRIm(" Calculation ") = "Calculation" |
| UPPER | UPPER(string) | 返回字符串,其所有字符为大写。 示例: UPPER("Calculation") = "CALCULATION" |
3)日期时间函数
| 函数 | 语法 | 描述 |
| DATEADD | DATEADD(date_part, interval, date) | 返回指定日期,该日期的指定 date_part 中添加了指定的数字 interval。 支持 ISO 8601 日期。 示例: DATEADD('month', 3, #2004-04-15#) = 2004-07-15 12:00:00 AM 该表达式会向日期 #2004-04-15# 添加三个月。 |
| DATEDIFF | DATEDIFF(date_part, date1, date2, [start_of_week]) | 返回 date1 与 date2 之差(以 date_part 的单位表示)。 start_of_week 参数(可用于指定哪一天是一周的第一天)是可选的。可能的值为“monday”、“tuesday”等。如果省略,一周的开始由数据源确定。请参见数据源的日期属性。 支持 ISO 8601 日期。 示例: DATEDIFF('week', #2013-09-22#, #2013-09-24#, 'monday')= 1 第一个表达式返回 1,因为当 start_of_week 为 'monday' 时,9 月 22(星期日)和 9 月 24(星期二)不属于同一周。第一个表达式返回 0,因为当 start_of_week 为 'sunday' 时,9 月 22(星期日)和 9 月 24(星期二)属于同一周。 |
| DATENAME | DATENAME(date_part, date, [start_of_week]) | 以字符串的形式返回 date 的 date_part。start_of_week 参数(可用于指定哪一天是一周的第一天)是可选的。可能的值为“monday”、“tuesday”等。如果忽略 start_of_week,则一周的开始由数据源确定。请参见数据源的日期属性。 支持 ISO 8601 日期。 示例: DATENAME('year', #2004-04-15#) = "2004" |
| DATEPARSE | DATEPARSE(date_format, [date_string]) | 返回 [date_string] 作为日期。 date_format 参数将描述 [字符串] 字段的排列方式。由于可通过各种方式对字符串字段进行排序,因此 date_format 必须完全匹配。有关完整解释,请参见将字段转换为日期字段。 示例: DATEPARSE('yyyy-MM-dd', #2004-04-15#) = "April 4, 2004" 注意:此函数可通过以下连接器获得:非旧版 Excel 和文本文件连接、Amazon EMR Hadoop Hive、Cloudera Hadoop、Google Sheets、Hortonworks Hadoop Hive、MapR Hadoop Hive、MySQL、Oracle、PostgreSQL 以及 Tableau 数据提取。有些格式可能并非适用于所有连接。 注意:Hive 变体不支持 DATEPARSE。仅支持 Denodo、Drill 和 Snowflake。 |
| DATEPART | DATEPART(date_part, date, [start_of_week]) | 以整数的形式返回 date 的 date_part。 start_of_week 参数(可用于指定哪一天是一周的第一天)是可选的。可能的值为“monday”、“tuesday”等。如果忽略 start_of_week,则一周的开始由数据源确定。请参见数据源的日期属性。 注意: 当 date_part 为工作日时,会忽略 start_of_week 参数。这是因为 Tableau 依赖固定工作日顺序来应用偏移。 支持 ISO 8601 日期。 示例: DATEPART('year', #2004-04-15#) = 2004 |
| DATETRUNC | DATETRUNC(date_part, date, [start_of_week]) | 按 date_part 指定的准确度截断指定日期。此函数返回新日期。例如,以月份级别截断处于月份中间的日期时,此函数返回当月的第一天。start_of_week 参数(可用于指定哪一天是一周的第一天)是可选的。可能的值为“monday”、“tuesday”等。如果忽略 start_of_week,则一周的开始由数据源确定。请参见数据源的日期属性。 支持 ISO 8601 日期。 示例: DATETRUNC('quarter', #2004-08-15#) = 2004-07-01 12:00:00 AM |
| DAY | DAY(date) | 以整数的形式返回给定日期的天。 示例: DAY(#2004-04-12#) = 12 |
| ISDATE | ISDATE(string) | 如果给定字符串为有效日期,则返回 true。 示例: ISDATE("April 15, 2004") = true |
| MAKEDATE | MAKEDATE(year, month, day) | 返回一个依据指定年份、月份和日期构造的日期值。 可用于 Tableau 数据提取。检查在其他数据源中的可用性。 示例: MAKEDATE(2004, 4, 15) = #April 15, 2004# |
| MAKEDATETIME | MAKEDATETIME(date, time) | 返回合并了 date 和 time 的 datetime。日期可以是 date、datetime 或 string 类型。时间必须是 datetime。 注意:此函数仅适用于与 MySQL 兼容的连接(对于 Tableau 为 MySQL 和 Amazon Aurora)。 示例: MAKEDATETIME("1899-12-30", #07:59:00#) = #12/30/1899 7:59:00 AM# |
| MAKETIME | MAKETIME(hour, minute, second) | 返回一个依据指定小时、分钟和秒构造的日期值。 可用于 Tableau 数据提取。检查在其他数据源中的可用性。 示例: MAKETIME(14, 52, 40) = #14:52:40# |
| MAX | MAX(expression) or MAX(expr1, expr2) | 通常应用于数字,不过也适用于日期。返回 a 和 b 中的较大值(a 和 b 必须为相同类型)。如果任一参数为 Null,则返回 Null。 示例: MAX(#2004-01-01# ,#2004-03-01#) = 2004-03-01 12:00:00 AM |
| MIN | MIN(expression) or MIN(expr1, expr2) | 通常应用于数字,不过也适用于日期。返回 a 和 b 中的较小值(a 和 b 必须为相同类型)。如果任一参数为 Null,则返回 Null。 示例: MIN(#2004-01-01# ,#2004-03-01#) = 2004-01-01 12:00:00 AM |
| MONTH | MONTH(date) | 以整数的形式返回给定日期的月份。 示例: MONTH(#2004-04-15#) = 4 |
| NOW | NOW( ) | 返回当前本地系统日期和时间。 示例: NOW( ) = 2004-04-15 1:08:21 PM |
| QUARTER | QUARTER ( ) | 以整数的形式返回给定日期的季度。 示例: WEEK (#2004-04-15#) = 16 |
| TODAY | TODAY( ) | 返回当前日期。 示例: TODAY( ) = 2004-04-15 |
| WEEK | WEEK( ) | 以整数的形式返回给定日期的周。 示例: WEEK (#2004-04-15#) = 16 |
| YEAR | YEAR (date) | 以整数的形式返回给定日期的年份。 示例: YEAR(#2004-04-15#) = 2004 |
| ISOQUARTER | ISOQUARTER (date) | 以整数的形式返回给定日期的基于 ISO8601 周的季度。 示例: ISOQUARTER (#2005-03-29#) = 2 |
| ISOWEEK | ISOWEEK (date) | 以整数的形式返回给定日期基于 ISO8601 周的周。 示例: ISOWEEK (#2004-03-29#) = 14 |
| ISOWEEKDAY | ISOWEEKDAY (date) | 以整数的形式返回给定日期基于 ISO8601 周的平日。 示例: ISOWEEKDAY (#2004-03-29#) = 1 |
| ISOYEAR | ISOYEAR (date) | 以整数的形式返回给定日期的基于 ISO8601 周的年。 示例: ISOYEAR (#2003-12-29#) = 2004 |
date_part 值
Tableau 中的多日期函数使用 date_part,它是一个常量字符串参数。
您可以使用的有效 date_part 值为:
| DATE_PART | 值 |
| 'year' | 四位数年份 |
| 'quarter' | 1-4 |
| 'month' | 1-12 或 "January"、"February" 等 |
| 'dayofyear' | 一年中的第几天;1 月 1 日为 1、2 月 1 日为 32,依此类推 |
| 'day' | 1-31 |
| 'weekday' | 1-7 或 "Sunday"、"Monday" 等 |
| 'week' | 1-52 |
| 'hour' | 0-23 |
| 'minute' | 0-59 |
| 'second' | 0-60 |
| 'iso-year' | 4 位数 ISO 8601 年份 |
| 'iso-quarter' | 1-4 |
| 'iso-week' | 1-52,每周始终从星期一开始 |
| 'iso-weekday' | 1-7,每周始终从星期一开始 |
4)逻辑函数
| 函数 | 语法 | 说明 |
| IN | | 如果 示例: SUM([Cost]) IN (1000, 15, 200) [SET] IN [COMBINED FIELD] |
| AND | IF | 对两个表达式执行逻辑合取运算。 示例: IF (ATTR([Market]) = "Africa" AND SUM([Sales]) > [Emerging Threshold] )THEN "Well Performing" |
| CASE、ELSE、END | CASE | 执行逻辑测试并返回相应的值。CASE 函数可评估 expression,并将其与一系列值(value1、 value2 等)比较,然后返回结果。遇到一个与 expression 匹配的值时,CASE 返回相应的返回值。如果未找到匹配值,则使用默认返回表达式。如果不存在默认返回表达式并且没有任何值匹配,则会返回 Null。 CASE 比 IIF 或 IF THEN ELSE 更易于使用。 通常,您使用一个 IF 函数来执行一系列任意测试,并使用 CASE 函数搜索与表达式的匹配值。但 CASE 函数都可以重写为 IF 函数,不过 CASE 函数一般更加简明。 很多时候可以使用组获得与复杂 case 函数相同的结果。 示例: CASE [Region] WHEN 'West' THEN 1 WHEN 'East' THEN 2 ELSE 3 END CASE LEFt(DATENAME('weekday',[Order Date]),3) WHEN 'Sun' THEN 0 WHEN 'Mon' THEN 1 WHEN 'Tue' THEN 2 WHEN 'Wed' THEN 3 WHEN 'Thu' THEN 4 WHEN 'Fri' THEN 5 WHEN 'Sat' THEN 6 END |
| ELSEIF | IF | 测试一系列表达式,同时为第一个为 true 的 示例: IF [Profit] > 0 THEN 'Profitable' ELSEIF [Profit] = 0 THEN 'Breakeven' ELSE 'Loss' END |
| IFNULL | IFNULL(expr1, expr2) | 如果 示例: IFNULL([Profit], 0) |
| IIF | IIF(test, then, else, [unknown]) | 检查某个条件是否得到满足,如果为 TRUE 则返回一个值,如果为 FALSE 则返回另一个值,如果未知,则返回可选的第三个值或 NULL。 示例: IIF([Profit] > 0, 'Profit', 'Loss') |
| ISDATE | ISDATE(string) | 如果给定字符串为有效日期,则返回 true。 示例: ISDATE("2004-04-15") = True |
| ISNULL | ISNULL(expression) | 如果表达式为 NULL(未包含有效数据),则返回 true。 示例: ISNULL([Profit]) |
| MAX | MAX(expression) 或 Max(expr1, expr2) | 返回单一表达式所有记录中的最大值,或返回每条记录两个表达式中的最大值。 示例: MAX([Sales]) |
| MIN | MIN(expression) 或 MIN(expr1, expr2) | 返回单一表达式所有记录中的最小值,或返回每条记录两个表达式中的最小值。 示例: MIN([Profit]) |
| NOT | IF NOT | 对一个表达式执行逻辑非运算。 示例: IF NOT [Profit] > 0 THEN "Unprofitable" END |
| 或者 | IF | 对两个表达式执行逻辑析取操作。 示例: IF [Profit] < 0 OR [Profit] = 0 THEN "Needs Improvement" END |
| ZN | ZN(expression) | 如果 示例: ZN([Profit]) |
5)聚合函数
| 函数 | 语法 | 定义 |
| ATTR | ATTR(expression) | 如果它的所有行都有一个值,则返回该表达式的值。否则返回星号。会忽略 Null 值。 |
| AVG | AVG(expression) | 返回表达式中所有值的平均值。AVG 只能用于数字字段。会忽略 Null 值。 |
| COLLECT | COLLECT (spatial) | 将参数字段中的值组合在一起的聚合计算。会忽略 Null 值。 注意:COLLECT 函数只能用于空间字段。 示例: COLLECT ([Geometry]) |
| COUNT | COUNT(expression) | 返回组中的项目数。不对 Null 值计数。 |
| COUNTD | COUNTD(expression) | 返回组中不同项目的数量。不对 Null 值计数。 |
| MAX | MAX(expression) | 返回表达式在所有记录中的最大值。如果表达式为字符串值,则此函数返回按字母顺序定义的最后一个值。 |
| MEDIAN | MEDIAN(expression) | 返回表达式在所有记录中的中位数。中位数只能用于数字字段。会忽略 Null 值。 |
| MIN | MIN(expression) | 返回表达式在所有记录中的最小值。如果表达式为字符串值,则此函数返回按字母顺序定义的第一个值。 |
| PERCENTILE | PERCENTILE(expression, number) | 从给定表达式返回与指定数字对应的百分位处的值。数字必须介于 0 到 1 之间(含 0 和 1),例如 0.66,并且必须是数值常量。 |
| STDEV | STDEV(expression) | 基于群体样本返回给定表达式中所有值的统计标准差。 |
| STDEVP | STDEVP(expression) | 基于有偏差群体返回给定表达式中所有值的统计标准差。 |
| SUM | SUM(expression) | 返回表达式中所有值的总计。SUM 只能用于数字字段。会忽略 Null 值。 |
| VAR | VAR(expression) | 基于群体样本返回给定表达式中所有值的统计方差。 |
| VARP | VARP(expression) | 对整个群体返回给定表达式中所有值的统计方差。 |
6)类型转换函数
| 函数 | 语法 | 描述 |
| DATE | DATE(expression) | 在给定数字、字符串或日期表达式的情况下返回日期。 示例: DATE([Employee Start Date]) 第二和第三个示例中的引号不可省略。 |
| DATETIME | DATETIME(expression) | 在给定数字、字符串或日期表达式的情况下返回日期时间。 示例: DATETIME(“April 15, 2005 07:59:00”) = April 15, 2005 07:59:00 |
| DATEPARSE | DATEPARSE(format, string) | 将字符串转换为指定格式的日期时间。是否支持某些区域设置特定的格式由计算机的系统设置确定。数据中出现的不需要解析的字母应该用单引号 (' ') 引起来。对于值之间没有分隔符的格式(如 Mmddyy),请验证它们是否按预期方式解析。该格式必须是常量字符串,而非字段值。如果数据与格式不匹配,此函数将返回 Null。 此函数可用于多种连接器。 示例: DATEPARSE ("dd.MMMM.yyyy", "15.April.2004") = #April 15, 2004# |
| FLOAT | FLOAT(expression) | 将其参数转换为浮点数。 示例: FLOAT(3) = 3.000 |
| INT | INT(expression) | 将其参数转换为整数。对于表达式,此函数将结果截断为最接近于 0 的整数。 示例: INT(8.0/3.0) = 2 字符串转换为整数时会先转换为浮点数,然后舍入。 |
| STR | STR(expression) | 将其参数转换为字符串。 示例: STR([Age]) 此表达式会提取名为 Age 的度量中的所有值,并将这些值转换为字符串。 |
7)表计算函数
表计算函数会在后文中详细介绍,在这不做过多介绍
7.字体颜色
- 设置那部分字体就将鼠标指向字体后右击打开设置格式
- 然后点击左侧第一个按钮开始设置字体及颜色
- 表格标题字体颜色设置,双击标题即可在里面设置
8.背景颜色
- 设置那部分背景颜色就将鼠标指向字体后右击打开设置格式
- 然后点击左侧第三个按钮开始设置背景颜色
9.边框
- 点击左侧第四个按钮开始设置边框
10.筛选器使用
- 选择地区作为筛选器,拖放至筛选器框中,此时弹出“地区”筛选器编辑框
- 选择从“列表中选择”,点击全部,点击确定
- 此时就会在筛选器框中出现地区筛选器,点击到三角符号
- 选择显示筛选器,此时就会在报表右侧出现筛选器
- 筛选器样式设置
- 点击筛选器右侧倒三角符号,可对筛选器进行编辑
11.创建文件夹
创建文件夹是在加载的数据源字段比较多,可对字段进行分类放在不同的文件夹下,方便在制作图表时查找
此时就可以将属于“地理纬度”的字段拖放至这个文件夹下面了。
第四章:图表制作
Tableau在工具中提供的可制作的图表类型不多,有些图表更需要对数据模型做特殊处理后才能实现,本章节主要介绍tableau可提供的一些简单常用图表的制作:
1.折线图
拆线图:按月查询销售额和利润两条线
- “按月查询”需要月份字段,用“订单日期”字段中的月份来汇总数据
- 首先需要将“订单日期”改为“日期”类型
- 通过“订单日期”字段创建“月份”字段,
- 并将字段设置为“维度”
- 制作折线图
- 合并轴
- 同步轴
- 折线颜色修改
- 修改X轴月份为“一月”、“二月”样式
方法一:直接修改样式
方法二:修改”月份”计算字段
- 添加筛选器(需要添加年份筛选器,因为此时图表展示的是多年按月份的汇总数据)
简单流程如下:
- 最后一部就是美化
- 设置平均线
- 最终样式:
2.柱状图
柱状图: 全年按地区,看销售额和利润两根柱子
- ”新建工作表“按照下图设置
- 美化图表(设置字体格式,显示标签,以及设置年份筛选器)
- 最中样式:
3.饼图(圆环图)
饼图:全年按子类别,利润(数字+百分比)
饼状图制作方法:
- 在行方框中双击后输入”1“,然后改为”平均值”
- 右击轴进行编辑
- 制作图表
- 美化
- 最终图表样式
圆环图制作方法:
- 复制饼状图,并命名为圆环图
- 然后再图表中将行方框中“平均值(1)”复制一份放在后面
- 清空复制后的标记框,将此时饼图的大小调小一点,且轴的范围要与上面饼图的范围一致
- 合并轴,同步轴
- 美化
- 最终样式
4.数据标签(文本框)
数据标签反应的是一些指标类的数据
制作方法:
- 最终样式
5.热图
热力图:按每周看,通过星期几+产品字类别,看销售额的热力图
制作方法:
- 新建工作表命名为热图
- 将订单日期设置为工作日放在列方框中;子类别拖至在行方框中;销售额放在标记框中改为颜色
- 美化
- 最终样式:
6.甘特图
特点:甘特图更能反映出一个时间的进度,向查看项目进度,订单发货进度等等
甘特图:基于类别,字类别看每条订单的发货时长
制作方法:
- 新建工作表命名为甘特图
- 创建发货时长计算字段
- 制作图表
- 创建订单状态字段
7.散点图
散点图:某一时间段内,每笔订单根据利润和销售额的散点图
制作方法:
- 新建工作表,命名为散点图
- 将销售额字段放在列,将利润放在行
- 此时数据的状态为聚合,需要取消聚合状态
- 创建利润判断计算字段
- 美化
- 最终样式
8.气泡图
气泡图:查看某一时间段内,按子类别,看利润的气泡图
制作方法:
- 新建工作表,命名为气泡图
- 标记框中图表类型设置为圆,利润放置标记框设置为大小,子类别分别设置为标签和颜
- 最终样式:
9.靶心图
靶心图:某一时间段内,按小类别,查看销售额与利润的对比
制作方法:
- 新建工作表,命名为靶心图
- 标记框中图表类型设置为柱状图,销售额显示标签,子类别放在行,利润放在列
- 最终样式
第五章:仪表板开发
掌握内容:仪表板布局(浮动、筛选器共用)
要求:将第四章所有图表布局在同一张仪表板,共用筛选器(年份查询和地区查询),设置仪表板标题为“超市数据分析看板”分辨率大小为:横向1366,纵向自适应。
制作方法:
- 新建仪表板,重命名为:超市数据分析
- 在对象栏拖去空白组件到右侧报表展示栏
- 打开布局,选中放在图表展示栏的空白组件,设置背景颜色与边框
- 勾选显示仪表板标题,然后鼠标选中标题,在“布局”栏中设置边框与背景色,双击标题,弹出编辑标题框,进行编辑,然后确定。
- 设置仪表板大小
- 向仪表板加载图标
- 同样的方法,加载剩余的其他图表,图表位置自定义
- 筛选器共用
- 新建“地区”筛选器
- 设置筛选器属性
- 美化,可以向看板中添加一下图片
- 最终样式
第六章:发布
1.发布流程介绍
1)登录Tableau 生产服务器
1)登录Tableau 生产服务器
2)链接Tableau服务器
Tableau online 、tableau server 、tableau public都可以在此处登录
3)输入Tableau 服务器用户密码
4)报表数据源链接
如果做的是项目报表,在发布之前,需要明确报表连接服务器地址(地址,账号,密码)是生产还是测试,必要时需切换服务器地址;其他情况无需关心此步。
5)点击发布工作簿
6)发布工作簿
选择项目;名称;刷新计划,权限工作表请选择,仅限仪表盘;
数据源:此时因为工作表数据连接是数据提取,此时以数据提取发布后,也可以在服务器中改为实时
7)点击发布
发布后会出现如下界面:
- 更改数据源为实时连接状态(简单了解一下,会问会详细介绍到)
- 设置数据提取状态下的数据刷新计划
2.注意事项
- 发布报表的同时鼠标不能选中报表单元格;
- 如果是项目报表请切换成“生产数据库”
- 注意发布路径,在报表较多的情况下,列出报表发布路径清单,以免发布错误;
- 经过布局在仪表板的工作表无需发布工作表,发布仪表板即可;
进阶篇 (第七至十三章)
第七章:注册
掌握内容:Tableau Desktop离线注册
如何离线激活Tableau
相信大部分公司都有这个限制,公司电脑只能使用局域网,无法连接互联网。因此在使用Tableau激活码激活的时候会出现错误无法激活。
1)断开电脑网络
因为实在本机做的测试,在开始之前需要断开网络;
2) 选择用密钥激活tableau
3)输入密钥后,点击激活,如下所示,点击保存
输入密钥以后因为无法联网,所以会提示无法激活。
但是Tableau提示我们可以保存激活文件并转到官网完成激活过程。
4)将文件保存至桌面,然后退出tableau激活页面
5)然后连接网络登录官网:Activation
点击【Upload Activation File】,稍等一会后,出现以下界面:
点击其中黄色字体【here】就可以下载激活文件了。
6)继续断开网络
7)将激活文件双击就可以成功激活Tableau了。
第八章:多数据源连接
1.关联
将多个数据源连接在一起
2.关系
加载多个数据源,通过有联系的字段来制作报表
编辑完关系,可在左侧字段后面查看到两个数据源有关系的字段
第九章:复杂表格制作
1.逻辑计算
逻辑判断函数进场使用,是报表制作中的重中之重
1)case when ...then...when...then end
2)If <条件> then 结果1 elseif <条件> then 结果2 else 结果3 end
3)Ifnull
2.聚合函数
1)简单聚合函数MAX(),MIN(),SUM(),AVG(),COUNT()
2)Fixed函数使用(重点)
在 Tableau 中,度量值在视图中以聚合的方式呈现,聚合的级别由视图中的维度来控制,比如原本视图中只有 “AAA” 这一个维度. 如果我们再向颜色标记拖放一个维度“BBB”的话,那么tableau就会依据"AAA"和“”BBB“两个维度做聚合了。 假如我们仍只希望根据“”AAA“这一个维度做聚合呢? 就可以用Fixed函数固定聚合的维度。
{FIXED [AAA] : SUM([Sales])}
后续图表制作中会经常使用到此函数,请重点学习
3.表计算(重点)
Tableau内置了部分常用的表计算,称之为 “快速表计算”,这些快速表计算可以视为是预设好的表计算表达式,
我们也可以通过把视图的快速表计算拖入度量中查看具体的表计算公式。
案列学习:
要求:按月计算全国各省、自治州、细分中各类别的同比数据与同比增长率
制作方法:
1)使用快速表计算
- 新建字段同比
- 复制字段“利润”更名为“利润(同比)”
- 如下图所示搭建报表
- 添加快速表计算
- 编辑表计算
- 查看计算公式
- 美化
2)创建计算字段(直接写公式)
公式= (ZN(SUM([利润])) – LOOKUP(ZN(SUM([利润])), -1)) / ABS(LOOKUP(ZN(SUM([利润])), -1))
- 然后编辑表计算,也可得到想要的结果
- 最终样式:
总结:
1) 常见快速表计算
第一类的快速表计算与日期无关,常见的七种快速表计算的基本对应关系如下:
- 汇总 Running Total=RUNNING_SUM(SUM([Sales]))
- 差异 Difference= ZN(SUM([Sales])) – LOOKUP(ZN(SUM([Sales])), -1)
- 差异百分比 Percent Difference = (ZN(SUM([Sales])) – LOOKUP(ZN(SUM([Sales])), -1)) / ABS(LOOKUP(ZN(SUM([Sales])), -1))
- 总额百分比Percent of Total = SUM([Sales]) / TOTAL(SUM([Sales]))
- 排序 Rank = RANK(SUM([Sales]))
- 百分位 Percentile = RANK_PERCENTILE(SUM([Sales]))
- 移动平均 Moving Average = WINDOW_AVG(SUM([Sales]), -2, 0) (前两位到当前)
2)日期类快速表计算
另外的四个快速表计算是基于连续时间的,其中前三个需要详细级别至少到“年”, 当存在多个日期维度时,分区字段默认为最低的详细级别的字段,比如有年、季度,则以季度计算。
- 年度累计 YTD Total = RUNNING_SUM(SUM([Sales]))
- 复合增长率 Compound Growth Rate = POWER(ZN(SUM([Sales]))/LOOKUP(ZN(SUM([Sales])), FIRST()),ZN(1/(INDEX()-1))) – 1
- 年度同比 YOY Growth = (ZN(SUM([Sales])) – LOOKUP(ZN(SUM([Sales])), -1)) / ABS(LOOKUP(ZN(SUM([Sales])), -1))
! 使用日期类表计算时有一个前提,视图中必须有相应的日期字段。
年度累计、年度同比:详细级别必须是 「年」
YTD累计、YTD同比:详细级别必须是你想要表达的D,比如month或者day,不能是年。
特殊类-二次表计算
在表计算中,比较特殊的是最后一个“年度累计增长率”,YTD Growth ,当我们添加这个表计算,并拖入到度量中时,会发现度量中出现了两个计算字段,中文下是“计算10”和“计算10 1”(10代表的是第10次通过拖动生成计算字段),英文下就是“calculation 10”和“calculation 10 1”,为什么?因为年度累计增长率是二次表计算,虽然也可以在一个公式中表明,但这样更有助于用户看清楚。我们把两个表计算改为 “YTD SUM”计算累计绝对值,和“累计增长率YTD growth”两个字段。
- YTD SUM = RUNNING_SUM(SUM([Sales]))
- 累计同比 YTD Growth = (ZN([YTD SUM]) – LOOKUP(ZN([YTD SUM]), -1)) / ABS(LOOKUP(ZN([YTD SUM]), -1))
表计算函数
Tableau的表计算分为几类,重点是前面三类。
- 索引排序函数:index()、size()、first()、last() ——这四个不需要参数; rank()及延伸函数,如rank_dense(),rank_modified()等;
- 移动计算函数:running_x ,比如 running_sum, running_avg, running_max等;
- 范围计算函数:window_x,比如window_sum,window_avg,window_max,等
- R语言相关计算函数:script_bool()等(我没用过)。
1)聚合计算与表计算
sum() 是聚合计算,是基于数据源的计算,它的参数就是数据源的字段,比如 sum([sales]),它代表把数据源的每一行的数据都对[sales]字段执行累加计算;
而widown_sum(), running_sum(), total() 都是表计算函数,表计算的特征之一是基于视图中聚合数据的二次聚合计算,因此括号中的参数必须是聚合,比如说 total( sum([sales]) )。
- 聚合计算:对数据源行级别数据的聚合
- 表计算:对视图中数据聚合结果的二次聚合
2)total(expression)
total(expression) 、 running_sum(expression)这两个表计算的参数都只有一个,就是要执行视图中数据数据的二次聚合。比如
- TOTAL(SUM([数量]))
- RUNNING_SUM(SUM([数量]))
区别在于,total()是为每个分区返回同一个结果。我们知道,表计算的逻辑是 分区+寻址,total为各个分区求和,每个分区返回同一个数值。而running_sum()则可以为每个分区的每一行返回一个数值。前者是对聚合的聚合,后者这是对聚合的移动聚合。
为了更好的理解total,可以参考一下“总计百分比”这个表计算,它的公式就是sum/total,也就是聚合除以聚合的聚合,从而计算每一行在分区中的占比;因此对于多个行数据而言,一个分区的total结果是一样的。
合计百分比 表计算 : SUM([数量]) / TOTAL(SUM([数量]))
3) running_sum(expression)递归计算
我们看一下running_sum(),同样是分区和寻址,假定分区和上面total一样,也是每个类别一个分区;寻址也是向下。但是,对于同一个分区的不同行,running_sum()返回了不同的数值,这就是它的魅力。
在统计上,这就递归运算(recursion),递归运算的结果依赖于它自己。
如果要在视图中计算随着时间增长的累计利润,或者累计会员数量,这种需求,只能通过表计算来完成。
4)window_sum(expression,[start,end] )
在手动表计算中,window_XXX函数是使用最多的,汇总计算、移动平均都是特殊情形下的窗口计算。窗口计算的重要特点是,默认有三个参数,分别代表聚合表达式、起始位置、结束位置。
- total 表计算相当于没有指定起止位置的window-sum窗口计算;
- running-sum表计算,即于从开始到当前位置的window-sum窗口计算;
- 移动平均,即制定了起止位置的的window-avg窗口计算。
完整的函数是window_sum(expression,[start,end] ),默认的起止位置用first和last代替,可以省略。
- first(),返回当前行到分区中第一行的偏移行数。
- last(),返回当前行到分区中最后一行的偏移行数。
first和last显示的是首行、尾行和相当于当前位置的偏移;如果是当前行,first和last都会返回的是0 。为了方便对比,我们和另外两个表计算 一起对比看看,
- size(),返回分区的行数;有点像total+count+分区,计算分区中行的计数。
- index(),返回分区的当前行的索引,与任何数值无关。
这四个表计算都不需要参数,完全依靠分区和寻址来控制。比如下图,index默认为表(向下),其他我们修改为区(向下),我们以类别为分区,看一下结果。 first和last正好是相对应的。
回来说window_sum(),没有起止范围的window_sum(),同一个分区情况下,结果和total()是一样的。
WINDOW_SUM(SUM([数量]),FIRST(),last()) = TOTAL(SUM([数量]))
我们写一个新的表计算,把last()改为0,绝对值0代表当前行的索引,也就是如下:
WINDOW_SUM(SUM([数量]),FIRST(), 0 )
这个的意思是说,返回分区中,从第一行到当前行的总计求和。我们看一下结果:
上面红色部分是到当前行的window_sum(),你也许会发现,这个结果,和running_sum()的结果是一样的。
从分区第一行,到当前行的总计求和(累计求和)
WINDOW_SUM(SUM([数量]),FIRST(), 0 ) = RUNNING_SUM(SUM([数量]))
换一个需求,如果我们要计算从当前行到最后一行的总计呢?那就是把first()改为0,以last结束,相当于runnig_sum()汇总+指定倒序运算。我们可以看一下对比图。
WINDOW_SUM(SUM([数量]),0,LAST())
我们看一下上面的结果,最后一行,每一行的结果,返回的是当前行到最后一行last()的总计求和。
5)previous_value(expression) 返回前一个值
还有最后一个重要的表计算函数,那就是previous_value(expression),它用来返回此计算在上一行的值,如果当前行是首行,那就返回首行数值。我们做一个demo,分别设置不同的分区。
- 以单元格为分区,previous_value(expression)返回每个单元格数值;
- 以类别为分区,previous_value(expression)返回每个分区的首行;
- 以整个表为分区,previous_value(expression)返回整个表的首行。
4.字体颜色判断
要求:对第三节表中同比数据进行颜色判断:大于0增长,小于0下降,等于0停止
实现方法:
- 创建计算字段
- 编辑颜色
5.数据信息映射给图形
方法一:设置数据格式映射数据给图形
- 点击“同比增长率”标签字段,设置格式
- 设置数字格式,自定义为:▲0.00%;▼0.00%
拓展:将0.0% ↑;-0.0% ↓;或者0.0% ;(-0.0%);粘贴到自定义格式中看看会形成怎样的表格。
方法二:给利润字段设置柱状图并用颜色区分来反应数据情况
- 将利润标记框图形设置为树状图
- 设置利润判断字段
- 将利润判断字段放在利润标记框设置为颜色,然后设置标签
- 设置轴,使柱状图出现
- 隐藏标题,查看报表
方法二:设置标记框图表类型为形状来映射数据给图形
- 复制上面工作表为复杂报表-2
- 编辑形状
- 查看样式
6.跳转
更改表计算工作表名称为“复杂报表-1”,新建工作表命名为“复杂报表-3”
要求:制作复杂报表-3为复杂报表-1的明细表(需要查看到每条订单的利润)
实现方法:创建如下所示明细表作为跳转目标工作表
- 回到工作表“复杂工作表-1”
- 编辑跳转连接
- 此时就可以查看验证了
在复杂工作表中点击黑龙江2017年1月的细分为公司的利润“357778.89”
跳转后目标工作表中数据:
7.参数的使用(数据权限设置)
参数的使用通过对数据权限的配置来学习
要求:连接权限配置表,根据权限配置表中地区经理编号字段来查看数据
实现方式:
连接权限配置表
- 创建参数
- 显示参数
- 设置筛选器
- 设置筛选器样式:
- 查看数据(东部地区经理数据编号时,只能查看到东部省份数据)
报表问题处理:此时我们发现只有对年份做多选时才能进行同比计算,而我们想要展示当年数据和当年的前一年的数据,同时在做同比计算,此处的当年指的时筛选器单选时选中的年份
实现方法:
- 复制“复杂工作表-1”命名为“复杂工作表-地区”,然后再“复杂工作表-地区”进行如下操作
- 然后新建字段“年份2”
- 在报表中用新建字段“年份2”替换“年份”
- 修改年份与前一年的排序
- 排除null值
- 显示参数筛选器
- 修改省/自治区字段为地区字段
此时就可以对此工作表进行预览了
第十章:图表制作
1.直方图(数据桶)
学习目的:用直方图展示不同下单商品个数的下单总次数
实现方法:
- 创建数据桶
- 拉去字段做表
- 修改x轴
最后样式:
2.人口金字塔图
·实际上就是成对条形图
·在同一行上对称显示和比较两个类别的统计指标,并用另一个分类区分不同的行
·人口金字塔和旋风图在图形结构和数据结构上并无区别,仅仅是使用领域不同而已
学习目的:对比一级邮寄方式与二级邮寄方式在不同数量阶段上的对比
实现方法:
- 创建计算字段“一级邮寄方式”;同样的方法创建二级邮寄方式字段
- 制作图表
- 修改一级邮寄方式的x轴问倒序
最终样式:
3.日历图
·由于人类的生产、生活活动都存在自然周的波动规律,将此类统计指标按自然周、自然月的日历顺序进行排列观察是常见需求
·Tableau中只要指定好日期时间变量,就可以将各种统计指标按照常见的日历格式加以呈现
学习目的:以日历的样式展示每一天的利润数据,亏损数据显示红色,盈利数据显示绿色,周末数据显示蓝色(除亏损数据外);
实现方式:
- 制作图表
- 修改样式
- 设置工作日颜色判断
- 设置颜色
- 最终样式展示
4.凹凸图
·通常用于在不同排名中连接相同的事物,以显示排名间的相互关系
·本质上是基于排序结果的多线图和点图的重叠组合
学习目的:实现子类别对应销售额在最近4年的变化情况
实现方法:
- 先做折线图
- 在做点图
- 合并双轴,同步轴,隐藏轴
- 显示标签
最终样式:
也可对此图形进行变换:如何查看细分下的子类别排序呢
- 复制工作表“凹凸图”命名为“凹凸图-1”,将年份字段用细分替换;
5.柱状折线图(两柱一线)
图表介绍:柱状折线图(两柱一线)此图形需要数据集进行特殊处理,而且图形有一定的局限性,因为此图形的x坐标必须为连续状态才能实现此图形,而离散状态下的数据无法实现此此图形。
实现方法:
- 加载数据原
- 加载excel文档:绘图数据1
- 加载柱状折线图sheet
- 开始制作图表:创建计算字段
- 制作图表
- 合并双轴
6.雷达图
·也称蛛网图,是将多个指标维度同时绘制在一个二维平面中进行考察和比较的工具
·将雷达图看成是成多条曲线(产品线和数值参考线)的组合,这样就可以通过绘制多线图来完成
认识数据模型:
数据透视表:
然后开始制作图表:
- 创建计算字段:路径
- 创建计算字段:弧度
- 创建计算字段:x,y
- 制作图表
- 设置标签:
同样的方式其他几个标签需要一一手动设置
最终样式:
第十一章:地图的使用方法
1.填充地图的制作
学习目的:创建“地图-地区”工作表,展示地区利润数据填充地图;
实现方法:
- 修改地理字段角色
创建”地图-省”工作表,展示省份利润数据填充地图;
创建”地图-市“工作表,展示城市利润数据:
说明:此处无法制作填充地图,由于数据源中“城市”字段中有许多市是地级市,而tableau在做填充地图时无法识别地级市,会出现太多的null值。
2.地图钻取
学习目的:按地区(填充地区)查看,下钻到省,市
- 打开“地图-地区”工作表,添加操作,选择“筛选器”
- 操作名称随便命名,原工作表选“地图-地区”,目标工作表选“地图-省”,运行操作方式选“选择”
- 添加下钻是的筛选条件
此时从工作表“地图-地区”到工作表“地图-省”的下钻就做好了
- 同样的方式制作“地图-省”到”地图-市”的下钻,而省到市的下钻筛选条件需要添加“省/自治区”字段
此时就可以区预览图表,可以从工作表“地图-地区”工作表跳转到“地图-省”;从工作表“地图-省”跳转到工作表“地图-市”了。
上述验证了工作表之间的下钻,也可以进行仪表板之间的下钻,仪表板之间的先钻请看下一章节。
第十二章:仪表板开发
1.仪表板布局(垂直、水平)
新建仪表板,命名为“超市销售数据-地区看板”使用平铺下的分层结构来布局仪表板:
- 选中平铺
- 显示仪表板,查看分层结构
- 向上述水平分层结构中拖入报表
- 继续查看分层结构:
- 制作垂直封层结构
- 继续查看分组结构
这就是垂直和水平布局的使用方法,可制作成如下仪表板:在制作过程中删除所有工作表的图例,只留筛选器。
用的比较多的就是图像,可以加载图片美化仪表板;
对象中其他功能不做过多讲解,可在制作的过程中自行拖入学习
2.设计仪表板
要求:
- 制作“超市销售数据-地区看板”、“超市销售数据-省份看板”、“超市销售数据-城市看板”三个仪表板;
- 地区看板可下钻到省份看板,省份看板可下钻到城市看板;同时省份看板与城市看板可直接返回到地区看板;
- 柱状折线图与雷达图在仪表板中只做展示,无筛选器与联动要求;
- 制作“经理编号”参数筛选器,可对数据进行权限布控;制作“年份”与“月份”单选下拉筛选器,可对数据进行筛选。
实现思路:
考虑到要对除柱状折线图与雷达图外的图表做筛选器的共用,所以除柱状折线图与雷达图外的图表要有相同的维度可以做查询,显然上述仪表盘中凹凸图与复杂报-1表不能共用年份筛选器,所以要对这两个图表进行替换;
- 替换“凹凸图”为“凹凸图-1”工作表;
- 替换“复杂报表-1”为“复杂报表-地区”工作表;
- 删除右上角其余筛选器,只留参数筛选器“经理编号“、”年份“与普通筛选器”月份“,将月份筛选器修改为单值下拉;
- 筛选器共用;此时我们应明白参数筛选器”经理编号“与”年份“是设置在”复杂报表-地区“工作表上面的;
因为参数筛选器无法在仪表板上面共用到其他工作表,因此需要转到对应工作表将参数筛选器映射的普通过滤条件共用到其他工作表中。
注:创建的参数贯穿在整个工作簿中,而参数映射的普通筛选器单独作用于工作表上,只有设置筛选器的共用才能作用于其他工作表中。
- 转到工作表”复杂报表-地区“
- 设置地区经理编号筛选器共用
- 设置年份筛选器共用
- 此时参数筛选器的共用就设置好了,回到仪表板”复杂报表-地区“,在仪表板中设置”月份筛选器“
此时就可以预览仪表板”超市销售数据-地区看板“了。
复制仪表板”超市销售数据-地区看板“分别为”超市销售数据-省份看板“与”超市销售数据-城市看板“,复制”“复杂报表-地区”分别为“复杂报表-省份”,“复杂报表-城市”;
- 复制仪表板”超市销售数据-地区看板“分别为”超市销售数据-省份看板“与”超市销售数据-城市看板“
- 复制”“复杂报表-地区”分别为“复杂报表-省份”,“复杂报表-城市”;
- 修改“复杂报表-省份”工作表
- 修改“复杂报表-城市”工作表
- 修改仪表板”超市销售数据-地区看板“
- 修改仪表板”超市销售数据-城市看板“
接下来就可以实现仪表板之间的下钻了。
从仪表板“超市销售数据-地区看板”钻取到“超市销售数据-省份看板”;在从仪表板“超市销售数据-省份看板”钻取到“超市销售数据-城市看板”;
- 仪表板“超市销售数据-地区看板”钻取到“超市销售数据-省份看板”,在“超市销售数据-地区看板”仪表板中添加操作。
- 在从仪表板“超市销售数据-省份看板”钻取到“超市销售数据-城市看板”;在“超市销售数据-省份看板”仪表板中添加操作。
- 分别在仪表板”超市销售数据-省份看板“与”超市销售数据-城市看板“中添加导航对象,使其返回到仪表板
”超市销售数据-地区看板“中
- 添加导航对象
- 设置为浮动
- 编辑导航按钮
在仪表板”超市销售数据-省份看板“与”超市销售数据-城市看板“中都设置上面导航功能。
至此整个仪表板的功能部分就设置完成了,剩下就是颜色搭配一级报表中出现的一些细节修改了。
细节问题请查看tableau培训进阶篇.twbx文档。



