如何修复检查订单日期的计算字段?

How to fix a calculated field that checks for date in a order?

数据结构类似于此,其中访问的州遵循以下顺序:夏威夷 -> 加利福尼亚 -> 德克萨斯 -> 纽约。

| Name       | State       | Date         |
|:-----------|------------:|:------------:|
| Alice      |       Hawaii|   1/1/2019   |
| Alice      |   California|   1/3/2019   |
| Alice      |        Texas|   1/5/2019   |
| Alice      |     New York|   1/7/2019   |
| Bobby      |       Hawaii|   3/20/2019  |
| Bobby      |   California|   3/23/2019  |
| Bobby      |        Texas|              |
| Bobby      |     New York|              |
| Carl       |       Hawaii|   2/10/2019  |
| Carl       |   California|   2/12/2019  |
| Carl       |        Texas|   2/12/2019  |
| Carl       |     New York|              |

我只想显示尚未去过纽约但访问过 Tableau 中所有其他地方的人的日期。

在这种情况下,这将是卡尔,因为他去过夏威夷、加利福尼亚和德克萨斯,但还没有去过纽约。

Alice 不会出现,因为她已经访问过纽约,Bobby 应该不会出现,因为他还没有去过德克萨斯州

我尝试制作一个计算字段并将其拖到过滤器中。

IF (ISNULL([Date]) AND [State] = "New York") AND

(NOT ISNULL([Date]) AND 
([State] = "Hawaii" OR
[State] = "California" OR
[State] = "Texas"))

THEN
[Date]

END

我希望输出计算字段 return 我的以下 DATE 列:

| Name       | State       | Date         |
|:-----------|------------:|:------------:|
| Alice      |       Hawaii|              |
| Alice      |   California|              |
| Alice      |        Texas|              |
| Alice      |     New York|              |
| Bobby      |       Hawaii|              |
| Bobby      |   California|              |
| Bobby      |        Texas|              |
| Bobby      |     New York|              |
| Carl       |       Hawaii|   2/10/2019  |
| Carl       |   California|   2/12/2019  |
| Carl       |        Texas|   2/12/2019  |
| Carl       |     New York|              |

但我得到的所有内容都是空的,所以我的逻辑中有些地方是错误的,但我不知道是什么。

将名称放在筛选器架子上。选择全部使用并切换到条件选项卡。为条件输入以下公式。

max([State] = "Hawaii") and max([State] = "California") and max([State] = "Texas") and not max([State] = "New York")

或者,您可以根据名称字段创建一个集合,其中包含访问过您想要的州的人员 - 使用上述条件中的前 3 行。另一组也基于 Name 字段,其中包含访问过您不想要的州的人员。然后制作一个组合集,其中第一组中的人减去第二组中的人。

然后您可以根据需要在过滤器、计算字段和货架上使用集合。

顺便说一句,如果任何数据记录都满足,则 max([条件]) 为真,因为 True 被视为大于 False。 min([condition]) 为真当且仅当所有数据记录满足[condition]