【问题标题】:why my calculated cant be applied in my filters tableau为什么我的计算不能应用于我的过滤器画面
【发布时间】:2020-11-26 11:02:18
【问题描述】:

这是我的画面工作簿

所以我想为每个用户计算每个交易之间的不同天数,这种情况下的用户在过滤器中 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

表示在最后一个范围之前有超过 1 笔交易且在日期范围内至少进行过 1 笔交易的用户在列表中。

所以在那之后我用这个公式 [CF] 计算字段来计算不同的天数

DATEDIFF('day',LOOKUP(MIN([Created At]),-1), MIN([Created At]))

我还做了过滤日期范围

lookup(min(([Created At])),0) >= [START_DATE] and 
lookup(min(([Created At])),0) <= [END_DATE]

因此,不仅计算选定用户的日期范围内的时间差,而且每个用户还计算日期范围之前最后一次交易的不同天数(如果有)

这就是结果(请查看 user_id 86886)

我不明白为什么 user_id 86886 因为我的实验只有 1 笔交易,而我已经制作了过滤器,只接受交易超过 1 笔的用户,在我检查后,user_id 86886 每天进行超过 1 笔交易.这是截图

我的问题是

  1. 为什么画面不能像这样在同一天(但不同时间)可视化所有交易

以及如何将其可视化,以便显示同一天但不同小时的 2 条记录。

  1. 还有为什么如果同一天的交易计数时间与 NULL 不同,它应该为 0,因为没有时间不同

预期结果(我们以 user_id 86886 为例)

+---------+-----------------------+-------------+
| user_Id |    dayOfCreatedAt     | CF diff day |
+---------+-----------------------+-------------+
|   86886 | 1/25/2020 11:25:28 AM |             |
|         | 1/25/2020 11:39:42 AM |          0  |
+---------+-----------------------+-------------+

说明:CF diff day 的第一个为NULL,因为这是该用户的第一次交易,并且在此之前用户没有再次进行交易,第二个是“0”,因为没有天不同,不同的只是以小时为单位,但虽然是同一天,所以不会有不同的一天,它算 0

根据@Anil 的建议,这是我的工作簿画面链接https://public.tableau.com/profile/fachry.dzaky#!/vizhome/simulation_data/Sheet14

【问题讨论】:

  • 一个小建议,您可以发布 Tableau 公共工作簿的链接,以便 SO 专家不知道这一点,可能会提出更好的新解决方案。

标签: tableau-api


【解决方案1】:

我认为您的 PUL 字段有一些错误。可能您应该将此字段的计算更改为

{Fixed [User Id]: sum(
if [Created At]<[START_DATE] then 1 else 0 end)}>=1
AND
{FIXED [User Id]: sum(
IF [Created At]<=[END_DATE] AND 
[Created At] >= [START_DATE] THEN 1 ELSE 0 END)}>=1

因为,如果您试图获得非空差异,则在 [start_date] 之前必须至少有一个事务。 请检查。

现在请按照这些步骤(请小心)

第 1 步user idcreated at 拖到 Rows Shelf

第 2 步created at 更改为确切日期,然后更改为谨慎两者都很重要,您查看表明您没有将其显示为确切的日期,而是显示为 created_at 的日期

第 3 步:设置日期参数

第 4 步将所有三个所需字段拖到过滤器架上。

步骤*5:将PUL 添加到上下文中(这又是一个重要步骤)

Step-6双击CF字段(检查其计算为

DATEDIFF('day', LOOKUP(MIN([Created At]),-1), MIN([Created At]))

Step-7CF的表格计算选项更改为表格向下(检查这也很重要

Step-8 双击其他 CF_max/Min 字段,将其添加到measure values

第 9 步如前所述更改这四个字段中的每个字段中的表计算选项(即,将 CF 嵌套计算为 specific dimensions 在每个 user_id 处重新开始)。并将CF_Max(视情况而定)的嵌套计算表下来。

注意关于 user_id 86886 的具体问题(如果我将 PUL 修改后的条件删除为 TRUE,我会得到与期望相同的视图)。请看一下

【讨论】:

  • 所以基本上我可以识别的问题是(i)day(createdAt)而不是确切的日期和谨慎,(ii)CF中的表计算选项和(iii)嵌套计算中的表计算选项您必须修复这些聚合字段和 CF 的所有四个字段。
  • 我认为您对 PUL 的计算是错误的,因为当用户在日期范围内(在 start_date 和 end_date 之间)进行超过 1 次交易时,它将不在列表中,而应该是,因为只要用户进行的交易超过 1 笔交易,并且在日期范围内至少有 1 笔交易,它就应该在 PUL 列表中
  • 另外,PUL 用户的每笔交易之间没有负数不同的日期,因为它会在范围内的第一笔交易之前看到最后一笔交易(如果有的话),但如果没有,它是第一笔交易,那么差异日应该是 0。这就是为什么你建议我在日期范围内进行这样的计算 lookup(min(([Created At])),0) &gt;= [START_DATE] and lookup(min(([Created At])),0) &lt;= [END_DATE]
  • 如果日期范围内的第一笔交易是该用户的第一笔交易,我认为它可以是NULL,所以这意味着之前没有交易(看看我的预期结果) . 0 diff day 发生在同一 user_id 中的 2 个或更多事务在同一天进行时,所以它可以是 0 diff day 的值,就像预期的结果一样
  • 我认为您可能需要这样的 PUL。无论如何,您可以根据需要进行 PUL 计算。然而,如果您按照说明应用计算,该视图将起作用。请仔细记下每一步。
猜你喜欢
  • 2012-03-21
  • 1970-01-01
  • 2014-09-27
  • 2015-05-31
  • 1970-01-01
  • 1970-01-01
  • 2018-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多