如何使用某些条件过滤器找出 users_id
how to Find out users_id with some conditions filter
我有一个这样的table
order_id | user_id | createdAt | transaction_amount
order_id为交易id,user_id为用户,createdAt为日期,transaction_amount为每个id订单的交易。
等等 tableau 我想在“2020-01-01”到“2020-01-31”的时间范围内找到具有 2 个条件的用户
- 用户在范围内的最后一个日期('2020-01-31')之前进行交易并且至少进行超过 1 笔交易
- 并且用户至少在日期范围(“2020-01-01”至“2020-01-31”)内进行了 1 笔交易
关于 mysql 可以用此查询描述条件
HAVING SUM(createdAt <= '2020-01-31') > 1
AND SUM(createdAt BETWEEN '2020-01-01' AND '2020-01-31')
在 tableau 我做了这个
[![在此处输入图片描述][1]][1]
在第一个过滤器 (createdAt) 上,我设定了日期范围(“2020-01-01”到“2020-01-31”)
在第二个过滤器(createdAt copy)上,我在最后一个范围之前创建了范围(<'2020-01-31')
在过滤器 CNTD(user_id) 上,我使 count distinct 至少为 1.
所以它显示 2223 个用户,而不是当我在 mysql 中检查它时,它显示 1801 个用户,并且 mysql 总是正确的,因为我使用 mysql 并且我是新用户tableau。那么我在这里错过了什么?
编辑:以这个例子为例
- 用户 1 进行了 2 次交易,12 月 19 日和 1 月 20 日各 1 次
- 用户 2 在 1 月 20 日进行了 1 笔交易
- 用户 3 在 12 月 19 日进行了 2 笔交易
- user4 在 2 月 20 日进行了 2 笔交易
- user5 在 1 月 20 日进行了 2 笔交易
数据快照
现在,如果您的日期范围是 1 月 20 日(比方说)。如果您希望用户在日期范围结束前(2020 年 1 月 31 日)至少进行两次交易,并且其中至少一次交易应在 2020 年 1 月进行,则 user1 和 user5 满足条件。
在这种情况下进行这样的操作-
Step-1 创建两个 date type
参数(parameter 1
和 parameter 2
分别用于日期范围的开始和结束)
步骤 2 创建一个计算字段 condition
,计算方式为
{Fixed [User]: sum(
if [Trans Date]<=[Parameter 2] then 1 else 0 end)}>=2
AND
{FIXED [User]: sum(
IF [Trans Date]<=[Parameter 2] AND
[Trans Date] >= [Parameter 1] THEN 1 ELSE 0 END)}>=1
只要您的给定条件得到满足,这将评估为 TRUE
。 请参阅此屏幕截图。
不用说交易日期就是你的创建时间
我有一个这样的table
order_id | user_id | createdAt | transaction_amount
order_id为交易id,user_id为用户,createdAt为日期,transaction_amount为每个id订单的交易。
等等 tableau 我想在“2020-01-01”到“2020-01-31”的时间范围内找到具有 2 个条件的用户
- 用户在范围内的最后一个日期('2020-01-31')之前进行交易并且至少进行超过 1 笔交易
- 并且用户至少在日期范围(“2020-01-01”至“2020-01-31”)内进行了 1 笔交易
关于 mysql 可以用此查询描述条件
HAVING SUM(createdAt <= '2020-01-31') > 1
AND SUM(createdAt BETWEEN '2020-01-01' AND '2020-01-31')
在 tableau 我做了这个
[![在此处输入图片描述][1]][1]
在第一个过滤器 (createdAt) 上,我设定了日期范围(“2020-01-01”到“2020-01-31”) 在第二个过滤器(createdAt copy)上,我在最后一个范围之前创建了范围(<'2020-01-31') 在过滤器 CNTD(user_id) 上,我使 count distinct 至少为 1.
所以它显示 2223 个用户,而不是当我在 mysql 中检查它时,它显示 1801 个用户,并且 mysql 总是正确的,因为我使用 mysql 并且我是新用户tableau。那么我在这里错过了什么?
编辑:以这个例子为例
- 用户 1 进行了 2 次交易,12 月 19 日和 1 月 20 日各 1 次
- 用户 2 在 1 月 20 日进行了 1 笔交易
- 用户 3 在 12 月 19 日进行了 2 笔交易
- user4 在 2 月 20 日进行了 2 笔交易
- user5 在 1 月 20 日进行了 2 笔交易
数据快照
现在,如果您的日期范围是 1 月 20 日(比方说)。如果您希望用户在日期范围结束前(2020 年 1 月 31 日)至少进行两次交易,并且其中至少一次交易应在 2020 年 1 月进行,则 user1 和 user5 满足条件。
在这种情况下进行这样的操作-
Step-1 创建两个 date type
参数(parameter 1
和 parameter 2
分别用于日期范围的开始和结束)
步骤 2 创建一个计算字段 condition
,计算方式为
{Fixed [User]: sum(
if [Trans Date]<=[Parameter 2] then 1 else 0 end)}>=2
AND
{FIXED [User]: sum(
IF [Trans Date]<=[Parameter 2] AND
[Trans Date] >= [Parameter 1] THEN 1 ELSE 0 END)}>=1
只要您的给定条件得到满足,这将评估为 TRUE
。 请参阅此屏幕截图。
不用说交易日期就是你的创建时间