Webi 中的 SAP BO 4.2 SP07 inList 子句

问题描述

我可以在 InList 子句中使用另一列吗?

例如, 我创建了一个变量,下面是公式。

IF [query1.column1] inList ([query2.column2]) then SUM([query1.amountColumn])
Else 0

OR 是否可以在公式中的 inList 之后放置变量?

如果不可能 - 还有其他替代方法吗?

解决方法

我看到了两种可能的方法。我将在两种解决方案中使用 eFashion Universe。

解决方案#1

这是我要开始的 2 个查询...

enter image description here

enter image description here

运行您的查询。单击要比较的列,在您的情况下为 [query1].[column1] 和 [query2].[column2]; [查询 1].[月] 和 [查询 2].[月] 对我来说。右键单击并合并它们。它们必须是维度且具有相同的数据类型。

enter image description here

现在创建一个基于 [查询 2].[月份名称] 的变量,您可以过滤该变量以消除 查询 1 中与查询 2 中的任何内容都不匹配的结果

[UV 月份名称]=[查询 2].[月份名称]

这里的关键是您需要将资格更改为“详细信息”并将关联维度设置为我们刚刚通过单击右侧三个点合并的内容。不是从任一查询中选择 [Month Name],而是从合并维度中选择。

enter image description here

现在使用查询 1 中您想要的任何对象构建您的表,并添加我们刚刚创建的变量。

enter image description here

现在在该变量上添加一个过滤器以仅显示它不为空的行。

enter image description here

大功告成。

enter image description here

优点

  • 在限制查询 (query2) 具有相对大量值时有效(与解决方案 #2 的缺点相比)。

缺点

  • 设置更复杂
  • 可能会遇到与过滤查询 (query1) 相关的 Universe 或性能问题。

解决方案#2

以解决方案 #1 为基础,我复制了查询 1 并将其重命名为 查询 3。现在您可以选择“来自另一个查询的结果”来获取您想要的 [query1].[colunmn1] InList ([query2].[column2]) 逻辑。

enter image description here

如果采用这种方法,则不需要进行合并、变量和过滤。查询的结果在被报表返回之前进行过滤。

优点

  • 简单

缺点

  • 来自您的第二个查询的值的数量必须相对较少。它因数据库甚至您的宇宙而异。我发现如果它超过 1,000 个值,我会在运行查询时收到一个错误,说它“太复杂”了。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...