【问题标题】:How to aggregate table calculation in tableau如何在tableau中聚合表计算
【发布时间】:2020-11-23 04:51:58
【问题描述】:

这是我的工作簿

在该工作簿上,我为每个用户计算每个事务之间的 timediff。我首先构建的是具有此计算的过滤器 PUL

{Fixed [User Id]: sum(
if [Created At]<=[END_DATE] then 1 else 0 end)}>=2
AND
{FIXED [User Id]: sum(
IF [Created At]<=[END_DATE] AND 
[Created At] >= [START_DATE] THEN 1 ELSE 0 END)}>=1

这个公式是找出符合条件的用户(在 end_date 参数之前至少进行 2 次交易,并且在 start_date 参数和 end_date 参数之间至少进行 1 次交易),然后我将这个过滤器添加到上下文中以找出用户至上。

我用这个计算过滤了 date_range

lookup(min(([Created At])),0) >= [START_DATE] and 
lookup(min(([Created At])),0) <= [END_DATE]

因此它将仅可视化范围内的交易(start_date 作为第一个范围,end_date 作为最后一个范围),并且还会可视化第一个范围之前的最后日期交易(如果有的话)。

之后我进行名为 datediff 的计算 DATEDIFF('day',LOOKUP(MIN([Created At]),-1), MIN([Created At])) 并将其放在标签上,以便计算不同的日期。而且我把日期放在细节中,把日期也放在行中,让它成为ATTR。

我的问题是,如何从这个计算中找出最大值、最小值、中值和平均值

我尝试计算最大值

MAX({FIXED [User Id]:DATEDIFF('day',INT(LOOKUP(MIN([Created At]),-1)), INT(MIN([Created At])))})

但它返回错误datediff being called with string,integer,integer

【问题讨论】:

  • 查看我编辑的答案。我认为这是您在画面中可以做的最好的事情。你可以看看this file

标签: tableau-api aggregation rolling-computation


【解决方案1】:

对于 Max 和 Min,您可以像我为您提供上一个问题的解决方案一样继续操作。 (对于 max 创建一个排名计算并且排序是降序的,对于 Min 你创建一个按升序排列的第二个排名计算

但是,就我对 tableau 中表格计算的了解而言,Tableau 不允许硬编码这些表格计算字段,因此您不能 -

  • 进一步汇总这些结果
  • 对这些执行 LOD 计算。

对于像 averagemedian 这样的计算,建议您可以创建一个硬编码的列/字段,为您提供任何时间差与该客户之前的订单一起订购。您可以使用您选择的任何编程语言,如 R 或 python(或其他)。

此外,Tableau 与 R/python 的集成是通过 script-real 类型的函数进行的,这些函数又属于 table calculation 类别,以上限制将适用。

祝你好运。

EDIT 正如 Alex Blakemore 在另一个问题/答案中所建议的那样,您可以使用窗口函数稍作调整。假设您的 datediff 计算字段名称为 [CF],然后使用以下计算创建四个计算字段。

window_max([CF])

window_min([CF])

window_avg([CF])

window_median([CF])

并将它们分别命名为[CF max][CF Min][CF avg][CF Median]

现在编辑表格计算,每四个嵌套,如下-

  • 单击嵌套计算向下箭头。 CF 将在此处列出。将其计算更改为specific dimensions,在级别deepest 并在evrey user id 重新启动。截图是

  • 然后再次单击嵌套计算向下箭头。选择 CF_max/min/med/avg(视情况而定)并使用 table down 创建表格计算。

您会根据需要获得这样的视图。

【讨论】:

  • 嗨,anil,我只是想知道,为什么我的 CF min 有 2 个 min 值,有 1 和 2,为什么不像你的截图那样为零?
  • 我只是按照你的步骤,根据你的截图做了同样的计算
  • 但是当我沿用户 ID 将其更改为 CF MIN 时,这些值变为正确的值(0 值)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
相关资源
最近更新 更多