The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
Please see the table below:
Field | Period | Date |
P1 | 2324 | 10/01/2024 |
P1 | 2324 | 10/01/2024 |
P1 | 2324 | 11/02/2024 |
P1 | 2425 | 02/08/2025 |
P1 | 2425 | 01/15/2025 |
P2 | 2324 | 05/05/2024 |
P2 | 2324 | 04/01/2024 |
P2 | 2425 | 01/01/2025 |
P2 | 2425 | 02/10/2025 |
P2 | 2425 | 02/10/2025 |
P2 | 2425 | 01/25/2025 |
This table shows the dates that a certain product was applied to a certain field. I need a column that shows the application number that occurred on that date of the especific period. It should look like this:
Field | Period | Date | Application |
P1 | 2324 | 10/01/2024 | 1 |
P1 | 2324 | 10/01/2024 | 1 |
P1 | 2324 | 11/02/2024 | 2 |
P1 | 2425 | 02/08/2025 | 2 |
P1 | 2425 | 01/15/2025 | 1 |
P2 | 2324 | 05/05/2024 | 2 |
P2 | 2324 | 04/01/2024 | 1 |
P2 | 2425 | 01/01/2025 | 1 |
P2 | 2425 | 02/10/2025 | 3 |
P2 | 2425 | 02/10/2025 | 3 |
P2 | 2425 | 01/25/2025 | 2 |
If two lines have the three identical pieces of information, the application number must be the same.
Solved! Go to Solution.
Hi @jobf ,
Use this DAX:
Application =
VAR UniqueRank =
RANKX(
FILTER(
ADDCOLUMNS(
SUMMARIZE('Table', 'Table'[Field], 'Table'[Period], 'Table'[Date]),
"Rank", 'Table'[Date]
),
'Table'[Field] = EARLIER('Table'[Field]) &&
'Table'[Period] = EARLIER('Table'[Period])
),
'Table'[Date],
,
ASC,
DENSE
)
RETURN UniqueRank
The output will look like this:
Hi @jobf ,
To achieve your goal, please, create a new calculated column by this DAX:
Application =
RANKX(
FILTER(
'Table',
'Table'[Field] = EARLIER('Table'[Field]) &&
'Table'[Period] = EARLIER('Table'[Period])
),
'Table'[Date],
,
ASC,
DENSE
)
This will return this result:
The problem is that sometimes there will be more than one line with the same field, period and date. I needed the code to then put the same application number in both equal lines.
Hi, can you provide a sample data including that scenario and the updated desired result?
Hi @jobf ,
But you can try to rank only the unique dates within each Field and Period.:
Application =
VAR UniqueRank =
RANKX(
FILTER(
ADDCOLUMNS(
SUMMARIZE('Table', 'Table'[Field], 'Table'[Period], 'Table'[Date]),
"Rank", 'Table'[Date]
),
'Table'[Field] = EARLIER('Table'[Field]) &&
'Table'[Period] = EARLIER('Table'[Period])
),
'Table'[Date],
,
ASC,
DENSE
)
RETURN UniqueRank
The output will look like this:
I updated the statement and tables.
Hi @jobf ,
Use this DAX:
Application =
VAR UniqueRank =
RANKX(
FILTER(
ADDCOLUMNS(
SUMMARIZE('Table', 'Table'[Field], 'Table'[Period], 'Table'[Date]),
"Rank", 'Table'[Date]
),
'Table'[Field] = EARLIER('Table'[Field]) &&
'Table'[Period] = EARLIER('Table'[Period])
),
'Table'[Date],
,
ASC,
DENSE
)
RETURN UniqueRank
The output will look like this:
Hey @jobf,
Please check if this thread helps to solve your issue:
https://community.fabric.microsoft.com/t5/Desktop/TOP-N-by-few-columns/m-p/4406944#M1372085
Just an alternative solution, if anyone was interested, for adding calculated column using RANK function: