【问题标题】:Tableau Calculate Date DifferenceTableau 计算日期差异
【发布时间】:2015-09-19 11:38:02
【问题描述】:

我正在处理每笔交易都有多个阶段的一些销售数据。说阶段A,B,C,D......

在完美世界中,每笔交易都需要经过每个阶段,我想计算交易在每个阶段停留的差额。

假设数据可能如下所示:

transaction_id    stage    updated_date
1                 A        2015-01-01
1                 B        2015-01-02
1                 C        2015-01-05
1                 D        2015-01-06

我想要类似的东西:

transaction_id    stage    time_spent
1                 AB       1 day
1                 BC       3 days
1                 CD       1 day 

然后我将能够分析每个阶段花费的时间并查看直方图或分布。但是,我唯一能找到的是函数datediff

谁能告诉我如何在 Tableau 中实现这一目标?

【问题讨论】:

    标签: tableau-api


    【解决方案1】:

    您可以尝试使用LOOKUP() 来使用分区前一行中的日期计算持续时间:

    DATEDIFF('day', LOOKUP(ATTR([Updated Date]), -1), ATTR([Updated Date]))
    

    然后要获取您的“AB”标签,请再次使用 LOOKUP() 从上一行获取它:

    LOOKUP(ATTR([stage]), -1) + ATTR([stage])
    

    要制作包含字段的直方图,您可以将[stage] 拖到列,然后拖到[stage label](或者您选择调用我们创建的第二个计算字段的任何名称)。将[duration](我们创建的第一个字段)拖到行中。然后右键单击图表中的“A”并单击“隐藏”。隐藏它而不是过滤掉它很重要,因为它仍然需要在您的分区中才能使表计算工作!然后右键单击列卡中的[stage] 药丸并取消选中“显示标题”。

    请务必注意,如果您的数据中不存在阶段 C(例如),那么您的直方图中最终会出现“BD”,因此希望您的数据是原始的。

    警告 - 使用 lookup() 等表计算的一项成本是它们仅对聚合查询结果进行操作,这意味着必须将所有有问题的数据行从数据库提取到 Tableau 客户端或服务器。因此,如果您有大量数据并且只想显示汇总结果,例如完成每个阶段的最小/平均/最大时间,那么表格计算可能是获取这些汇总度量的一种昂贵且复杂的方法。

    另一种方法是重塑数据并使用行级计算、聚合计算或 LOD 计算——所有这些都可以由源数据库执行。这通常也更易于管理。

    【讨论】:

    • 有什么办法可以得到 datediff(whatever, Date where Stage = X, Date where Stage = Y) ??我的意思是设置一个条件
    【解决方案2】:

    包含NOW() 函数

    DATEDIFF('day', updated_date, NOW())
    

    【讨论】:

    • 如果您使用的是日期而不是日期时间,那么为简单起见,您可能应该使用 today() 函数而不是 now()。
    【解决方案3】:

    这是重塑数据的一种方法。还有其他选择。

    这种方法对于每个阶段的入口或出口都有一个数据行。

    transaction_id date        action   stage
    1              2015-01-01  enter    A
    1              2015-01-02  exit     A
    1              2015-01-02  enter    B
    

    这意味着您必须谨慎执行数据质量。确保没有人在进入之前退出阶段,或者您没有不匹配的进入/退出对(除非交易当前仍处于阶段并且已进入但尚未退出)所以它可以自动记录数据,而对于手动输入的数据则更少。

    现在,您可以仅通过计数退出来计算通过阶段的交易数量,或者通过使用运行的入口 - 出口总数随时跟踪阶段中的交易数量。没有假设交易总是遵循相同的路径,因此有可能在 C 处被拒绝并返回到 A。

    您可能可以推导出每个阶段花费的时间,但如果您可以为此添加一列并包含在每个退出的数据中,这可能会更容易管理。

    正如我所提到的,这只是一种可能的结构。最佳表格结构取决于您要回答的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-24
      • 2021-12-31
      • 2019-08-25
      • 2010-10-01
      相关资源
      最近更新 更多