在Power BI DAX中提取最后一个空格后面的值

3

我有这样的数据:

  • lm-sample prod
  • lm sample prod
  • lm-exit nonprod-shared
  • lm- value dev

我想提取右边第一个空格后面的最后一个值。所以在这个例子中:

  • prod
  • prod
  • nonprod-shared
  • dev

我尝试了:

Env = 
Var FirstSpace = FIND(" ", 'AWS Reservations'[Account])
Return RIGHT('AWS Reservations'[Account],FirstSpace - 1)

但是这给出了奇怪的结果。希望能得到解决方案的帮助。谢谢。
3个回答

12

由于缺乏从字符串结尾开始搜索的选项,使用FINDSEARCH变得相当棘手。

您可以使用以下方法:

Env = TRIM(RIGHT(SUBSTITUTE('AWS Reservations'[Account], " ", REPT(" ", LEN('AWS Reservations'[Account]))), LEN('AWS Reservations'[Account])))

或者将其分解以便更好地理解:

Env = 
VAR string_length = LEN('AWS Reservations'[Account])
RETURN
TRIM(
    RIGHT(
        SUBSTITUTE(
            'AWS Reservations'[Account],
            " ",
            REPT(" ", string_length)
        ),
        string_length
    )
)

lm-sample prod 为例。

首先,我们使用 REPT(" ", string_length) 创建一个长度与值 lm-sample prod 相同的字符串

"              "

然后,我们用这个额外长的字符串替换所有的空格,并使字符串变为

lm-sample              prod

接下来,我们轻松获取从右边开始长度为 string_length 的子字符串,即

"          prod"

最后,我们修剪结果以获得我们想要的prod

结果:

results

参考


不确定该如何给两个答案都应有的认可。下面的这个答案也是一个很好的选项。谢谢! - Joe
2
@Joe FIND(" ", 'AWS Reservations'[Account]) 给出的是第一个空格的位置,而不是最后一个,所以另一个答案实际上是错误的。https://i.stack.imgur.com/VYYry.png - Foxan Ng

0

您传递给RIGHT()函数的是起始字符索引,而不是所需字符数。

Right(Text, NumberOfCharacters)

尝试这样做:

Env = 
Var FirstSpace = FIND(" ", 'AWS Reservations'[Account])
Return RIGHT('AWS Reservations'[Account], LEN('AWS Reservations'[Account]) - FirstSpace)

0
一个小的澄清可能会帮助其他人:如果你正在搜索由除空格以外的其他字符分隔的字符串部分的最后一个实例,比如句点(.),例如从“first.second.third”中获取“third”,你需要在第一个“ ”中用句点替换空格,但保留第二个“ ”,因为那是“extra long”的字符串,被TRIM掉了...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接