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>
我可以使用 generateReportSQL 的 filterExpressions 标记来创建在 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:如何在保存的过滤器中设置“提示”值的主要内容,如果未能解决你的问题,请参考以下文章
在 servlet 过滤器中设置托管 Bean 的值。 [关闭]