Найти последнее значение после точки в DAX, например в value1.value2.value3 находит значение3 - PullRequest
0 голосов
/ 07 января 2019

У меня есть столбец с точечным значением, например,

project.phase.task
project.task
project.phase.subphase.task

в каждом экземпляре я хочу последнее значение в точках. Я использую функцию DAX:

lastVal = 
var i = FIND(".",'My Table'[wbs],1,-1)
return
if(i>0,mid('My Table'[wbs],i+1,99),"")

Функция FindLast отсутствует. Как бы я смоделировал это? Это было бы аналогично проблеме с расширением файла в имени файла или пути.

Ответы [ 3 ]

0 голосов
/ 07 января 2019

Вы можете сделать это с DAX.

Как вычисляемый столбец:

lastVal = 
    PATHITEMREVERSE ( 
        SUBSTITUTE ( 
            'My Table'[wbs],
            ".",
            "|"
        ),
        1
    )

В качестве меры:

lastValMeasure = 
VAR MyString = 
    IF ( 
        HASONEVALUE ( 'My Table'[wbs] ),
        FIRSTNONBLANK ( 'My Table'[wbs], 1 ),
        BLANK()
    )
RETURN
    PATHITEMREVERSE ( 
        SUBSTITUTE ( 
            MyString,
            ".",
            "|"
        ),
        1
    )
0 голосов
/ 07 января 2019

Вы можете превратить строку в индексированный список символов, а затем взять символы после максимально индексированного ..

Это должно работать как вычисляемый столбец:

lastVal =
VAR String = 'My Table'[wbs]
VAR StringLength = LEN ( String )
VAR StringToTable =
    ADDCOLUMNS (
        GENERATESERIES ( 1, StringLength ),
        "Char", MID ( String, [Value], 1 )
    )
VAR LastDot = MAXX ( FILTER ( StringToTable, [Char] = "." ), [Value] )
RETURN
    RIGHT ( String, StringLength - LastDot )

Если вам это нужно в качестве меры, просто отрегулируйте переменную String, чтобы получить соответствующий агрегат. Например, MAX('My Table'[wbs]) или FIRSTNONBLANK('My Table'[wbs], 'My Table'[wbs]).

0 голосов
/ 07 января 2019

Вам не нужно делать это с DAX. Вы можете использовать Split Column функцию Query Editor, чтобы получить часть текста после крайней правой точки.

enter image description here

...