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

时间:2019-03-26 15:29:44

标签: business-objects webi

data output

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

1 个答案:

答案 0 :(得分: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 功能,并将其与“ noemail *”匹配。
  • 重要的是,在要查找的字符串的末尾,我只有一个星号(“ *”)。这样只会在对应的列值以该字符串开头的情况下找到匹配项。如果您希望每当在要搜索的列中的任何位置找到该字符串时,它都为true,则您的两端都是星号。
  • 您还可以在查询过滤器中放入限制条件。但是在这里事情会变得混乱。在查询过滤器中,您可以选择匹配模式运算符。但是,通配符是不同的(“%”而不是“ *”),并且您不会在搜索文本两边加上双引号。所以你会有这样的事情...

      

    联系EmailAddress匹配模式noemail%

         

    AND

         

    联系人姓名与年度报告格式不同

    我确定您注意到我没有将搜索文本转换为大写。在查询面板中,Web Intelligence区分大小写( in ),并且可能会遵循源数据数据库的区分大小写。我们所有的数据库都不区分大小写,因此如果您的数据库区分大小写,则可能需要对此稍作处理。或者只是按照我最初设计的方法来创建变量和报告过滤器。

  • 如果您想要单个字符而不是多个字符的通配符(这是“ *”和“%”的作用),则需要使用“?”在变量定义中或查询过滤器中为“ _”。

希望这会有所帮助,

Noel