如何删除破折号后的所有内容并将剩余文本放在 DAX 中的 4 个字符上?

How to delete everything after a dash and put the remaining text on 4 characters in DAX?

我在 Visual Studio 中有一个 table Y2_Sales,其中包含一列“color”,其值如下:

85-GREY MARLE
90-BLACK
90-BLACK
1000-WHITE
49-NAVY
90-BLACK
3021-BONE

我想在我的模板中创建一个计算列并删除破折号后的所有内容并将剩余的数字放在 4 个字符上,这将给出:

0085
0090
0090
1000
0049
0090
3021

我试过这个公式,但它 returns 我 90- 如何删除最后一个破折号?

=LEFT([color],
IF (SEARCH("-",[color],1,0) > 0, 
    SEARCH("-",[color],1,0), 
        LEN([color])
         )
     )

有人可以帮我吗?

这在查询编辑器中更容易。您可以将自定义列定义为

Text.PadStart(Text.BeforeDelimiter([color], "-"), 4, "0")

但您也可以使用 DAX 来实现。

Padded =
VAR Length = SEARCH ( "-", [color], 1, 0 ) - 1
RETURN
    REPT ( "0", 4 - Length ) & LEFT ( [color], Length )

这里,Length 是破折号之前的字符串的长度,REPT 重复 0 以进行左填充。