2015-09-04 42 views
1

我正在开发BI项目。我使用mondian olap服务器和jPivot。我在模式文件中使用星型模型。当我单击最后一个加深按钮进行深入分析时(从右侧开始),mdx查询将永久运行。在DB中只有大约5000条记录。我正在使用oracle数据库。第一个mdx查询是MDX查询需要永久运行在jPivot

SELECT NON EMPTY {[Measures].[Revenue]} ON COLUMNS, 
NON EMPTY ({([Stream].[All Stream],[Portfolio].[All Portfolio],[Serviceline].[All Serviceline], [Year].[All Year], [Month].[All Month], [Department].[All Department])}) ON ROWS 
FROM [RevenueBudget] 
WHERE ([Time].[201404] : [Time].[201508]) 

我试图在架构工作台上执行查询(第四级)。这几乎不需要40秒。执行。我也使用java profiler检查了后台sql查询。但它的好处大约一分钟。那么为什么jpivot花费这么长时间来显示记录,如果我正确的话它是jpivot的问题。任何帮助是高度期待的。

第四级MDX查询从Jpivot的MDX编辑忽视了低于

select NON EMPTY {[Measures].[Revenue]} ON COLUMNS, 
NON EMPTY Hierarchize(Crossjoin({[Stream].[All Stream]}, Union(Crossjoin({[Portfolio].[All Portfolio]}, Union(Crossjoin({[Serviceline].[All Serviceline]}, Union(Crossjoin({[Year].[All Year]}, Union(Crossjoin({[Month].[All Month]}, {[Department].[All Department]}), Crossjoin({[Month].[All Month]}, [Department].[All Department].Children))), Crossjoin({[Year].[All Year]}, Union(Crossjoin([Month].[All Month].Children, {[Department].[All Department]}), Crossjoin([Month].[All Month].Children, [Department].[All Department].Children))))), Crossjoin({[Serviceline].[All Serviceline]}, Union(Crossjoin([Year].[All Year].Children, Union(Crossjoin({[Month].[All Month]}, {[Department].[All Department]}), Crossjoin({[Month].[All Month]}, [Department].[All Department].Children))), Crossjoin([Year].[All Year].Children, Union(Crossjoin([Month].[All Month].Children, {[Department].[All Department]}), Crossjoin([Month].[All Month].Children, [Department].[All Department].Children))))))), Crossjoin({[Portfolio].[All Portfolio]}, Union(Crossjoin([Serviceline].[All Serviceline].Children, Union(Crossjoin({[Year].[All Year]}, Union(Crossjoin({[Month].[All Month]}, {[Department].[All Department]}), Crossjoin({[Month].[All Month]}, [Department].[All Department].Children))), Crossjoin({[Year].[All Year]}, Union(Crossjoin([Month].[All Month].Children, {[Department].[All Department]}), Crossjoin([Month].[All Month].Children, [Department].[All Department].Children))))), Crossjoin([Serviceline].[All Serviceline].Children, Union(Crossjoin([Year].[All Year].Children, Union(Crossjoin({[Month].[All Month]}, {[Department].[All Department]}), Crossjoin({[Month].[All Month]}, [Department].[All Department].Children))), Crossjoin([Year].[All Year].Children, Union(Crossjoin([Month].[All Month].Children, {[Department].[All Department]}), Crossjoin([Month].[All Month].Children, [Department].[All Department].Children)))))))))) ON ROWS 
from [RevenueBudget] 

其中([时间] [201304]。[时间] [201508])

模式的XML文件

<Schema name="RevenueBudget"> 
<Cube name="RevenueBudget" cache="true" enabled="true">  
<Table name="MVW_DIMENSION_TRANSACTIONS"> </Table> 
<Dimension name="Time" type="TimeDimension" foreignKey="DIMENSION_TRANSACTION_ID"> 
<Hierarchy hasAll="false" primaryKey="DIMENSION_TRANSACTION_ID"> 
    <Table name="MVW_DIMENSION_TRANSACTIONS"/> 
    <Level name="YEAR_MONTH" column="YEAR_MONTH" type="Numeric" uniqueMembers="false" 
     levelType="TimeYears"/>  
</Hierarchy> 
</Dimension> 
<Dimension type="StandardDimension" foreignKey="STREAM_MASTER_ID" name="Stream"> 
    <Hierarchy allMemberName="All Stream" defaultMember="All Stream" hasAll="true" primaryKey="STREAM_MASTER_ID"> 
    <Table name="MVW_STREAM_MASTERS"> 
    </Table> 
    <Level name="StrName" column="STREAM_DESCRIPTION" keyColumn="STREAM_MASTER_ID" nameColumn="STREAM_DESCRIPTION" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"> 
    </Level> 
    </Hierarchy> 
