这是我的工作簿
在该工作簿上,我计算每个用户的每笔交易之间的时间差。我首先构建的是带有此计算的过滤器 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
最佳答案
对于 Max 和 Min,您可以像我为您提供上一个问题的解决方案一样继续操作。 (对于 max,创建排名计算并按降序排序;对于 Min,您创建第二个按升序排列的排名计算)。
但是,就我对 Tableau 中表计算的了解而言,Tableau 不允许对这些表计算字段进行硬编码,因此您不能-
- 进一步汇总这些结果
- 对这些进行 LOD 计算。
为了计算平均值和中值,建议您创建一个硬编码列/字段,为您提供任何时间差与该客户之前的订单一起订购。您可以使用您选择的任何编程语言来完成此操作,例如 R 或 python(或其他)。
此外,Tableau 与 R/python 的集成是通过 script-real
类型函数实现的,这些函数又属于表计算
类别,并且将适用上述限制。
祝你好运。
编辑正如亚历克斯·布莱克莫尔在不同的问题/答案中所建议的那样,您可以稍微调整一下使用窗口函数。我们假设 datediff 的计算字段名称为 [CF]
,然后使用以下计算创建四个计算字段。
window_max([CF])
window_min([CF])
window_avg([CF])
window_median([CF])
并将它们命名为[CF max]
、[CF Min]
、[CF avg]
、[CF Median]
分别。
现在编辑表计算,并在其中每四个中嵌套,如下 -
- 单击嵌套计算向下箭头。 CF 将在那里列出。将其计算更改为
最深
级别的特定维度
,并在evrey用户ID
处重新启动。截图是
- 此后再次单击嵌套计算向下箭头。选择CF_max/min/med/avg(视情况而定)并使用表格向下创建表格计算。
您将获得所需的 View 。
关于tableau-api - 如何在tableau中聚合表计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64962721/