本文作者:
Anna Prosvetova
![1476e6b9a8ffbaeb1f729445cd771f54.png](https://i-blog.csdnimg.cn/blog_migrate/74947cd5f342ac4bd0072046686de677.png)
我想使自己的工具提示动态化,以显示每一集中的死亡总数,例如:
在第 Z 季的第 Y 集中有 1 人死亡(如果当前集中只有 1 人死亡) 或者 在第 Z 季的第 Y 集中有 X 人死亡(如果当前集中有多人死亡) ▼ 首先,我发现工具提示文本的某些部分会根据数量而改变。它们在下面以粗体突出显示: 在第 Z 季的 Y 集中有 1 人死亡 或者 在第 Z 季的 Y 集中有 X 人死亡 ▼ 接下来,我写了一个计算字段以实现根据实际数据来修改文本显示的内容。我将其命名为动态工具提示文本: IF SUM([Number of Deaths]) = 1 THEN “There was 1 death in episode ” + ATTR([Episode]) + “, season ” + ATTR([Season]) +”.” ELSEIF SUM([Number of Deaths]) > 1 THEN “There were ” + STR(SUM([Number of Deaths])) + ” deaths in episode ” + ATTR([Episode]) + “, season ” + ATTR([Season]) +”.” ELSE ” “ END在此字段中需要考虑以下几点:
▼如果 IF 表达式至少包含一个汇总字段(在这种情况下为 SUM([死亡人数])),则计算中的所有字段也必须是汇总字段。否则,您将收到一条错误消息:“无法混合汇总和非汇总比较,或者无法生成 'IF' 表达式”。当我第一次按照下面所示的代码运行时遇到了此错误:
IF SUM([Number of Deaths]) = 1 THEN “There was 1 death in episode ” + [Episode] + “, season ” + [Season] +”.”
ELSEIF SUM([Number of Deaths]) > 1 THEN “There were ” + STR(SUM([Number of Deaths])) + ” deaths in episode ” + [Episode] + “, season ” + [Season] +”.”
ELSE ” “
END
注意到前后的区别了吗?在我第一次写计算字段时,[Episode] 和 [Season] 字段没有像在最终版本中那样的应用属性(ATTR)功能。在这种情况下,[Episode] 和 [Season] 是字符串类型,因此 Tableau 认为它们是非聚合字段,与 SUM([死亡人数])这种聚合字段不同 。 您可以通过应用 ATTR()函数来解决此问题,从而将非聚合值转换为聚合值。让我们再看看可以使用的版本: IF SUM([Number of Deaths]) = 1 THEN “There was 1 death in episode ” + ATTR([Episode]) + “, season ” + ATTR([Season]) +”.” ELSEIF SUM([Number of Deaths]) > 1 THEN “There were ” + STR(SUM([Number of Deaths])) + ” deaths in episode ” + ATTR([Episode]) + “, season ” + ATTR([Season]) +”.” ELSE ” “ END▼请记住,此计算旨在创建要在工具提示中显示的文本字符串。因此,要在此文本字符串中显示数字值,应将其数据类型从数字(整数或十进制,取决于您的数据)更改为字符串。为此,只需使用 STR()函数包装您的度量值字段,该函数将从您提供的数值返回一个字符串。现在,我们已将所有字段转换为字符串数据类型,Tableau 将能够连接句子的所有部分。在下面的计算中查看其工作原理:
IF SUM([Number of Deaths]) = 1 THEN “There was 1 death in episode ” + ATTR([Episode]) + “, season ” + ATTR([Season]) +”.”
ELSEIF SUM([Number of Deaths]) > 1 THEN “There were ” + STR(SUM([Number of Deaths])) + ” deaths in episode ” + ATTR([Episode]) + “, season ” + ATTR([Season]) +”.”
ELSE ” “
END
使用详细级别表达式(LOD)在工具提示中显示正确的总数 我的仪表板的主要部分为条形图,其中使用“总计百分比”表计算将所有条形图设置为相同大小。 ➤ 复制下方链接至浏览器,了解有关为什么选择这种类型的图表以及如何制作的更多信息。 https://www.thedataschool.co.uk/anna-prosvetova/proportional-brushing-highlighting-a-segment-of-a-chart-while-keeping-the-total-in-view/ 我还应用了按比例高亮技术,通过设定动作以突出显示角色死亡的原因相似的情节。{FIXED [Episode],[Season]: SUM([Number of Deaths])}
现在,我们可以在先前创建的计算字段中引入此计算,如下所示:
IF SUM([Total deaths for tooltip]) = 1 THEN “There was ” + STR(SUM([Total deaths for tooltip])) + ” death in episode ” + ATTR([Episode]) + “, season ” + ATTR([Season]) +”.” ELSEIF SUM([Total deaths for tooltip]) > 1 THEN “There were ” + STR(SUM([Total deaths for tooltip])) + ” deaths in episode ” + ATTR([Episode]) + “, season ” + ATTR([Season]) +”.” ELSE ” “ END 这样,您就可以在 Viz 中制作动态的工具提示啦, 希望对您有所帮助! 升级试用 Tableau 2019.4复制链接至浏览器,即可免费试用 Tableau 最新版本。
https://www.tableau.com/zh-cn/products/desktop/download?utm_campaign_id=2019184&utm_campaign=Prospecting-CORE-ALL-ALL-ALL-ALL&utm_medium=Social&utm_source=WeChat&utm_language=CN&utm_country=GrCHINA-CN
欢迎留言如果小伙伴们对于 Tableau 产品有其他问题或需求,欢迎给我们留言~~
![9e1dda4a8ebe84a38112b9e863fe2516.gif](https://i-blog.csdnimg.cn/blog_migrate/d9d2889b6977708cfd2abb677d5f3346.gif)
Tableau 中国官方微信定期为您推送最新行业趋势、热点资讯、精彩活动等信息。立即订阅,官方信息一手掌控,更多精彩,更多新鲜,敬请期待!
![961f9929113fd57bdf16e6c67c26eb64.png](https://i-blog.csdnimg.cn/blog_migrate/9b6b438cf7bd509b39b5dbe94f1367ba.png)
![26ff51d29251e786f5b383b816b6d62e.gif](https://i-blog.csdnimg.cn/blog_migrate/bfbe6f54b9fb1c3f625d61f6f6112a25.gif)