Container容器为什么难?
Container是几乎所有Tableau的初学者在刚开始的时候都觉得不容易掌握的一个部分. 如果你之前有一定的使用Container的经历, 那么你一定明白我在说什么. 而如果你是第一次从BI Textbook这个网站开始学习Container, 那么其实你非常幸运, 因为你可以可以绕过非常多的坑而直接正确的学习这一部分.
现在我来回答这部分的标题, 为什么Container这个感觉不是很复杂的概念为什么难?
1. Container最难的部分就是你需要特定的操作顺序, 而这个是你靠文字很难描述的
2.官方文档对这些没有给出足够的解释, 大部分操作要依靠你的经验和试错.
3.很多课程的创建者没有给予这部分足够的重视. 我不知道是避重就轻,还是压根不会. 反正我很少看到哪个教程认真的讲解你的鼠标要怎么移才能成功放到正确的容器里
4.Tableau在Container这里有个Bug, 就是它会自动给你创建你没使用过的Container - Tiled Container
这也是为什么我在开篇就想向所有初次的学习者强调, 这并不是一个容易的Topic. 所以需要你打起精神, 认真听讲.
什么是Container?
Container就是把我们创建的不同的Worksheet, Text Object, Image等等局部的组合在一起的一个用来控制格式的东西, 我们可以把我们想要的元素拼在一起.
这些不同的Container再进一步拼成更大的Container.
我现在选一个简单的Dashboard来展示一下几个简单的Container是如何组成一个大的Dashboard的.
在下边的截图里, 我们可以看到Dashbaord Title Customer Analaysis的外围有一条红线. 这条红线勾勒出的整个Dashboard最外围的这个Container的轮廓.
在Customer Analysis文字的下边, 我们可以看到一个黑色的轮廓. 这是向内更小的一个Container的轮廓.
再往里边, 我们可以看到一个黄色的边缘. 这是一个更小的Container.
在黄色Container内部, 我们可以看到并排的两个图表再加上一个红色圈出来的Container. 我们的Filter都被包裹在这个最小的Container里.
从这里你就可以看出, Container其实就是套娃, 一个套一个, 大的套小的.
Horizontal and Vertical Container 水平和垂直容器
水平容器和垂直容器是Objects选项下边你唯一可选的两种Container.
水平容器的含义就是在这个容器里的所有元素都是水平排列的. 每当你试图往这个容器里添加新的元素时, 要么是在左边, 要么是在右边, 你没法添加到上边或者是下边.
水平容器则恰恰相反, 你只能在已经添加元素的上边和下边进行添加. 而不能是左边或者右边.
在下边的动图当中, 我简单的展示了一个Horizontal Container是如何添加元素的. 当添加后边的worksheet时, 我只能在他们的右边添加.
Container让你懵逼知识点1: Horizontal变Vertical
当我们从左侧拖一个Horizontal Container到右侧时, 我们想当然的认为这个Container是Horizontal的. 但是Tableau狠狠的打了我的脸. 请看下图
在动图当中, 我首先拖了一个Horizontal Container过去. 之后, 我在这个Horizontal Container内部加入了一个worksheet. 截止到这时, 你会发现我们的这个Container还是Horizontal的.
请注意, 当我添加第二个Worksheet的时候, Tableau不仅让我可以添加在左侧, 还可以让我添加在下侧. 当我添加在下侧之后, 整个Container从Horizontal变成了Vertical
到了这里就涉及到我们的第一个知识点: Tableau的Container在只有一个元素的时候, 是没有定型的, 只有加入第二个元素, Tableau才会最终确定是Horizontal还是Vertical. 一旦确定之后, 添加第三个元素就只会是水平或者是垂直, 而不会出现像第二个worksheet的时候, 我们还能选上还是左.
Tiled and Floating Container 平铺和浮动
Tiled和Floating是Container另一个重要的特性. Tile这个词是瓷砖的意思. 而Tiled就是把我们的Container像瓷砖一样在地上铺的整整齐齐的. Floating的意思就是漂浮的, 那么漂浮的自然就会在地面的上方.
当我们的Dashboard Size确定之后, 我们的整个版面大小也就确定了. 对于Tiled来说, 你能铺瓷砖的面积也就这么大了. 接下来我就用动图来展示一下这两者添加时的区别.
当Tiled Container添加到右侧时, 你会发现直接铺满了整个页面, 这就是如果只有一个Container, 那就平铺整个Dashboard. 而Floating则不同, 它仿佛悬浮在整个Dashboard的上方.
Container让你懵逼知识点2: 既非Horizontal也非Vertical的Tiled Container
Tableau有一个非常诡异的特性, 它会无中生有Container. 也就是虽然你没有创建, 但是Tableau会帮你创建一个叫做Tiled的Container. 它既非Horizontal也非Vertical. 而是第三种Container.
在这个Container里你会发现你一个更内层的Container. 而那个Container才是你一开始想加进去的Container.
在下边的这个动图里, 你就会发现, 当我把一个Tiled Vertical Container从左侧拖到右侧的时候. 在Item Hierarchy里就莫名奇妙的在Vertical Container的上边出现了额外一层Container叫做Tiled. 但是你在Objects下边找不到这个叫做Tiled的Container的痕迹.
该如何理解这个特殊的Tiled Container?
如果我们点击这个最外层的Tiled Container, 你会发现它的Outer Padding是8. 而前边我们讲过一般默认的Padding是4, 就说明这不是一个普通的Container.
这里的Tiled Container是Tableau给整个Dashboard添加的一个最外层的Container. 你可以把它记成某种默认设置而不必去太纠结这个到底是什么意思.
平铺是终点, 浮动是捷径, 切记 切记!
在一个正式的Tableau Dashboard里, 理论上来讲, 所有的元素都应该是平铺的, 也就是没有哪个Container是浮动的. 这其中一个非常重要的原因就是等比例缩放的问题.
当整个Dashboard内所有元素都处于平铺状态的时候. 假设我们有五个container横向排列, 宽度是1000. 那么Tableau会自动将这个1000像素的宽度分配给这五个container. 当我们将在这个宽度调整到1200的时候, Tableau会相对应的调整每个Container以及内部的元素的尺寸来等比例扩大. 但是Floating就不是了. 我将接下来用动图来展示使用Floating Container可能出现的问题.
在下边这个动图当中. 红框内是一个Floating Container. 而黑框是一个Tiled Container. 请注意观察当我改变Dashboard尺寸的时候, 这两个之间相对位置的变化.
在上边的动图里, 你可以非常容易观察到, Floating和Tiled Container的缩放比例是不同步的. 那么试想如果在一开始你使用了很多Floating Container, 而后突然被告知, 需要增大Dashboard的尺寸. 你难道要手动更改每一个Floating Container的尺寸吗?
那这个时候, 你可能会问, Floating Container有什么用呢?
这就涉及到我们标题中的第二句话了: 浮动是捷径. 在把每个Tile也就是瓷砖镶嵌到地面上之前, 我们需要浮动容器来帮我们组装. 由于浮动容器这种灵活的特性, 我们可以把它当作我们组装各个元素的车间, 而最后一步才是把整个组装好的浮动容器镶嵌到地面上.
在一开始直接尝试所有Container都使用Tiled来创建Dashboard的方法都会让整个过程变得非常痛苦. 你需要包含的元素越多 越痛苦.
因此所有的元素一定要在Floating Container里添加好, 最后将整个Floating Container转化成一个Tiled Container才是最快速的方法. 记住这句话将节省你几十个小时的宝贵时间
Tiled和Floating的切换 - Shift快捷键
Shift快捷键在Container的这个部分有着非常重要的作用, 因此我必须在这里单独讲一下.
1. Tiled变Floating
当你按住Shift, 然后从Objects下边添加一个Tiled Container的时候, 这个Tiled Container就会变成一个Floating Container, 而你松开Shift, 又会变成Tiled Container.
当动图中出现黄点时, 就意味着我按着Shift.
如果你在Objects下边, 一开始选择的Floating,然后再拖拽一个Horizontal Container, 那么你就不需要按住Shift.
2. Floating变Tiled
当我们已经拥有了一个Floating Container, 而试图向其中添加新的元素时, 我们这时候想要添加的元素其实是Tiled. 换句话说, 我们想要的是用图表把这个Floating Container装满而不是一个floating container悬浮在另一个Floating Containter上边.
接下来我们来认真观察我们是如何让一个floating的图表变成tiled, 然后镶嵌进另一个floating container里的.
第一步, 我添加了一个floating container到右侧, 然后我添加了一个浅灰色的背景色, 让我们可以非常明显的看到这个floating container的位置.
第二步. 我首先在最下方选择Tiled⚠️, 我们先选的Tiled, 然后移动的Sheet NP Bars(2). 当我移动这个Sheet到右侧的时候, 你可以看到这个Sheet就自动填充了我们前边创建的这个floating container. 也就是说我们当前这个Sheet的状态是tiled.
接下来我将底部的选项从Tiled 更改为Floating, 然后再重复相同的操作, 你会发现这个Sheet会一直悬浮在Floating Container的上方. 那么我再次按住Shift, 将当前NP Bar(2) 这个Sheet的状态切换到Tiled. 这个时候你就会发现它就可以变成被镶嵌的或者说Tiled的状态.
当屏幕上显示Shift时, 意味着我此时按住了键盘上的Shift. 在这里慢下来, 去体会Tiled和Floating状态的切换.