【问题标题】:Tableau - Finding Records that happened within X amount of timeTableau - 查找在 X 时间内发生的记录
【发布时间】:2017-07-27 21:38:42
【问题描述】:

我有一些使用 Tableau 的经验,因为我已经迁移到没有大量经验的数据分析师职位,并且如果甚至可以在 Tableau 中执行计算,我会遇到困难。

我的数据的一般基础看起来像(将其限制为我们需要的两个字段)

  1. 案例# |技术派遣时间 (PST) |全职(是/否)
  2. 2017-0001|月/日/年 16:34:21 | 0
  3. 2017-0002|月/日/年 20:43:00 | 1
  4. 2017-0003|月/日/年 22:00:05 | 0

我们希望了解在 X 时间内派遣的频率,以确定我们派遣团队的效率。如果这些发生在同一条记录上,则基本的 DATEDIFF 和 IF 函数将起作用,但我不知道如何声明 IF 在 180 分钟内有另一个调度,1,否则为 0。

这是我必须在 Tableau 之外使用 SQL 或 PowerPivot 执行的操作吗?或者这是 Tableau 也可以计算的函数?

感谢您在此问题上的时间和帮助,

安迪 M.

【问题讨论】:

    标签: tableau-api


    【解决方案1】:

    创建一个参数来定义你的'x', 然后用下面的公式创建一个计算字段(我称之为时间块)

    //We need to add 0.5 to Roundup
    ROUND((DATEDIFF('minute',[Tech Dispatch Time],NOW())/[x])+0.5,0)
    

    现在您可以在您的可视化中使用它

    【讨论】:

    • 嗨何塞!感谢您抽出宝贵时间回复。我试过了,它似乎不起作用,我有几个问题。当我使用 2016 年的记录时,使用 now() 不会产生问题吗?我的目标是查看历史数据和当前数据是否在这 180 分钟内有另一次调度,如果是这样,用二进制标记对其进行标记,该标记可用于获取在此时间范围内两次调度彼此发生的频率,以及它们发生的时间。再次感谢您的宝贵时间!安迪 M.
    • 对不起,我错过了阅读您的问题。我下班回来再看一遍
    • @MCMaster,不,它不会对 2016 年的数据造成任何问题。它只是将您的数据分类为 180 分钟的块(假设您将 x 设置为 180)。 NOW() 只是一个参考。如果您只希望调度发生在过去 180 分钟内,则 Time Block '1' 将拥有该数据,您可以使用 if 条件对它们进行二进制标记。
    【解决方案2】:

    使用LOOKUP() 函数。它允许您查找相对于当前行的其他行的值。

    DateDiff("minute", [Tech Dispatch Time (PST)], Lookup(MIN([Tech Dispatch Time (PST)]), -1))
    

    但是,您在问题中的示例数据存在问题。 Tech Dispatch Time (PST) 字段只有时间部分。要准确计算时差,您需要一个带有时间的日期。否则,如果这两个案例跨越午夜,您将得到负数。

    由于这是一个表格计算,您还必须通过编辑表格计算来设置分区和寻址维度以及排序顺序以获得您想要的效果。

    【讨论】:

    • 嗨,山姆!感谢您抽出时间回复。首先,这完全是我的错误,我的时间戳也有日期,经过编辑以显示这一点。有两个小问题。首先 - 当它搜索下一条记录时,它会找到下一行吗?我们从事医疗调度工作,我们的记录不是按顺序或调度的日期,而是按时间接收/严重性的顺序,所以下一个记录可能会在 4 小时后发送,但更严重的一个记录在 5 条记录中出现,并在 30 分钟后发送在原始记录之后。这会抓住那个吗?同样,遇到一些表格计算
    • 错误导致设置后的所有空值,减去必须执行 Lookup(Attr()),因为它说在使用表函数时所有字段必须是聚合。再次感谢山姆。安迪 M.
    • @A.McMaster,Alex Blakemore 对我提供的函数进行了一些更正编辑。看看他的编辑是否有助于消除你的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    相关资源
    最近更新 更多