簡體   English   中英

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

在這種情況下,output 應該如下所示:

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

如果您有如下表格

| 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    |

上面的代碼返回突出顯示的行數解決方案

解決方案2

這應該按要求工作。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM