BIP 中可选多选参数的正确语法

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

我有一个在 Oracle OTBI 中作为数据分析编写的查询,我在 BIP 数据模型中使用它,并且正在为 Oracle BI EE 逻辑 SQL 构建参数。下面的参数 :P_Item_Number 我想在 WHERE 子句中用作可选的多选参数,用户可以选择 1 个或多个项目编号,他们可以将其设置为 All,以便它不会过滤项目.

AND ("Main"."Item" IN(IFNULL(:P_Item_Number, null)) or :P_Item_Number IS NULL)

我在尝试验证该声明时收到以下错误:

 java.io.IOException: prepare query failed[nQSError: 43113] Message returned from OBIS. [nQSError: 43119]
 Query Failed: [nQSError: 46033] Datatype: 25 is not supported.

:P_Item_Number
参数是用于多重选择的字符串参数设置:

enter image description here

我需要更新什么语法才能使其正常工作?预先感谢。

obiee bi-publisher
3个回答
0
投票

在你的Where子句中输入如下内容:

...  ...  ...
WHERE ITEM IN(:P_ITEM_NUMBER)
...  ...  ...


定义参数(P_ITEM_NUMBER:类型:菜单)时,选择选项“所有值已通过”,这意味着所有选定的值(可以是1,大于1或全部
添加
以下是测试屏幕示例。如果您定义得正确,那么如果选中 All 的左侧 - 您将获得列出的所有参数,如果未选中但选中了 1 个或多个选项,您将获得它们,如果未选中任何内容,则不会出现任何内容选定... enter image description here


0
投票

我很幸运地使用了Where语句的这种结构,当然可以替换你的值:

WHERE (papf.person_number IN (:personnumber) OR 'All' IN (:personnumber || 'All'))


0
投票

我在此找到的最好的文本参数如下:

AND (IFNULL("Main"."Item", 'NULL') IN (:P_Item_Number) OR IFNULL("Main"."Item", 'NULL') IN (CASE WHEN 'null' IN (:P_Item_Number) THEN IFNULL("主"."项目", 'NULL') END))

默认情况下,当值为空时,OBIEE 参数显示文本值“null”。 这与 NULL 不同。

我发现,如果值为 NULL,某些参数在创建文本值时也会做得更好,因此使用 IFNULL 函数。 但您可以键入您选择的任何单词来替换 NULL。 它不一定是“NULL”。

希望这有帮助。

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