需要在 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