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

问题描述 投票:0回答:2

我有这样的数据:

  • lm-sample prod
  • lm样品产品
  • lm-exit nonprod-shared
  • lm-值dev

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

  • nonprod共享
  • 开发

我试过了:

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

但这给了我奇怪的结果。希望得到一些帮助解决这个问题。谢谢。

powerbi dax
2个回答
0
投票

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

右(Text,NumberOfCharacters)

试试这个:

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

3
投票

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)创建一个字符串

"              "
which has the same length as the value lm-sample prod.

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

"              "
and the string will become
lm-sample              prod

在那之后,我们会很自在地从右边获取string_length的子串,即

"          prod"

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

结果:

results

Reference

© www.soinside.com 2019 - 2024. All rights reserved.