gpt4 book ai didi

java - Oracle OLAP Java 实现 - 正确的源连接

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:17:03 26 4
gpt4 key购买 nike

我正在尝试使用 Java API 实现以下目标:

enter image description here

为此,我使用 Oracle OLAP 下载部分的默认模式/示例 GLOBAL。

这是 Oracle OLAP Java 指南中代码的修改版本:

MdmCube unitsCube =
(MdmCube)mdmDBSchema.getTopLevelObject("PRICE_CUBE_AWJ");
MdmBaseMeasure mdmUnits =
(MdmBaseMeasure)unitsCube.getMeasure("UNIT_PRICE");
NumberSource units = (NumberSource)mdmUnits.getSource();

MdmPrimaryDimension mdmPRODDim = (MdmPrimaryDimension)mdmDBSchema.getTopLevelObject("PRODUCT_AWJ");
MdmLevelHierarchy mdmPRODHier = (MdmLevelHierarchy)mdmPRODDim.getDefaultHierarchy();

StringSource custHier = (StringSource)mdmPRODHier.getSource();

StringSource prodHier = (StringSource)mdmPRODHier.getSource();
Source famSel =
prodHier.selectValues(new String[] {"PRODUCT_PRIMARY::FAMILY::ACC",
"PRODUCT_PRIMARY::FAMILY::OS"});
Source querySource2 = units.join(timeSel).join(famSel).join(mdmPRODHier.getSource());

上面查询的结果是一个笛卡尔积,每个family与每个product hierarchy匹配为:

7: (PRODUCT_PRIMARY::CLASS::HRD--------PRODUCT_PRIMARY::FAMILY::ACC--------CALENDAR_YEAR::YEAR::CY1999--------*35.99375*--------)
8: (PRODUCT_PRIMARY::CLASS::HRD--------PRODUCT_PRIMARY::FAMILY::ACC--------CALENDAR_YEAR::YEAR::CY2000--------*32.9807070707071*--------)
9: (PRODUCT_PRIMARY::CLASS::HRD--------PRODUCT_PRIMARY::FAMILY::ACC--------CALENDAR_YEAR::YEAR::CY2001--------*36.8141666666667*--------)
10: (PRODUCT_PRIMARY::CLASS::HRD--------PRODUCT_PRIMARY::FAMILY::OS--------CALENDAR_YEAR::YEAR::CY1999--------*58.3433333333333*--------)
11: (PRODUCT_PRIMARY::CLASS::HRD--------PRODUCT_PRIMARY::FAMILY::OS--------CALENDAR_YEAR::YEAR::CY2000--------*62.113125*--------)
12: (PRODUCT_PRIMARY::CLASS::HRD--------PRODUCT_PRIMARY::FAMILY::OS--------CALENDAR_YEAR::YEAR::CY2001--------*65.7258333333333*--------)

正如我们在这里看到的,它匹配了 HRD(硬件)和 ACC(配件),它有一个值,但不应该有,因为ACC 属于类 SFT(软件)。请参阅随附的屏幕截图以供引用。

有没有办法排除,这样当我加入这两个来源时,只显示可能的值,这意味着在这种情况下 ACC 只会显示在 SFT 类,如屏幕截图所示。

我们非常欢迎您的帮助,

谢谢。

最佳答案

问题是您要加入同一维度两次。 PRODUCT_PRIMARY 维度同时提供类别和系列,因此当您说:

units.join(timeSel).join(famSel).join(mdmPRODHier.getSource());

您首先将其限制为您的两个 FAMILY 值,然后将其扩展回 PRODUCT_PRIMARY 层次结构中的所有内容。因此,笛卡尔积与所有产品匹配,无论系列如何,因为最终标准始终匹配。

我认为当您谈到“仅显示可能的值”时您想要的是您希望能够向上和向下钻取层次结构以找出 HRD 的有效子级是什么和 SFT 以及 OSACC 的有效父级是什么。 Oracle documentation从第 6-17 页开始的示例解释了如何执行此操作。

关于java - Oracle OLAP Java 实现 - 正确的源连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5714175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com