首页 > 解决方案 > 如何编写具有多个条件的 if 语句来创建计算列

问题描述

所以这可能很容易,但不知何故我找不到可行的解决方案。我的问题如下:

例子:

我有一个文本列 A ,其中包含以下字符串(每个字符串位于不同的行):

“DtD 24”;“SGK 12”;“STD 99”等

现在我想做的是编写一个公式,逐行检查上述列,并且

  1. 当它在字符串中的某处找到“12”时,它应该返回“12”作为该行的值
  2. 当它在字符串中的某处找到“24”时,它应该返回“24”作为该行的值

...等等类似4种不同的情况。

我试图用 switch()、if()、find() 找到解决方案,但似乎都没有。有没有人给我一些提示什么是解决这个问题的聪明方法?

非常感谢你!

标签: ssisssasdaxcalculated-columnsssas-tabular

解决方案


这个公式应该适合你。您可以通过添加 IF 语句来扩展它以检查更多数字。请检查您正在运行的 SSAS 版本,因为 CONTAINSSTRING 函数仅适用于 >= SSAS 2019 CTP2.3。

Column =
IF (
    CONTAINSSTRING ( 'Table'[Column A], "12" ),
    12,
    IF (
        CONTAINSSTRING ( 'Table'[Column A], "24" ),
        24,
        IF ( CONTAINSSTRING ( 'Table'[Column A], "99" ), 99, BLANK () )
    )
)

如果您在旧版本上运行,您可以尝试不太清晰的 SEARCH 功能:

Column =
IF (
    (SEARCH("12", [Column A], 1, 0) > 0),
    12,
    IF (
        (SEARCH("24", [Column A], 1, 0) > 0),
        24,
        IF ( (SEARCH("99", [Column A], 1, 0) > 0), 99, BLANK () )
    )
)

推荐阅读