【问题标题】:Find observations of an ID within a certain timeframe in the future in Tableau在 Tableau 中查找未来某个时间范围内某个 ID 的观察值
【发布时间】:2017-01-08 06:18:28
【问题描述】:

我在 Tableau 中有一个数据集,其中包含列出公司在过去一年中的每笔销售的销售数据。每个客户都有一个唯一的 ID,并且许多客户返回。我试图弄清楚如何在 Tableau 中创建一个计算字段,该字段给出 True |对给定患者 ID 是否在给定时间范围内(例如,在给定观察后六周内)再次出现在数据集中的错误答案。

我尝试使用 LOOKUP 运行它,但我无法有效地指定时间增加。

【问题讨论】:

    标签: datetime tableau-api lookup calculated-field


    【解决方案1】:

    这就是我的处理方式。创建两个日期参数,开始和结束。

    然后为日期创建过滤器计算。

    [date] >= [param_date_start]
    and
    [date] <= [param_date_end]
    

    将它放在设置为 TRUE 的过滤器架子中。

    然后为您的客户 ID 创建另一个参数,您可以测试客户 ID 是否存在,如下所示。

    max([customer_id] = [param_customer_id])
    

    如果至少有一条记录的 customer_id 等于所选维度和日期范围的 param_customer_id,这将返回 true。

    您可以使用相同的方法来定义一个计算集,例如客户在指定日期范围内购买的所有产品的集,或者接受特定服务的所有患者的集。定义集合时,只需在条件选项卡上使用此公式即可。

    【讨论】:

    • 我修改了你的答案,因为最初的计算混合了聚合和非聚合参数(所以不会像写的那样工作),尽管这个概念基本上是正确的方向
    • 如果我选择的是一个离散的六周时间段,这似乎可行,但我正在寻找更动态的东西,对于每种情况,它会在特定的六周前检查观察并查看是否有重复的患者 ID,然后对于每次进行的观察,它都会执行相同的操作。我之前在 R 中完成了此操作并将数据加载为平面文件,但我想创建一些自动执行此操作的内容,以便与 SQL 实现一起使用。我现在正在尝试使用 SCRIPT_BOOL。
    • 这是我目前所拥有的,但输出并不是我想要输出的。 code SCRIPT_BOOL(" require('dplyr') require('lubridate') dates &lt;- as.POSIXct(as.character(.arg2), format = '%m/%d/%y') accounts &lt;- .arg1 for (i in 1:length(accounts)){ new &lt;- accounts[which(accounts == accounts[i])] right &lt;- dates[i] + weeks(6) left &lt;- dates[i] + days(3) newer &lt;- new[which(between(dates, left, right) == TRUE)] accounts[i] &lt;- ifelse(length(newer) &gt; 0, TRUE, FALSE)} accounts", COUNT([Account Id]), COUNT([Completed Date]))
    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 2021-08-27
    • 1970-01-01
    • 2022-07-06
    • 2021-12-26
    相关资源
    最近更新 更多