OBIEE 计数不考虑应用的过滤器

Posted

技术标签:

【中文标题】OBIEE 计数不考虑应用的过滤器【英文标题】:OBIEE count doesnt take into account applied filters 【发布时间】:2018-12-26 10:37:20 【问题描述】:

我正在使用 OBIEE,最近我不得不创建包含以下列的简单分析:

Day
Department
Count of sold items

它们都是属性列。

过滤器是

Day = current day
Department = dep 01

但是在结果中,我看到的已售商品数量不是当天而是所有时间。

我尝试创建在OTHER 维度中计数并在TIME 维度中与级别天数相加的逻辑列。但它显示相同的数字。

可能是什么原因以及如何解决?任何帮助将不胜感激。

编辑

我通过添加被计入标准的item_id 然后将其隐藏在列属性中来获得所需的结果。然后我将它排除在视图属性中,从而产生正确的数据。但这总是必要的行动吗?

【问题讨论】:

rpd 中是否定义了“已售商品计数”? @VictorHDC,最初,它没有在 rpd 中定义。由于每个项目都有自己的唯一 ID,因此我在列公式中使用了 Count("subject Area"."Item_id")。即使我在 rpd 中定义了时间维度和每日级别的聚合,它也显示了错误的数字 你能附上一张你的物理图吗?是否有 3 个维度(部门、产品、时间)和一个销售事实表? 【参考方案1】:

获取由 OBIEE 执行的物理查询以比较您的不同版本:

    编辑您的分析,转到“高级”选项卡并复制已发布的 SQL。 进入“管理”并点击“发出SQL”

    复制第 1 步发出的 SQL 并在顶部添加这一行:

    设置变量 OBIS_REFRESH_CACHE=1,LOGLEVEL=2;

    点击问题 SQL

    在管理菜单中,单击“管理会话”并按创建时间降序排序 在语句中查找包含您的 SQL 的记录,然后单击“查看日志” 日志应包含物理查询,因为它是使用日志级别 2 执行的,请查找文本“将查询发送到名为的数据库” 将此物理查询与您通过包含隐藏 item_id 获得的查询进行比较

您也可以尝试在 rpd 中定义指标而不设置聚合级别,只需在项目 id 上使用 count distinct 并将所有级别保留为默认值,看看会发生什么。

【讨论】:

感谢@VictorHDC的回复,我按照你说的做了,日志中唯一的区别是隐藏item_id的那个在group by和order by子句中添加了item_id。其他都一样 您的指标在 rpd 中是如何定义的?您是否尝试过对项目 ID 进行计数? 数据库表中没有具有项目计数值的列或属性,所以我在 rpd 中复制了 item_id 列,然后使用 sum 聚合没有结果。我也尝试过 count distinct ,但是当我这样做时,需要 3 秒才能执行的分析开始需要很长时间,比如一个小时。所以我没用过 您的销售事实表上有哪些列?出售的商品数量应该是一个衡量标准。一个简单的销售事实表如下所示:AMMOUNT, QUANTITY, FK_ITEM, FK_TIME,FK_DEPARTMENT 表中没有“售出商品数量”物理列,我在业务层复制了item_id并对其应用了计数聚合,然后重命名为“售出商品数量”。

以上是关于OBIEE 计数不考虑应用的过滤器的主要内容,如果未能解决你的问题,请参考以下文章

obiee12c 仪表板提示在分析过滤器之前运行

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

OBIEE 11g:基于过滤器调度报告

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

OBIEE 表达式按上一个营业日期过滤

通过高级 SQL 过滤器进行 OBIEE11g 日期操作/比较