我有两个字段: date和new patients。我需要计算患者的累积总和。使用表计算来运行total可以完成这项工作,但会阻止我在分析中使用预测和集群。如果日期小于图表维度中使用的日期,是否可以创建一个计算字段来计算患者总数?
发布于 2020-06-13 15:36:15
是否保留累计总和,但不显示用于计算该总和的日期?如果是这样,请查看这篇文章,其中包含一个如何使用filter dates but maintain the running sum in Tableau的示例。
发布于 2020-06-13 23:59:53
以下是两种方法,这两种方法都涉及到编辑数据源的物理层
通过编写自定义SQL
Andy Granowitz写了一个清晰的example,用SQL语言展示了这两种方法。(我将他的SQL复制到这个答案的底部,以防该链接消失,但建议阅读他的帖子以获得更好的解释。)
在这种情况下,我认为自连接更容易一些,因为您不必编写任何SQL,但在更复杂的情况下,窗口查询方法将为您提供更大的灵活性。如果您有非常大的数据集,窗口查询可能会更有效。请注意,有些数据库可能还不支持窗口查询,但大多数都支持。如果使用的是CSV或Excel文件,则可能必须将其转换为Hyper extract,然后才能使用自定义SQL。
要在Tableau中定义自连接,请编辑数据源,双击您的表以放到物理层,然后再次将您的表拖到画布上。然后定义您的加入条件。自定义SQL可用于大多数数据库,但可能不能用于文本文件。请参阅帮助。
在大多数情况下,最好避免自定义SQL,而让Tableau生成优化的SQL。Tableau经常被高级用户描述为“一个附加了图表包的SQL生成器”,以强调它非常擅长生成SQL。新用户经常坚持手工编写SQL,因为他们已经习惯了,这牺牲了Tableau带来的一些主要好处。Tableau已经发展到很少需要编写自定义SQL的地步,但仍然有一些重要的用例。利用窗口查询是定制SQL的一个很好的用例。另一种情况是,当你想使用数据库提供的非标准特性或函数时(但在这种情况下,首先尝试使用Tableau中的原始SQL函数-它允许您只嵌入自定义SQL的一个片段)
表计算在很多方面都受到SQL窗口查询的启发,而且通常又快又容易(但有时并不那么容易)。表计算是在客户端计算的,这取决于您是否已经获取了数据,这可能会提高性能,也可能会影响性能。
hyper API现在支持一些窗口查询。希望有一天,在没有自定义SQL的情况下,可以从Tableau轻松地访问它们。
SQL for self-join方法
select
a.date,
sum(b.sales) as cumulative_sales
from sales_table a
join sales_table b on a.date >= b.date
group by a.date用于窗口查询方法的SQL
select
date,
sum(sales) over (order by date rows unbounded preceding) as cumulative_sales
from sales_tablehttps://stackoverflow.com/questions/62356682
复制相似问题