tableau 集动作_关于 Tableau 中动态工具提示可视化的建议和技巧,赶快收藏起来!...

8b909d321354769250be7e5005bab7f4.gif

本文作者:

Anna Prosvetova

1476e6b9a8ffbaeb1f729445cd771f54.png 在这篇文章中,我讨论了解决创建动态工具提示时出现的常见问题:如何连接不同的数据类型、如何在 IF 语句中混合汇总字段和非汇总字段以及使用详细级别表达式。 我们参加了 DS16 的“仪表板周”挑战赛,并与 Tim Biles 编写的绝命毒师 API 一起工作。我们只用了 3 个小时就创建了一个仪表板,由于我还没有看过这部剧,所以我决定以不需要大量背景知识的角度去分析剧中角色死亡的原因。 对于我的仪表板,我想确保工具提示显示每一集和每一季中的死亡总数。 这并不像我预期的那么容易,但是我在此过程中学到了一些新的技巧。

032dbc3b205cf9009aeae6b4d7fe9166.gif

➤  复制下方链接至浏览器,即可查看此Viz: https://public.tableau.com/profile/anna.prosvetova#!/vizhome/Breaking_bad_final/Breakingbaddashboard 在工具提示中组合不同的数据类型

我想使自己的工具提示动态化,以显示每一集中的死亡总数,例如:

在第 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/ 我还应用了按比例高亮技术,通过设定动作以突出显示角色死亡的原因相似的情节。

9c96b723ebf0528286c9c5c241619521.gif

一旦设置集动作后,我将面临下一个工具提示挑战。 当用户选择死亡原因时,工具提示将显示每一集中对应每个死亡原因的死亡人数(在条形图以对应的比例高亮来表示),而不再是每一集的死亡总人数。 由于我之前创建的计算字段是根据一个还是多个死亡人数而显示了不同的文本,这种技巧在特定情况下会失效: 在一个条形图中有两部分组成(即两种死亡原因),其中一个部分的死亡人数等于 1,另一部分的人数等于 1 或更高。 由于计算字段只是查看条形图突出显示部分的死亡人数,而不是总数,因此在文本显示的时候会出错。

c8c624fb8be7efa9d4e548a5a4bcff3c.gif

要解决此问题,我使用了详细级别表达式,用于忽略集动作而产生的歧义,以确保我的工具提示显示每一集的死亡人数总数。 当我需要确定每一集和每一季的死亡人数总数时,我使用以下公式创建了一个新的计算字段,称为工具提示死亡人数总数:

{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

Tableau 中国官方微信定期为您推送最新行业趋势、热点资讯、精彩活动等信息。立即订阅,官方信息一手掌控,更多精彩,更多新鲜,敬请期待!

c190df577c9cf812d5f51873adfb467c.gif

好看点一下 大家都知道 961f9929113fd57bdf16e6c67c26eb64.png 26ff51d29251e786f5b383b816b6d62e.gif 点击 “阅读原文” ,下载最新版 Tableau!
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值