This time we’re going bigger than ever. Fabric, Power BI, SQL, AI and more. We're covering it all. You won't want to miss it.
Learn moreLevel up your Power BI skills this month - build one visual each week and tell better stories with data! Get started
Is there any way to achieve a reverse look up that returns the memeber position on the path?
I have this
| rowNum | pathString | individiualValue |
|--------|------------------|------------------|
| 1 | 6000|5000|4000 | 6000 |
| 1 | 6000|5000|4000 | 4000 |
| 2 | 8000|9000|7000 | 1000 |
| 3 | 8000|9000|7000 | 8000 |
I want to end up with this
| rowNum | pathString | individiualValue | position |
|--------|------------------|------------------|----------|
| 1 | 6000|5000|4000 | 6000 | 1 |
| 1 | 6000|5000|4000 | 4000 | 3 |
| 2 | 8000|9000|7000 | 1000 | |
| 3 | 8000|9000|7000 | 8000 | 1 |
I can currently achieve it with this
Table =
VAR baseTbl =
DATATABLE (
"rowNum", INTEGER,
"pathString", STRING,
"individiualValue", STRING,
{
{ 1, "6000|5000|4000", "6000" },
{ 1, "6000|5000|4000", "4000" },
{ 2, "8000|9000|7000", "1000" },
{ 3, "8000|9000|7000", "8000" }
}
)
VAR modTbl =
SUMMARIZE ( baseTbl, [rowNum], [pathString] )
VAR lookupTbl =
GENERATE (
modTbl,
ADDCOLUMNS (
GENERATESERIES ( 1, PATHLENGTH ( [pathString] ) ),
"ind", PATHITEM ( [pathString], [Value], TEXT )
)
)
VAR res =
GENERATEALL (
baseTbl,
VAR ky1 = [rowNum]
VAR ky2 = [pathString]
VAR ky3 = [individiualValue]
RETURN
SELECTCOLUMNS (
FILTER ( lookupTbl, [rowNum] = ky1 && [pathString] = ky2 && [ind] = ky3 ),
"position", [Value]
)
)
RETURN
res
But is there a built-in syntax available to tackle this or any other optimized way?
Solved! Go to Solution.
Try this as a calculated column:
position =
MINX (
FILTER (
GENERATESERIES ( 1, PATHLENGTH ( [pathString] ) ),
PATHITEM ( [pathString], [Value] ) = [individualValue]
),
[Value]
)
Try this as a calculated column:
position =
MINX (
FILTER (
GENERATESERIES ( 1, PATHLENGTH ( [pathString] ) ),
PATHITEM ( [pathString], [Value] ) = [individualValue]
),
[Value]
)
👍
If the length of the string you are looking for is always the same can you do it mathematically?
Position =
VAR _Search = SEARCH('Table'[individiualValue],'Table'[pathString],1,BLANK())
RETURN IF ( NOT ISBLANK ( _Search ), ( _Search - 1 ) / 5 + 1 )
Hi, my friend, List.PositionOf() from PQ asked me to pass a message on to you, this task is totally a light weight for it.
| Thanks to the great efforts by MS engineers to simplify syntax of DAX! Most beginners are SUCCESSFULLY MISLED to think that they could easily master DAX; but it turns out that the intricacy of the most frequently used RANKX() is still way beyond their comprehension! |
DAX is simple, but NOT EASY! |
Appreciate !!! but I need a DAX solution.
Sign up to receive a private message when registration opens and key events begin.
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
| User | Count |
|---|---|
| 31 | |
| 23 | |
| 23 | |
| 19 | |
| 16 |
| User | Count |
|---|---|
| 62 | |
| 36 | |
| 30 | |
| 25 | |
| 21 |