Ich arbeite mit Mondrian und ich habe einige Code-Definition, die gut funktioniert. Jetzt möchte ich auf meinem Code ein anderes Datenbankschema festlegen, von dem aus mondrian die Abfrageergebnisse erhalten würde, aber ich kann nicht finden, wo das zu tun ist.Mondrian - Set-Datenbank-Schema-Definition
Mondrian Cube-Definition ist wie folgt:
<Schema name="Cubo">
<Cube name="PERM_PD" cache="true" enabled="true">
<Table name="FACT_PERM_PD">
</Table>
<Dimension foreignKey="STE_ID" highCardinality="false" name="ESTADO">
<Hierarchy name="ESTADO" hasAll="true" allMemberName="Todos" primaryKey="STE_ID">
<Table name="OLAP_ESTADO">
</Table>
<Level name="ESTADO.STE_NAME" table="OLAP_ESTADO" column="STE_NAME" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
</Hierarchy>
</Dimension>
<Dimension foreignKey="TIPO_ID" highCardinality="false" name="TIPO_DOCUMENTO">
<Hierarchy name="TIPO_DOCUMENTO" hasAll="true" allMemberName="Todos" primaryKey="TIPO_ID">
<Table name="OLAP_TIPO_DOCUMENTO">
</Table>
<Level name="TIPO_DOCUMENTO.TIPO_NAME" table="OLAP_TIPO_DOCUMENTO" column="TIPO_NAME" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
</Hierarchy>
</Dimension>
<Dimension highCardinality="false" name="FECHA">
<Hierarchy name="FECHA" hasAll="true" allMemberName="Todos">
<Level name="DATE.YEAR" column="YEAR" type="Numeric" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
<Level name="DATE.MONTH" column="MONTH" type="Numeric" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
<Level name="DATE.DAY" column="DAY" type="Numeric" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
<Level name="DATE.HOUR" column="HOUR" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
</Hierarchy>
</Dimension>
<Dimension foreignKey="TEMA_ID" highCardinality="false" name="TEMA">
<Hierarchy name="TEMA" hasAll="true" allMemberName="Todos" primaryKey="TEMA_ID">
<Table name="OLAP_TEMA">
</Table>
<Level name="TEMA.TEMA_NAME" table="OLAP_TEMA" column="TEMA_NAME" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
</Hierarchy>
</Dimension>
<Dimension highCardinality="false" name="DOC">
<Hierarchy name="DOC" hasAll="true" allMemberName="Todos">
<Level name="DOC_ID" column="DCMT_ID" type="Numeric" uniqueMembers="true" levelType="Regular" hideMemberIf="Never">
</Level>
</Hierarchy>
</Dimension>
<Measure name="TIEMPO TOTAL" column="UNIDAD_TIME" datatype="Integer" formatString="#.##0" aggregator="sum">
</Measure>
<Measure name="DIAS" column="UNIDAD_TIME" datatype="Numeric" formatString="#,###.####" aggregator="avg">
</Measure>
</Cube>
</Schema>
Und ich habe die followin Mondrian Query-Definition:
<%@ page session="true" contentType="text/html; charset=ISO-8859-1" %>
<%@ taglib uri="http://www.tonbeller.com/jpivot" prefix="jp" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<% String iUrl = request.getParameter("iUrl");
String docLink = "../" + iUrl + "/AbrirDocServlet?id={0}";%>
<jp:mondrianQuery id="query01" dataSource="jdbc/olapDB" catalogUri="/WEB-INF/queries/Cubo.mondrian.xml">
select NON EMPTY {[Measures].[DIAS]} ON COLUMNS,
NON EMPTY {([TIPO_DOCUMENTO.TIPO_DOCUMENTO].[Todos], [TEMA.TEMA].[Todos], [DEPENDENCIA.DEPENDENCIA].[Todos], [FECHA.FECHA].[Todos], [DOC.DOC].[Todos])} ON ROWS from [PERM]
<jp:clickable urlPattern="<%=docLink%>" uniqueName="[DOC.DOC]"/>
</jp:mondrianQuery>