如何在直接数据库请求 (DDR) 过滤器查询中创建或设置变量?

How to create or set a variable inside Direct Database Request (DDR) filter query?

我无法使用 Direct Database Request (DDR) 作为过滤器查询。 要求是使用基于 DDR 的查询过滤我基于主要主题区域的查询中的邮政编码,该查询执行 REGEXP 函数,如下所述。

有什么方法可以在我的过滤器查询中定义或设置演示或请求变量的值吗?

我还可以尝试哪些其他方法? 由于在我的 NQSConfig.INI 文件中不受支持,REGEXP 函数无法通过 OBIEE 分析中的 EVALUATE() 函数传送到 RPD。 而且,这是一个 Oracle Sales Cloud 实例,所以我无权修改我的 NQSConfig.INI 文件。


到目前为止我尝试过的:

我使用 RPD 中定义的连接池在 OBIEE 中创建了一个 DDR。

此查询检索所有非数字的邮政编码:
SELECT hz_parties.party_id, hz_parties.postal_code FROM HZ_PARTIES where REGEXP_INSTR(Substr(HZ_PARTIES.POSTAL_CODE,0,2), '[0-9]{2}') = 0

这行得通。

但我有一个基于 OBIEE 主题领域的分析,它需要使用运算符 is based on results of another analysis 的过滤器,使用 DDR 并匹配其 party_id 列。

这是我的主要 OBIEE 分析生成的错误和 SQL:

Error Details Error Codes: YQCO4T56:OPR4ONWY:U9IM8TAC:OI2DL65P Location: saw.views.evc.activate, saw.httpserver.processrequest, saw.rpc.server.responder, saw.rpc.server, saw.rpc.server.handleConnection, saw.rpc.server.dispatch, saw.threadpool.socketrpcserver, saw.threads Odbc driver returned an error (SQLExecDirectW). State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 43113] Message returned from OBIS. [nQSError: 27047] Nonexistent table: "EXECUTE". (HY000) SQL Issued: {call NQSGetLevelDrillability('SELECT "Contact"."Contact Row ID" saw_0 FROM "Sales - CRM Customers and Contacts Real Time" WHERE "Contact"."Contact Row ID" IN (SELECT saw_0 FROM (EXECUTE PHYSICAL CONNECTION POOL "CRM_OLTP"."Connection Pool" SELECT hz_parties.party_id, hz_parties.postal_code FROM HZ_PARTIES where REGEXP_INSTR(Substr(HZ_PARTIES.POSTAL_CODE,0,2), ''[0-9]{2}'') = 0 ) nqw_1 )')}

鉴于您使用的是云产品,我认为这听起来像是您应该打开一个 SR :)