【问题标题】:Identifying next closest record by date in tableau在画面中按日期识别下一个最接近的记录
【发布时间】:2019-04-03 17:52:32
【问题描述】:

我有一个用户表和另一个事务表。

所有交易都有一个日期。我试图为每个用户确定的是交易之间的平均时间。

User | Transaction Date
-----+-----------------
A    | 2001-01-01
A    | 2001-01-10
A    | 2001-01-12

考虑用户A的上述交易。我基本上是按时间顺序寻找从一个交易到下一个交易的距离来确定距离。

交易一和交易二之间有 9 天;交易三到四之间有 2 天。这些的平均值显然是 4.5,所以我想确定用户 A 的交易之间的平均时间是 4.5 天。

知道如何在 Tableau 中实现这一点吗?

我正在尝试为每笔交易创建一个计算字段,以识别“下一次”交易的日期,但我很挣扎。

{ FIXED [user id] : MIN(IF [Transaction Date] > **this transaction date** THEN [Transaction Date]) }

我不确定用什么替换此交易日期,或者这是否是正确的方法。

任何建议将不胜感激。

【问题讨论】:

    标签: tableau-api


    【解决方案1】:

    请附上示例工作簿以及您尝试过的任何内容以及您遇到的错误。

    如果您无法将用户 ID 字段设置为过滤器,这可能没有用。

    所以,你可以设置

    用户名

    作为过滤器。然后按照here 中提到的步骤将引导您计算任意两个日期之间的差异。理想情况下,如果您在过滤器中选择任何一个值,则链接中的计算字段应该会为您提供交易日期列中的日期差异。

    【讨论】:

      【解决方案2】:

      唯一可以考虑订单顺序的计算类型(例如,当计算字段的值取决于前一行的值时)是表格计算。对于此类问题,您不能使用 LOD 计算。

      您需要了解分区和寻址如何与表计算一起使用,并指定您的排序条件。请参阅联机帮助。然后,您可以执行类似的操作,例如,将 days_since_last_transaction 定义为:

      if first() > 0 then min([Transaction Date]) - lookup(min([Transaction Date]), -1) end

      如果您有非常大的数据或出于其他原因想要在数据库中而不是在 Tableau 中通过表格计算进行计算,那么您可以通过 Tableau 的自定义 SQL 使用 SQL 窗口化(也称为分析)查询。

      【讨论】:

        【解决方案3】:

        LOD 无法直接访问以前的值,因此您需要在数据连接中创建自联接。按照以下步骤来实现您想要的。

        1. 根据以下条件使用您的数据创建自联接

        1. 如下创建 LOD 计算

        {FIXED [用户],[交易日期]: MIN(DATEDIFF('day',[交易日期],[交易日期 (Data1)])) }

        1. 构建视图

        PS:如果你想提高性能,自定义 SQL 可能是一种方式。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-22
          • 2014-05-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多