在 Power BI DAX 中最后一次出现空格后提取值

Joe*_*Joe 3 dax powerbi

我有这样的数据:

  • lm-样品产品
  • lm 样品产品
  • lm-exit 非产品共享
  • lm- 值开发

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

  • 产品
  • 产品
  • 非产品共享
  • 开发

我试过:

Env = 
Var FirstSpace = FIND(" ", 'AWS Reservations'[Account])
Return RIGHT('AWS Reservations'[Account],FirstSpace - 1)
Run Code Online (Sandbox Code Playgroud)

但这给了我奇怪的结果。将不胜感激解决此问题的一些帮助。谢谢。

Fox*_* Ng 8

缺少从字符串末尾搜索FINDSEARCH搜索的选项使得这非常棘手。

您可以使用:

Env = TRIM(RIGHT(SUBSTITUTE('AWS Reservations'[Account], " ", REPT(" ", LEN('AWS Reservations'[Account]))), LEN('AWS Reservations'[Account])))
Run Code Online (Sandbox Code Playgroud)

或者分解它以便更好地理解:

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

lm-sample prod作为一个例子。

首先,我们使用REPT(" ", string_length)创建一个字符串

“ ”
它的长度与 value 相同lm-sample prod

然后,我们用这个超长的替换所有出现的“”

“ ”
并且字符串将变成
lm-样品产品

之后,我们会很舒服地string_length从右边获取 的子串,即

“产品”

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

结果:

结果

参考

  • @Joe `FIND(" ", 'AWS Reservations'[Account])` 给你第一次出现的空间,而不是最后一次,所以另一个答案实际上是错误的。https://i.stack.imgur.com/VYYry.png (2认同)