ssis - 如何编写具有多个条件的 if 语句来创建计算列
问题描述
所以这可能很容易,但不知何故我找不到可行的解决方案。我的问题如下:
- 在 ssas 的表格模型中,我想创建一个计算列
- 如果满足某个条件,则应检查另一列的每一行,并根据满足哪个条件,将一个值返回到计算列中
例子:
我有一个文本列 A ,其中包含以下字符串(每个字符串位于不同的行):
“DtD 24”;“SGK 12”;“STD 99”等
现在我想做的是编写一个公式,逐行检查上述列,并且
- 当它在字符串中的某处找到“12”时,它应该返回“12”作为该行的值
- 当它在字符串中的某处找到“24”时,它应该返回“24”作为该行的值
...等等类似4种不同的情况。
我试图用 switch()、if()、find() 找到解决方案,但似乎都没有。有没有人给我一些提示什么是解决这个问题的聪明方法?
非常感谢你!
解决方案
这个公式应该适合你。您可以通过添加 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 () )
)
)
推荐阅读
- python - 为什么添加我自己的函数时我的lambdify不起作用
- ruby - 是否有另一种方法可以在 Ruby 中使用 while 循环仅获取最后加载的数据
- android - AppBarLayout 不会折叠
- javascript - PHP 在通过 Javascript 传递时在 HTML 中被注释掉
- php - MAMP phpmyadmin 上的脚本超时传递错误
- powershell - 以毫秒为单位将 UTC 转换为 UNIX 纪元
- openshift - 在 oc 补丁的 jsonpath 中包含变量(openshift CLI 操作)
- c - C中的简单凯撒密码,无需用户输入
- c# - Blazor 替代 JS window.location.href
- clojure - Clojure - 用apply调用的函数的参数太多