</Dimension>  
    <Dimension type="StandardDimension" foreignKey="PORTFOLIO_MASTER_ID" name="Portfolio"> 
    <Hierarchy allMemberName="All Portfolio" defaultMember="All Portfolio" hasAll="true" primaryKey="PORTFOLIO_MASTER_ID"> 
    <Table name="MVW_PORTFOLIO_MASTERS"> 
    </Table> 
    <Level name="PortfolioName" column="PORTFOLIO_DESCRIPTION" keyColumn="PORTFOLIO_MASTER_ID" nameColumn="PORTFOLIO_DESCRIPTION" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"> 
    </Level> 
    </Hierarchy> 
</Dimension> 
    <Dimension type="StandardDimension" foreignKey="SERVICELINE_MASTER_ID" name="Serviceline"> 
    <Hierarchy allMemberName="All Serviceline" defaultMember="All Serviceline" hasAll="true" primaryKey="SERVICELINE_MASTER_ID"> 
    <Table name="MVW_SERVICELINE_MASTERS"> 
    </Table> 
    <Level name="ServicelineName" column="SERVICELINE_DESCRIPTION" keyColumn="SERVICELINE_MASTER_ID" nameColumn="SERVICELINE_DESCRIPTION" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"> 
    </Level> 
    </Hierarchy> 
</Dimension> 
<Dimension type="StandardDimension" foreignKey="YEAR_ID" name="Year"> 
    <Hierarchy allMemberName="All Year" defaultMember="All Year" hasAll="true" primaryKey="YEAR_ID"> 
    <Table name="MVW_YEAR"></Table>  
    <Level name="YearId" column="YEAR" keyColumn="YEAR_ID" nameColumn="YEAR" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"> 
    </Level> 
    </Hierarchy> 
</Dimension> 
    <Dimension type="StandardDimension" foreignKey="MONTH_ID" name="Month"> 
    <Hierarchy allMemberName="All Month" defaultMember="All Month" hasAll="true" primaryKey="MONTH_ID"> 
    <Table name="MVW_MONTH"> 
    </Table> 
    <Level name="MonthName" column="MONTH" keyColumn="MONTH_ID" nameColumn="MONTH" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"> 
    </Level> 
    </Hierarchy> 
</Dimension>  
<Dimension type="StandardDimension" foreignKey="DEPARTMENT_MASTER_ID" name="Department"> 
    <Hierarchy allMemberName="All Department" defaultMember="All Department" hasAll="true" primaryKey="DEPARTMENT_MASTER_ID"> 
    <Table name="MVW_DEPARTMENT_MASTERS"> 
    </Table> 
    <Level name="DepartmentName" column="DEPARTMENT_DESCRIPTION" keyColumn="DEPARTMENT_MASTER_ID" nameColumn="DEPARTMENT_DESCRIPTION" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"> 
    </Level> 
    </Hierarchy> 
</Dimension> 
<Measure name="Revenue" column="REVENUE_AMOUNT" datatype="Numeric" aggregator="sum" visible="true"></Measure> 
</Cube> 
</Schema> 

回答

0

我不知道是否将设置移动到WITH子句有帮助?

WITH 
    SET [TargetSet] AS 
     [Stream].[All Stream]* 
     [Portfolio].[All Portfolio]* 
     [Serviceline].[All Serviceline]* 
     [Year].[All Year]* 
     [Month].[All Month]* 
     [Department].[All Department] 
SELECT 
    NON EMPTY 
    {[Measures].[Revenue]} ON COLUMNS 
,NON EMPTY 
    [TargetSet] ON ROWS 
FROM [RevenueBudget] 
WHERE 
    [Time].[201404] : [Time].[201508]; 
+0

对不起,这没有帮助。你需要jPivot工具的第四级mdx查询吗? –

+0

我不知道这意味着什么 - 但是把它扔进去,因为它可能会帮助某人 – whytheq

+0

我已经提到过我正在使用Jpivot。我点击加号按钮进行深入研究。首先,我点击所有部门,然后点击所有月份,然后点击所有服务项目。现在我在JPivot中生成的mdx查询称为第四级查询。你明白我的观点了吗?我添加该查询的问题,我也无法上传XML文件。 –