需要在 Power BI 中使用 DAX 根据日期查找新行
need to find new rows based on the date with DAX in power BI
我需要根据“日期”来统计“用户”来找到新添加的用户。假设 2021 年 7 月 1 日是数据的起始日期。
样本数据如:
user date count of login
a Thursday, July 1, 2021 10
b Thursday, July 1, 2021 5
c Thursday, July 1, 2021 4
d Thursday, July 1, 2021 1
e Thursday, July 1, 2021 1
a Saturday, July 10, 2021 5
b Saturday, July 10, 2021 10
c Saturday, July 10, 2021 2
g Saturday, July 10, 2021 5
h Saturday, July 10, 2021 4
g Monday, July 12, 2021 2
h Monday, July 12, 2021 2
i Monday, July 12, 2021 2
在这种情况下,输出应如下所示:
Date count of new user
July 1, 2021 5
July 10, 2021 2
July 12, 2021 1
当用户从未出现在之前的所有日期中时,以某种方式对其进行计数(或将第一次出现的用户计数为新用户并忽略所有后续用户)
感谢任何帮助
我明白了,对于未来的用户...
sheet1 是 excel 示例文件的名称
VAR __CURRENT_VALUES = SUMMARIZE(VALUES('Sheet1'), 'Sheet1'[user])
VAR __EXISTING_VALUES =
CALCULATETABLE(
SUMMARIZE(VALUES('Sheet1'), 'Sheet1'[user]),
FILTER(
ALL('Sheet1'[date].[Date]),
'Sheet1'[date].[Date] < MIN('Sheet1'[date].[Date])
),
KEEPFILTERS(__CURRENT_VALUES)
)
RETURN
CALCULATE(
DISTINCTCOUNT('Sheet1'[user]),
EXCEPT(__CURRENT_VALUES, __EXISTING_VALUES)
)
请尝试以下代码
_newCustomers2 =
VAR _currentDate =
MAX ( 'fact'[date] )
VAR _distinctNewCount =
COUNTROWS (
EXCEPT (
VALUES ( 'fact'[user] ),
SUMMARIZE (
FILTER ( ALL ( 'fact' ), 'fact'[date] <_currentDate ),
'fact'[user]
)
)
)
RETURN
_distinctNewCount
如果您table喜欢以下
| user | date | Index |
|------|------------|-------|
| a | 2021-07-01 | 1 |
| b | 2021-07-01 | 2 |
| c | 2021-07-01 | 3 |
| d | 2021-07-01 | 4 |
| e | 2021-07-01 | 5 |
| a | 2021-07-10 | 6 |
| b | 2021-07-10 | 7 |
| c | 2021-07-10 | 8 |
| g | 2021-07-10 | 9 |
| h | 2021-07-10 | 10 |
| g | 2021-07-12 | 11 |
| h | 2021-07-12 | 12 |
| i | 2021-07-12 | 13 |
| a | 2021-07-12 | 14 |
| d | 2021-07-12 | 15 |
| e | 2021-07-12 | 16 |
| d1 | 2021-07-12 | 17 |
| e1 | 2021-07-12 | 18 |
| g | 2021-07-18 | 19 |
| h | 2021-07-18 | 20 |
| i | 2021-07-18 | 21 |
| a | 2021-07-18 | 22 |
| a1 | 2021-07-18 | 23 |
| a | 2021-07-19 | 24 |
| a1 | 2021-07-19 | 25 |
| c | 2021-07-19 | 26 |
上面的代码returns高亮行数
这应该符合要求。
New_User_Count =
VAR currentDate =
MAX ( 'Sheet1'[date] )
VAR preceedingDates = CALCULATETABLE(VALUES(Sheet1[date]),Sheet1[date] < currentDate)
VAR distinctNewCount =
COUNTROWS (
EXCEPT (
VALUES ( 'Sheet1'[user] ),
SUMMARIZE (
FILTER ( ALL ( 'Sheet1' ), 'Sheet1'[date] in preceedingDates ),
'Sheet1'[user]
)
)
)
RETURN distinctNewCount
我需要根据“日期”来统计“用户”来找到新添加的用户。假设 2021 年 7 月 1 日是数据的起始日期。 样本数据如:
user date count of login
a Thursday, July 1, 2021 10
b Thursday, July 1, 2021 5
c Thursday, July 1, 2021 4
d Thursday, July 1, 2021 1
e Thursday, July 1, 2021 1
a Saturday, July 10, 2021 5
b Saturday, July 10, 2021 10
c Saturday, July 10, 2021 2
g Saturday, July 10, 2021 5
h Saturday, July 10, 2021 4
g Monday, July 12, 2021 2
h Monday, July 12, 2021 2
i Monday, July 12, 2021 2
在这种情况下,输出应如下所示:
Date count of new user
July 1, 2021 5
July 10, 2021 2
July 12, 2021 1
当用户从未出现在之前的所有日期中时,以某种方式对其进行计数(或将第一次出现的用户计数为新用户并忽略所有后续用户)
感谢任何帮助
我明白了,对于未来的用户... sheet1 是 excel 示例文件的名称
VAR __CURRENT_VALUES = SUMMARIZE(VALUES('Sheet1'), 'Sheet1'[user])
VAR __EXISTING_VALUES =
CALCULATETABLE(
SUMMARIZE(VALUES('Sheet1'), 'Sheet1'[user]),
FILTER(
ALL('Sheet1'[date].[Date]),
'Sheet1'[date].[Date] < MIN('Sheet1'[date].[Date])
),
KEEPFILTERS(__CURRENT_VALUES)
)
RETURN
CALCULATE(
DISTINCTCOUNT('Sheet1'[user]),
EXCEPT(__CURRENT_VALUES, __EXISTING_VALUES)
)
请尝试以下代码
_newCustomers2 =
VAR _currentDate =
MAX ( 'fact'[date] )
VAR _distinctNewCount =
COUNTROWS (
EXCEPT (
VALUES ( 'fact'[user] ),
SUMMARIZE (
FILTER ( ALL ( 'fact' ), 'fact'[date] <_currentDate ),
'fact'[user]
)
)
)
RETURN
_distinctNewCount
如果您table喜欢以下
| user | date | Index |
|------|------------|-------|
| a | 2021-07-01 | 1 |
| b | 2021-07-01 | 2 |
| c | 2021-07-01 | 3 |
| d | 2021-07-01 | 4 |
| e | 2021-07-01 | 5 |
| a | 2021-07-10 | 6 |
| b | 2021-07-10 | 7 |
| c | 2021-07-10 | 8 |
| g | 2021-07-10 | 9 |
| h | 2021-07-10 | 10 |
| g | 2021-07-12 | 11 |
| h | 2021-07-12 | 12 |
| i | 2021-07-12 | 13 |
| a | 2021-07-12 | 14 |
| d | 2021-07-12 | 15 |
| e | 2021-07-12 | 16 |
| d1 | 2021-07-12 | 17 |
| e1 | 2021-07-12 | 18 |
| g | 2021-07-18 | 19 |
| h | 2021-07-18 | 20 |
| i | 2021-07-18 | 21 |
| a | 2021-07-18 | 22 |
| a1 | 2021-07-18 | 23 |
| a | 2021-07-19 | 24 |
| a1 | 2021-07-19 | 25 |
| c | 2021-07-19 | 26 |
上面的代码returns高亮行数
这应该符合要求。
New_User_Count =
VAR currentDate =
MAX ( 'Sheet1'[date] )
VAR preceedingDates = CALCULATETABLE(VALUES(Sheet1[date]),Sheet1[date] < currentDate)
VAR distinctNewCount =
COUNTROWS (
EXCEPT (
VALUES ( 'Sheet1'[user] ),
SUMMARIZE (
FILTER ( ALL ( 'Sheet1' ), 'Sheet1'[date] in preceedingDates ),
'Sheet1'[user]
)
)
)
RETURN distinctNewCount