工作簿优化器
工作簿优化器是一种工具,可识别工作簿是否遵循某些性能最佳实践。这些指南仅限于可以从工作簿的元数据中解析并由规则引擎算法评估的内容。并非所有建议都适用于或适合每个工作簿。优化器无法捕捉到性能的许多方面,其中一些可以轻松获胜。有关详细信息,请参阅简化您的工作簿和白皮书设计高效的生产工作簿。
运行工作簿优化器
在 Tableau Desktop 中
工作簿优化器可在“服务器”菜单或发布对话框中找到。
- 从“服务器”菜单中,选择“运行优化器”。
- 将根据指南自动评估工作簿,结果将显示为以下三个类别之一:“采取行动”、“需要审查”或“通过”(或者“通过并忽略”)。
- 您可能会看到少于三个类别。如果没有指南属于某个类别,则不会显示。
- 展开每个类别以查看指南。您还可以扩展每条指南,以获取有关推荐理由的详细信息。有些具有特定于您的工作簿的其他信息。
- 您可以选择解决任何或不解决任何准则。由于运行优化器是发布过程中的一个自愿步骤,它不会阻止您发布。
- 若要关闭对话框并返回工作簿,请单击“关闭”。
- 若要关闭对话框并返回到(或打开)发布对话框,请单击“发布”。
在 Web 制作过程中
工作簿优化器可从 Web 制作中的发布菜单和发布对话框中获得。
优化器类别
优化器将其指导方针分为三类:采取行动、需要审查和通过。
采取行动表示更新工作簿以遵循这些最佳实践对工作簿的功能影响最小甚至没有影响。可能没有理由避免进行这些更改。
需要审查表明遵循这些最佳实践可能涉及以更复杂的方式修改工作簿,例如重组数据源或简化仪表板。
- 对于这些指导方针,请运用您的最佳判断来确定哪些是可能的或可行的。
- 有些建议可能需要付出很多努力才能获得最小的性能提升,而且不值得。
- 使用性能记录器获取性能基准可能很有用。
- 有些可能是您做出的深思熟虑的选择。
作为作者,您是使工作簿尽可能高效的最终权威。请记住,为了有效地交付内容,应该打破一些最佳实践。始终权衡工作簿的目标与改进性能的更改。
通过表示符合指导方针并且工作簿已经遵循该领域的最佳实践。但请记住,优化器没有捕捉到性能的许多方面。如果工作簿的任何指导方针被忽略,此类别将被重命名为“通过并忽略”。
忽略指导方针
指导方针并不总是适用于您的情况。也许您正在发布模板工作簿供他人使用,并且需要保留未使用的字段和数据源。您不希望优化器继续通知您这些指导方针。
可以忽略工作簿的指导方针。
- 从特定的指导方针中,单击“忽略”按钮。
- 该指导方针被停用,并移至“通过并忽略”部分。即使您再次运行优化器,该指导方针也不会出现在“采取行动”或“需要审查”部分。
- 若要继续评估该指导方针,请在“通过和忽略”部分找到它所在的行,然后再次单击“忽略”按钮。
- 优化器再次运行,并对该指导方针进行评估。每次优化器运行时,都会继续检查它。
自动修复指导方针
工作簿优化器中的一些建议可以在没有用户输入的情况下实现。对于这些指导方针,有一个按钮可以自动修复规则。如果该按钮未出现,您必须手动解决问题。
从特定的指导方针中,单击“自动修复”按钮。
- 建议的操作(例如关闭一个未使用的数据源)在后台执行,指导方针会移至“通过”部分。
- 如果自动修复由于任何原因失败,您将收到通知,并提示您手动解决问题。
- 如果按钮不可用,则不能自动修复指导方针,必须手动解决。
指导方针
每个指导方针都包含一个“考虑”声明,该声明提出了解决性能影响的潜在方式。这些建议必然是普遍的,并不一定适用于所有情况。这些建议只是一个起点;请始终根据您的环境和工作簿的目标来制定您的决策。
注意:并非所有建议都可以在浏览器中执行,并可能需要在 Tableau Desktop 中进行编辑。
通过字母导航到指导方针:A。B。C。D。E。F。G。H。I。J。K。L。M。N。O。P。Q。R。S。T。U。V。W。X。Y。Z
计算长度
从工作簿优化器中
示例输出消息:计算“我的计算”的长度为 600 个字符
运算复杂计算的结果可能会影响性能。
考虑将计算拆分并将任何可能的内容移至数据库,或使用 Tableau Prep 在分析之前创建计算。
其他信息
复杂的长计算可采用单一或嵌套计算方式编写(某些组成部分编写为独立计算并在较大的计算中使用)。使用嵌套组件构建计算可能会使故障排除和维护变得更容易,但它可能会增加复杂性并需要额外的处理。如果可能,将这些组件推回数据源可能有助于提高性能。
计算中的注释计入长度,因此此指导方针可能由长注释而不是长而复杂的计算触发。
计算使用多个数据源
从工作簿优化器中
示例输出消息:数据源供应链包括 17 个使用来自另一个数据源的字段的计算。
当计算使用来自多个数据源的字段时,Tableau 无法使用任何优化,必须在本地对计算进行运算。
考虑使用 Tableau Prep 创建计算以及使用数据提取。
其他信息
通过将跨数据库计算移至数据层,可以在用户请求仪表板之前执行处理。有关详细信息,请参见联接数据 (Prep) 和创建详细级别和排名计算。
在某些情况下,参数可能会触发此指导方针。如果指示计算不使用多个数据源,请检查它是否具有参数以及该参数是否可以简化。
仪表板大小不固定
从工作簿优化器中
示例输出消息:仪表板“第三季度分析”不是固定大小。
可以缓存固定大小的仪表板,因为它们的大小是可预测的。使用仪表板大小自动调整意味着结果取决于用户的屏幕,因此必须每次都渲染仪表板。更频繁地渲染仪表板会带来性能损失。
请考虑使用固定的仪表板大小。
其他信息
尽管响应式元素是 Web 设计中的最佳实践,但让您的仪表板调整大小可能会扭曲内容的布局以及重新渲染带来的性能影响。对于 Tableau 可视化项,最好使用固定仪表板大小,并使用特定于设备的仪表板来支持不同的设备和屏幕大小。
筛选器使用条件逻辑
从工作簿优化器中
示例输出消息:筛选器“示例类型”使用条件逻辑。
维度筛选可以通过多种方式完成,例如对值列表执行、通过通配符匹配方式,或者使用条件逻辑。条件逻辑可能很慢。
请考虑将筛选器更改为不使用条件逻辑。如有必要,请确保首先对最常见的结果进行逻辑测试,并尽可能使用 ELSEIF 或 CASE。
其他信息
有关筛选的详细信息,请参见对数据进行筛选。
筛选器使用“仅相关值”
从工作簿优化器中
示例输出消息:筛选器“示例类型”使用“仅相关值”。
当筛选器使用“仅相关值”时,交互式筛选器控件仅显示在给定视图当前状态的情况下适用的选项。每次对其他筛选器进行更改时,都必须重新查询要显示的值列表,从而会影响性能。
请考虑改用仪表板筛选动作。如果最终用户的利益足够有价值,应该使用此功能,请考虑提取数据并优化数据提取。
其他信息
在某些情况下,需要使用“仅相关值”以避免繁杂的筛选器列表。在这种情况下不要使用交互式筛选器,而是尝试使用动作筛选器。例如,假设有一个仪表板,它具有针对“Category”(类别)、“Sub-Category”(子类)和“Product ID”(产品 ID)的级联筛选器,其中“Product ID”(产品 ID)设置为显示“仅相关值”。取消该限制将显着扩大产品清单。您可以构建简单的可视化项(例如“Category”(类别)和“Sub-Category”(子类)的条形图)并将其用作筛选器,而不是使用筛选器。用户单击一个条形,动作筛选器将应用于仪表板上的其余可视化项。有关详细信息,请参见仪表板动作。
实时数据连接
从工作簿优化器中
示例输出消息:数据源“供应链”不是数据提取。
Tableau 数据提取旨在尽可能高效地用于分析。由于数据源的原因,使用数据提取是提高性能的最简单方法之一。数据提取还具有许多用于优化的原生功能。
请考虑提取数据源。
其他信息
在某些情况下,进行数据提取可能会给 Tableau Server 或 Tableau 站点的资源带来不必要的压力。与您的 Tableau 管理员一起确定最佳行动方案。
白皮书设计高效的工作簿包含有关数据提取以及如何使用它们来提高性能的大量信息。(您可能需要登录才能访问该白皮书。)
数据源中的多个连接
从工作簿优化器中
示例输出消息:数据源“供应链”使用多个数据连接。
不能在本地运算包含多个连接的数据源。
考虑在 Tableau Prep 中合并数据源并使用数据提取进行分析。
其他信息
有关详细信息,请参见联接数据 (Prep)。
嵌套计算
从工作簿优化器中
示例输出消息:计算“我的计算”引用另一个计算。
嵌套计算会增加复杂性和额外的处理,尤其是在使用 IF 语句和其他性能密集型函数的情况下。
考虑将计算推送到数据源或在数据提取中实现它们。
其他信息
对于不在可视化项本身中但被可视化项中的计算引用的计算,可能会触发此规则。例如,假设有四个字段:
- 获得的点数(数据源中的字段)
- 测验分数 =
[Points earned]*10
- 曲线等级 =
[Quiz score]*1.05
- 字母等级 =
IF [Curved grade] >= 90 THEN "A" ELSEIF [ Curved grade] >= 80 THEN "B" ELSEIF [Curved grade] >=70 THEN "C" ELSEIF [Curved grade] >=60 THEN "D" ELSE "F" END
测验分数是非嵌套计算,仅引用字段。曲线等级和字母等级都是嵌套计算,因为它们包含对其他计算的引用。即使在可视化项中仅使用字母等级,曲线等级也会触发嵌套计算规则,因为它在字母等级中使用。
有关在数据提取中实现计算(立即运算计算)的详细信息,请参见在数据提取中实现计算。
有关在 Tableau Prep 中构建计算的详细信息,请参见 Tableau Prep 中的计算。
未实现的计算
从工作簿优化器中
示例输出消息:数据源“供应链”尚未预运算。
对计算结果进行运算可能会影响性能。
考虑尽可能将计算推送到数据源。如果使用数据提取,实现计算以对其结果进行预运算。
其他信息
对数据提取或后端数据源中的数据和计算进行预运算。通过将此附加处理移至数据层,该处理甚至在用户请求仪表板之前就已完成。
提取数据通常会提高性能,尽管在数据新鲜度和某些功能方面存在折衷。有关数据提取选项的详细信息,请参见提取数据;有关实现计算的详细信息,请参见在数据提取中实现计算。
提取数据:右键单击“数据”窗格顶部的数据源名称,并选择“提取数据”。在配置对话框中,选择“立即运算计算”。
数据源数量
从工作簿优化器中
示例输出消息:工作簿包含 17 个数据源。
每个数据源都会影响 Tableau 加载和呈现工作簿所花费的时间。
如果可能,请考虑合并数据源,尤其是在粒度级别相同或它们支持相同分析时。
其他信息
有关合并数据源的详细信息,请参见关联您的数据,或考虑使用 Tableau Prep。
但是,要小心数据源的过度合并。当每种类型的分析都建立在精心设计的数据源之上时,工作簿的性能最佳。如果很难合并您的数据源,这可能表明分析应该分成多个工作簿,每个工作簿都有更有针对性的用途。
若要将分析拆分到多个工作簿,请尝试以下方法之一:
- 保存工作簿的副本,并从每个副本中删除不必要的工作表、仪表板和数据源。有关详细信息,请参见“简化您的工作簿”。
- 将特定工作表复制到一个新工作簿中。这可能更有效,因为将仪表板复制到新工作簿中只会保留该仪表板所需的内容。但是,并非所有格式设置选项都会被传输。有关详细信息,请参见在工作簿之间复制信息。
筛选器数量
从工作簿优化器中
示例输出消息:工作表“教室分布”包含 17 个筛选器。
视图上的过多筛选器会创建更复杂的查询。
考虑减少筛选器的数量并尽可能使用筛选动作。并非所有类型和格式的筛选器在性能方面都是相同的,因此请考虑优化必要的筛选器。
其他信息
设计高效的生产工作簿白皮书有一整节内容更详细介绍了筛选器。简单来说:
- 减少筛选器的总体数量
- 应用于多个工作表的筛选器每次更改都会触发多个查询
- 限制使用“仅显示相关值”。如果需要,使用数据提取有助于优化此功能。
- 避免高基数包含/排除筛选器
- 当用户与筛选器交互时,使用“应用”按钮防止多次刷新
- 筛选视图中存在的字段
- 使用连续日期筛选器而不是离散日期筛选器
- 上下文筛选器不应纯粹用于提高性能
筛选动作是引导用户通过仪表板的有效方式。有关详细信息,请参见筛选动作。
布局容器的数量
从工作簿优化器中
示例输出消息:仪表板“第三季度分析”包含 42 个布局容器。
布局容器会使仪表板渲染复杂化。
考虑移除不必要的布局容器并简化仪表板设计。
其他信息
有关布局容器和“布局”窗格的详细信息,请参见使用布局容器组合项目。
LOD 计算数量
从工作簿优化器中
示例输出消息:工作簿包含 42 个 LOD 计算。
运算复杂计算的结果可能会影响性能。通常,实时使用 LOD 来解决可以在分析之前处理的数据源中的粒度问题。
考虑为分析定制数据源,以避免需要尽可能多的 LOD。
其他信息
详细级别计算是强大的工具,但开销很高。确保仅在必要时使用它们。
生产数据库旨在处理大量查询负载,并且是将处理移出 Tableau 的绝佳选择。FIXED LOD 计算有时可以由数据库执行。Tableau Prep 也支持 FIXED LOD 计算。有关详细信息,请参见创建详细级别和排名计算。
仪表板中的视图数量
从工作簿优化器中
示例输出消息:仪表板“第三季度分析”包含 17 个视图
仪表板必须先加载所有元素,然后才能显示。仪表板包含的视图越多,其加载所需的时间就越长。尽管它通常会涉及重新设计,但减少仪表板中的视图数量通常是提高其效率的最佳方式。
考虑通过减少视图、筛选器和其他元素的数量来简化仪表板,使其尽可能有效和简单。从可立即移除的任何内容开始。有关减少仪表板混乱情况的其他方法,请参见“简化您的工作簿”
其他信息
如果需要进行更实质性的重新设计,请记住并非所有视图都会对性能产生同等影响。专注于标记、筛选器或其他复杂性最多的工作表。一个好的策略可以是将初始仪表板限制为摘要信息,并且仅在用户请求时才提供更多详细信息。这种引导式向下钻取有许多策略,其中包括:
- 使用动作筛选器。有关详细信息,请参见筛选动作。
- 使用带有显示/隐藏按钮的布局容器隐藏容器中的详细视图。有关详细信息,请参见通过单击按钮显示和隐藏对象。
- 将仪表板分成多个仪表板并使用导航按钮。有关详细信息,请参见导航和下载对象的详细选项
工作簿的工作表数量
从工作簿优化器中
示例输出消息:工作簿包含 42 个可见工作表
工作簿的整体大小会影响处理和显示所需的时间。必须先加载所有可见工作表,然后 Tableau 才能显示工作簿或视图。减少工作表数量有助于加快加载时间。
考虑通过关闭不需要的工作表、隐藏仪表板中使用的工作表或将分析拆分到多个工作簿中来减少工作簿中的工作表数量。
其他信息
删除分析不需要的工作表:右键单击沿工作簿底部排列的工作表标签,并选择“删除”。
隐藏正在使用的工作表:在仪表板或故事中使用的工作表无法删除,但可以隐藏。有关详细信息,请参见管理仪表板和故事中的工作表。
- 要隐藏仪表板的所有工作表:右键单击工作簿底部的仪表板标签,并选择“隐藏所有工作表”。
- 隐藏特定工作表:右键单击工作簿底部的工作表标签,并选择“隐藏”。
如果需要所有工作表,请决定是否可以将分析拆分到多个工作簿中,每个工作簿都有更有针对性的用途。
- 保存工作簿的副本,并从每个副本中删除不必要的工作表、仪表板和数据源。有关详细信息,请参见“简化您的工作簿”。
- 将特定工作表复制到一个新工作簿中。这可能更有效,因为将仪表板复制到新工作簿中只会保留该仪表板所需的内容。但是,并非所有格式设置选项都会被传输。有关详细信息,请参见在工作簿之间复制信息。
未使用的数据源
从工作簿优化器中
示例输出消息:工作簿中未使用数据源“供应链”。
每个数据源都会影响 Tableau 加载和呈现工作簿所花费的时间。
考虑关闭未使用的数据源。
其他信息
如果没有使用任何数据源,请关闭它们:右键单击“数据”窗格顶部的数据源名称,并选择“关闭”。
未使用的字段
从工作簿优化器中
示例输出消息:数据源“供应链”包含 42 个未使用的字段。
隐藏未使用的字段将防止它们被不必要地查询,并减少数据提取的大小。
考虑隐藏任何未使用的字段,无论数据源是否为数据提取。
其他信息
隐藏未使用的字段
- 在 Tableau Desktop 中:打开“数据”窗格顶部的下拉菜单,并选择“隐藏所有未使用的字段”。
- 在 Web 制作中:右键单击未使用的字段,并选择“隐藏”。无法在 Web 制作过程中批量隐藏未使用的字段。如果禁止单独隐藏字段,请考虑在 Tableau Desktop 中进行编辑,而不是在浏览器中工作。
使用数据混合
从工作簿优化器中
示例输出消息:工作表“教室分布”使用数据混合。
数据混合性能由链接字段中唯一成员的数量驱动。
尽可能考虑使用关系。如果需要混合,请尝试使用低关联基数链接字段。
其他信息
有几种方法可以合并来自多个来源的数据。数据混合将两个单独的查询发送到两个单独的数据源,并将结果一起显示在可视化项中。这些查询位于链接字段级别,结果在 Tableau 的内存中合并。大型查询结果需要更多处理才能生成最终可视化项。
提示:如果您未使用数据混合但工作簿优化器未通过此规则,请检查工作簿是否使用跨数据源筛选。跨数据源筛选会遇到与字段关联基数相关的类似性能问题。
使用日期计算
从工作簿优化器中
示例输出消息:数据源“供应链”包含 17 个日期计算。
日期逻辑可能很复杂。最大限度地减少您必须在 Tableau 中进行的日期计算和转换量。
考虑在其他方法之前使用 DATEPARSE 和 MAKEDATE,并尽可能尝试使用 DATEDIFF() 等内置函数。如果按日期筛选,请使用相对日期筛选器或连续日期筛选器,而不是离散筛选器。
其他信息
在 Tableau 中运行计算会对性能产生重大影响,尤其是日期函数。考虑采用数据提取并实现计算,或将计算推送到您的数据源。有关在 Tableau Prep 中构建计算的详细信息,请参见 在 Tableau Prep 中创建计算。
注意:如果日期计算嵌套在另一个计算中,优化器将标记嵌套日期计算,即使父计算是可视化项中使用的字段。
使用分组
从工作簿优化器中
示例输出消息:数据源“供应链”使用 17 个分组字段
Tableau 的原生分组功能会加载字段的整个域,这可能会对性能产生影响。
考虑将计算字段与 CASE 语句或集(而不是组)一起使用。
其他信息
在为设计高效的工作簿白皮书执行的测试中,使用 CASE 和集进行分组的性能优于原生分组功能。
CASE 函数可用于创建组。想象一个场景,其中数据涉及一副纸牌。有一个纸牌值字段(2–10,J,Q,K,A),但分析应该将人头牌与数字牌进行比较。进行分组的 case 语句可能是
CASE [Value]
WHEN "J" THEN "Face card"
WHEN "Q" THEN "Face card"
WHEN "K" THEN "Face card"
ELSE "Number card"
END