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

How can I group data by matching identical cells in same column then counting instances of a related column?

data output

我是 Webi 的新手,在创建变量时遇到了问题。我正在尝试检查每个实体遗留帐号是否有超过 1 个电子邮件地址,以及是否有 1 个联系人姓名包含 "Annual Report"。因此,当我将每个实体遗留帐号标记为无电子邮件时,只有那些没有包含 "Annual Report" 的联系人姓名的帐号才会被提取。在上面的示例中,只有黄色组应称为无电子邮件。现在他们都被拉进了没有电子邮件的状态。我尝试过使用 if 和 match,因为它们是我最熟悉的。有人有什么建议吗?

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

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*".
  • 匹配
  • 重要的是我在要查找的字符串末尾只有一个星号 ("*")。这只会找到相应列值以该字符串开头的匹配项。如果您希望无论何时在所搜索的列中的任何位置找到该字符串,它都为真,那么两端都是星号。
  • 您还可以在查询过滤器中加入限制条件。但这里是事情可能变得混乱的地方。在查询过滤器中,您可以选择 Matches pattern 运算符。但是,通配符不同(“%”而不是“*”)并且您没有在搜索文本两边加上双引号。所以你会有这样的东西......

    Contact EmailAddress Matches pattern noemail%

    AND

    Contact Name Different from pattern Annual Report%

    我相信您注意到我没有将搜索文本转换为大写。在查询面板中,Web Intelligence 区分大小写 in,并且可能会遵循源数据数据库的区分大小写。我们所有的数据库都不区分大小写,因此如果您的数据库区分大小写,您可能需要稍微解决一下这个问题。或者按照我最初提出的创建变量和报告过滤器的方法。

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

希望这对您有所帮助,

诺尔