Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
SoufTC
Helper I
Helper I

Delete rows based on calculated number

I’m having trouble to delete rows based on calcluted # number.

 

I have 3 tables.

 

1. A table that defines unique list of call (call)[List] per day (call)[Date]. each call has an answer status (call)[Status]. I created a column to have a unique field (call)[Key]

 

Call which appears as following :

|   List          |  Status  |    Date            |    Key
-------------------------------------------------------------
|   List1         |  A        |    2022-02-09  |   List1 2022-02-09
|   List1         |  A        |    2022-02-09  |   List1 2022-02-09
|   List1         |  DO     |    2022-02-09  |   List1 2022-02-09
|   List1         |  DO     |    2022-02-09  |   List1 2022-02-09
|   List1         |  DO      |    2022-02-09  |   List1 2022-02-09
|   List2         |  A        |    2022-02-09  |   List2 2022-02-09
|   List2         |  DO      |    2022-02-09  |   List2 2022-02-09
|   List2         |  DO      |    2022-02-09  |   List2 2022-02-09
|   List3         |  A        |    2022-02-09  |   List3 2022-02-09
|   List3         |  DO        |    2022-02-09  |   List3 2022-02-09
|   List3         |  DO      |    2022-02-09  |   List3 2022-02-09
|   List1         |  C        |    2022-02-10  |   List1 2022-02-10
|   List2         |  A        |    2022-02-10  |   List1 2022-02-10
|   List2         |  DO        |    2022-02-10  |   List1 2022-02-10
|   List2         |  A        |    2022-02-10  |   List1 2022-02-10
|   List3         |  DO        |    2022-02-10  |   List1 2022-02-10
|   List3         |  A        |    2022-02-10  |   List1 2022-02-10

 

2. A table a repository Status (Status )[Names] and (Status)[Status]; The join with the (Call)table is done with the (Status)[Status]

 

Status which appears as following :

 

|   Names       |  Status       |
-----------------------------
|   answer        |      A          |
|   drop out     |     DO         |
|   cancel         |     C            |

 

2. A table Number with a calculated column (Number)[#drop] ; The join with the (Call)table is done with the (Call)[Key]

 

Number which appears as following :

|   Key                       |  # drop    |   
-------------------------------------
| List1 2022-02-09    |  2       |
| List2 2022-02-09    |  2        |
| List3 2022-02-09    |  1        |
| List1 2022-02-10    |  0        |
| List2 2022-02-10    |  1        |
| List3 2022-02-10    |  1        |

 

I want to create a new table called NewDF by deleting the rows based on (Number)[#drop] and with (Status )[Names] = "drop out"

 

Desired result is the following:

 

|   List          |  Status  |    Date            |    Key
-------------------------------------------------------------
|   List1         |  A        |    2022-02-09  |   List1 2022-02-09
|   List1         |  A        |    2022-02-09  |   List1 2022-02-09
|   List1         |  DO     |    2022-02-09  |   List1 2022-02-09
|   List2         |  A        |    2022-02-09  |   List2 2022-02-09
|   List3         |  A        |    2022-02-09  |   List3 2022-02-09
|   List3         |  DO      |    2022-02-09  |   List3 2022-02-09
|   List1         |  C        |    2022-02-10  |   List1 2022-02-10
|   List2         |  A        |    2022-02-10  |   List1 2022-02-10
|   List2         |  A        |    2022-02-10  |   List1 2022-02-10
|   List3         |  A        |    2022-02-10  |   List1 2022-02-10

 

Please, any help?

Thank's in advance

1 ACCEPTED SOLUTION
SpartaBI
Community Champion
Community Champion

@SoufTC this was super super tricky.
Also, you had mistakes in your tables you copied (look at the first table you pasted), so make sure you test this with accurate data.
Attaching the file:
Delete Rows.pbix
It involved extra neccesary steps in Power Query so make sure you follow them and then I could have written this calculated table:

 

Calc Table = 
VAR _tbl1 = 
    SELECTCOLUMNS(
        FILTER(
            ADDCOLUMNS(
                FactCalls,
                "@Removal Index", 
                IF(
                    RELATED(DimStatus[Names]) <> "drop out", 
                    0,
                    RANKX(FILTER(FactCalls,FactCalls[Key] = EARLIER(FactCalls[Key])), FactCalls[Index], ,ASC) - COUNTROWS(FILTER(FactCalls, FactCalls[Status] <> "DO" && FactCalls[Key] = EARLIER(FactCalls[Key])))
                ) - RELATED(DimDrops[# drop])
            ),
            [@Removal Index] < 0
        ),
        "List", [List],
        "Status", [Status],
        "Date", [Date],
        "Key", [Key]
    )
RETURN
    _tbl1

 




2022-05-19 17_30_22-Re_ Need help on DAX function with measure vs colu... - Microsoft Power BI Commu.png

Showcase Report – Contoso By SpartaBI


SpartaBI_3-1652115470761.png   SpartaBI_1-1652115142093.png   SpartaBI_2-1652115154505.png

Full-Logo11.png

View solution in original post

3 REPLIES 3
SoufTC
Helper I
Helper I

@SpartaBIthank's for your response. from the table Number we define how many rows to delete according to the (Number)[#drop]: for example according to Table Number for the (Call)[Key] = List1 2022-02-09  we have (Number)[#drop] = 2 rows to delete. In (call)[List] we have 3 rows = DO so we keep delete 2 and keep 1. I don't know if clear enough thank's in advance

SpartaBI
Community Champion
Community Champion

@SoufTC this was super super tricky.
Also, you had mistakes in your tables you copied (look at the first table you pasted), so make sure you test this with accurate data.
Attaching the file:
Delete Rows.pbix
It involved extra neccesary steps in Power Query so make sure you follow them and then I could have written this calculated table:

 

Calc Table = 
VAR _tbl1 = 
    SELECTCOLUMNS(
        FILTER(
            ADDCOLUMNS(
                FactCalls,
                "@Removal Index", 
                IF(
                    RELATED(DimStatus[Names]) <> "drop out", 
                    0,
                    RANKX(FILTER(FactCalls,FactCalls[Key] = EARLIER(FactCalls[Key])), FactCalls[Index], ,ASC) - COUNTROWS(FILTER(FactCalls, FactCalls[Status] <> "DO" && FactCalls[Key] = EARLIER(FactCalls[Key])))
                ) - RELATED(DimDrops[# drop])
            ),
            [@Removal Index] < 0
        ),
        "List", [List],
        "Status", [Status],
        "Date", [Date],
        "Key", [Key]
    )
RETURN
    _tbl1

 




2022-05-19 17_30_22-Re_ Need help on DAX function with measure vs colu... - Microsoft Power BI Commu.png

Showcase Report – Contoso By SpartaBI


SpartaBI_3-1652115470761.png   SpartaBI_1-1652115142093.png   SpartaBI_2-1652115154505.png

Full-Logo11.png

SpartaBI
Community Champion
Community Champion

@SoufTC I'm missing what logic do you want to get from the KEY / # Drop table.
I wrote for now this:

 

Calc Table = 
FILTER(
    FactCalls,
    RELATED(DimStatus[Names]) <> "drop out"
)

 


Just add why the DO in your result are still there after the removal and I'll add the logic


2022-05-19 17_30_22-Re_ Need help on DAX function with measure vs colu... - Microsoft Power BI Commu.png

Showcase Report – Contoso By SpartaBI


SpartaBI_3-1652115470761.png   SpartaBI_1-1652115142093.png   SpartaBI_2-1652115154505.png

Full-Logo11.png

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors