如何通过匹配相同列中的相同单元格然后计算相关列的实例来对数据进行分组?

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

data output

我对Webi很陌生,并且在创建变量时遇到了问题。我正在尝试检查每个实体旧版帐号是否有超过1个电子邮件地址,以及其中一个联系人姓名是否包含“年度报告”。因此,当我标记每个实体的遗留帐号时,不会发送电子邮件,只会删除没有包含“年度报告”的联系人姓名的帐号。在上面的示例中,只应将黄色组称为无电子邮件。现在所有这些都没有收到任何电子邮件。我尝试使用if和match,因为那些是我最熟悉的。有没有人有什么建议?

business-objects webi
1个回答
0
投票

有很多方法可以做到这一点。我将使用两个变量给出一个示例,但您可以轻松地将它们合并为一个变量。

Has No Email Var=If(Match(Upper([Contact EmailAddress]); "NOEMAIL*"); 1; 0)
Annual Report Contact Name Var=If(Match(Upper([Contact Name]); "ANNUAL REPORT*"); 1; 0)

然后,您将应用包含两个组件的报表过滤器...

Has No Email Var = 1 
AND
Annual Report Contact Name Var = 0

让我解释几件事......

  • Upper函数的目的是Match函数区分大小写。如果您知道您的电子邮件地址总是小写,那么您可以删除Upper函数并使其与“noemail *”匹配。
  • 重要的是,我只在要搜索的字符串的末尾有一个星号(“*”)。这只会找到一个匹配,其中相应的列值以该字符串开头。如果您希望每当在被搜索列中的任何位置找到该字符串时它都是真的,那么两端都会是星号。
  • 您还可以在查询过滤器中添加限制条件。但这里的事情可能会令人困惑。在查询过滤器中,您可以选择“匹配”模式运算符。但是,通配符不同(“%”而不是“*”),并且不会在搜索文本周围加上双引号。所以你会有这样的事...... 联系EmailAddress匹配模式noemail% 和 联系人姓名与模式年度报告不同% 我相信你注意到我没有将搜索文本转换为大写。在查询面板中,Web Intelligence不区分大小写,可能会遵循源数据数据库的区分大小写。我们所有的数据库都不区分大小写,所以如果你的大小写区分大小写,你可能需要稍微解决这个问题。或者按照我最初的布局,采用创建变量和报告过滤器的方法。
  • 如果你想要一个单个字符的通配符而不是多个字符(这就是“*”和“%”会做什么)你需要使用“?”在您的变量定义中或查询过滤器中的“_”。

希望这可以帮助,

诺埃尔

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