OBIEE:如何在保存的过滤器中设置“提示”值

Posted

技术标签:

【中文标题】OBIEE:如何在保存的过滤器中设置“提示”值【英文标题】:OBIEE: how to set 'is prompted' values in saved filter 【发布时间】:2018-01-17 14:27:27 【问题描述】:

我的任务是自动测试 OBIEE 报告数据。主要步骤是获取报表的逻辑SQL。

我有带有报告的仪表板。每个报告都附加了命名过滤器(不是内联过滤器)。所以,我想找到一种方法来设置过滤器值并以编程方式运行生成报告 SQL(以便用我的值填充 WHERE 子句),播放它并检索数据。我尝试了以下方法:

    OBIEE 网络服务。首先,我使用generateReportSQL,然后调用executeSQLQuery。这种方法适用于内联过滤器,我设法将它们设置在 .但我无法让它与保存的过滤器一起使用。如何使用为附加的已保存过滤器中的列设置的值生成报告?在文档或互联网上找不到任何信息。 生成仪表板 URL 并设置所有提示,运行它,然后读取使用情况跟踪表以检索 SQL 查询。但这似乎有点奇怪的方法,相信一定有更简单的方法来完成任务。此外,使用情况跟踪不会立即将有关报告执行的信息放入其数据库中,它有一些超时。有没有办法避免? runcat.sh + nqcmd - 仍然没有找到为已保存过滤器设置值的方法。

所以,我的问题是:如何生成报表的逻辑 SQL,并为附加的已保存过滤器设置提示值?

提前致谢, 乔尔

更新

一些例子:

    我的使用跟踪分析的 XML 包含以下内容:

      <saw:filter>
     <sawx:expr xsi:type="sawx:logical" op="and">
        <sawx:expr xsi:type="sawx:special" op="prompted">
           <sawx:expr xsi:type="sawx:sqlExpression">"S_NQ_ACCT"."START_DT"</sawx:expr>
        </sawx:expr>
        <sawx:expr xsi:type="sawx:special" op="prompted">
           <sawx:expr xsi:type="sawx:sqlExpression">"S_NQ_ACCT"."USER_NAME"</sawx:expr>
        </sawx:expr>
        <sawx:expr xsi:type="sawx:special" op="prompted">
           <sawx:expr xsi:type="sawx:sqlExpression">"S_NQ_ACCT"."SAW_DASHBOARD_PG"</sawx:expr>
        </sawx:expr>
     </sawx:expr>
    

我可以使用 generateReportSQLfilterExpressions 标记来创建在 WHERE 子句中包含我的值的逻辑 SQL。如果标签 filter 包含在分析的 XML 中,则一切正常(内联过滤器的情况,如上例所示):

      <v7:generateReportSQL>
         <v7:reportRef>
            <v7:reportPath>report path</v7:reportPath>
         </v7:reportRef>
         <v7:reportParams>
            <!--Zero or more repetitions:-->
            <v7:filterExpressions>            
<![CDATA[<sawx:expr xsi:type="sawx:string" op="equal" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:saw="com.siebel.analytics.web/report/v1.1" xmlns:sawx="com.siebel.analytics.web/expression/v1.1" subjectArea="Usage Tracking">
<sawx:expr xsi:type="sawx:sqlExpression">"S_NQ_ACCT"."USER_NAME"</sawx:expr>
<sawx:expr xsi:type="sawx:string">testuser</sawx:expr></sawx:expr>
]]>
</v7:filterExpressions>
.............................
         </v7:reportParams>
         <v7:sessionID>...</v7:sessionID>
      </v7:generateReportSQL>

    我的测试分析的 XML 包含以下内容:

      <saw:filter>
     <sawx:expr xsi:type="sawx:savedFilter" path="/shared/myproject/_filters/myroject/my saved filter" name="my saved filter" /></saw:filter>
    

“我保存的过滤器”有“提示”列,我想将其设置为我的值并运行分析以获取数据集。但是怎么做呢?

如果网络服务在这里没用,还能用什么?

【问题讨论】:

欢迎来到 Stack Overflow!请edit您的问题显示the code you have so far。您应该至少包含您遇到问题的代码的大纲(但最好是minimal reproducible example),然后我们可以尝试帮助解决具体问题。您还应该阅读How to Ask。 【参考方案1】:

由于这些通常用于内容方面的完全动态填充(从用户配置文件中提取的实例化变量、从提示中获取的内容等......)您不会在 LSQL 中获得它们。

tl;dr - Robin 写了一篇关于使用 LSQL 进行负载测试的帖子 https://www.rittmanmead.com/blog/2014/03/built-in-obiee-load-testing-with-nqcmd/

编辑:提出了基线验证工具 (BVT),这就是答案。

【讨论】:

感谢您的回复!实际上,我没有进行负载测试。我想测试分析生成的数据集。我有用于某些提示的标准具数据集,并希望将其与分析生成的数据进行比较(或比较 RPD 或目录更改前后的数据集)。我已经阅读了这篇文章,这通常是我想要做的,除了我需要将过滤列设置为一些值(不仅仅是分析的“基本”逻辑 SQL):rittmanmead.com/blog/2014/01/…问候,Jol 感谢您的更新。我的观点是:您不能使用正常保存的过滤器。您必须自己提供一个值,方法是使用包含文字值或变量调用的第二个(克隆的)已保存过滤器,或者在分析本身中用文字过滤器替换已保存的过滤器。或者,您可以将分析放在带有提供必要上下文的提示的仪表板上,然后使用基线验证工具 (BVT) 进行比较 非常感谢!看来 BVT 是我需要的!

以上是关于OBIEE:如何在保存的过滤器中设置“提示”值的主要内容,如果未能解决你的问题,请参考以下文章

如何设置提示? OBIEE12c / Oracle BI

如何过滤 obiee 分析但小计值?

在dojo过滤中设置第一项选择onChange

在 servlet 过滤器中设置托管 Bean 的值。 [关闭]

如何使用JAVA中的apache POI在Excel中设置/取消设置列过滤器的值?

如何在 Spring Boot 中设置过滤器链?