2016-04-08 3 views
-1

Ich benutze die neueste Saiku 3.8.3 Standalone und ich habe einige Probleme mit der Datenbank PostgreSQL 9.1 mit verschiedenen Schemas dann PUBLIC.Saiku 3 Standalone mit PostgreSQL - Mondrian Fehler bei Auswahl

machte ich die Datenquelle und es richtig angeschlossen, hier ist die Datenquelle ich ohne persönliche Daten verwenden bin:

type=OLAP 
name=chegadaturistas 
driver=mondrian.olap4j.MondrianOlap4jDriver 
location=jdbc:mondrian:Jdbc=jdbc:postgresql://DBNAME:PORT/DB;Catalog=mondrian:///datasources/chegada_turistas.xml;JdbcDrivers=org.postgresql.Driver; 
username=postgres 
password=PASSWORD 
security.enabled=false 

Ich habe auch das Mondrian Schema mit Legancy Option erstellt Ursache I Schema verwendet haben Werkbank. Dies ist das Schema die ich angelegt habe:

<Schema name="DEPES" description="DEPES"> 
    <Cube name="CHEGADAS" visible="true" cache="true" enabled="true"> 
    <Table name="chegada" schema="fato" alias="chegada"> 
    </Table> 
    <Dimension type="StandardDimension" visible="true" foreignKey="id_tempo" highCardinality="false" name="Ano"> 
     <Hierarchy name="ANO" visible="true" hasAll="true" allMemberName="Todos os Anos" primaryKey="id_tempo"> 
     <Table name="tempo" schema="dimensao" alias="Tempo"> 
     </Table> 
     <Level name="ANO" visible="true" column="nu_ano" nameColumn="nu_ano" ordinalColumn="nu_ano" type="Integer" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"> 
     </Level> 
     </Hierarchy> 
    </Dimension> 
    <Dimension type="StandardDimension" visible="true" foreignKey="id_origem" highCardinality="false" name="Origem"> 
     <Hierarchy name="Origem" visible="true" hasAll="true" allMemberName="Todas as Origens" primaryKey="id_origem"> 
     <Table name="origem" schema="dimensao"> 
     </Table> 
     <Level name="Continente" visible="true" column="no_continente" nameColumn="no_continente" ordinalColumn="no_continente" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"> 
     </Level> 
     <Level name="Pais" visible="true" column="no_pais" nameColumn="no_pais" ordinalColumn="no_pais" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"> 
     </Level> 
     </Hierarchy> 
    </Dimension> 
    <Dimension type="StandardDimension" visible="true" foreignKey="id_via" highCardinality="false" name="Via"> 
     <Hierarchy name="Via" visible="true" hasAll="true" allMemberName="Todas as Vias" primaryKey="id_via"> 
     <Table name="via" schema="dimensao"> 
     </Table> 
     <Level name="Nome" visible="true" column="id_via" nameColumn="no_via" ordinalColumn="no_via" type="Integer" uniqueMembers="true" levelType="Regular" hideMemberIf="Never"> 
     </Level> 
     </Hierarchy> 
    </Dimension> 
    <Dimension type="StandardDimension" visible="true" foreignKey="id_destino" highCardinality="false" name="Destino"> 
     <Hierarchy name="Destino" visible="true" hasAll="true" allMemberName="Todos os Destinos" primaryKey="id_destino"> 
     <Table name="destino" schema="dimensao"> 
     </Table> 
     <Level name="Regiao" visible="true" column="no_regiao" nameColumn="no_regiao" ordinalColumn="no_regiao" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"> 
     </Level> 
     <Level name="UF" visible="true" column="no_uf" nameColumn="no_uf" ordinalColumn="no_uf" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never"> 
     </Level> 
     </Hierarchy> 
    </Dimension> 
    <Dimension type="StandardDimension" visible="true" foreignKey="id_tempo" highCardinality="false" name="Mes"> 
     <Hierarchy name="Mes" visible="true" hasAll="true" allMemberName="Todos os Meses" primaryKey="id_tempo"> 
     <Table name="tempo" schema="dimensao"> 
     </Table> 
     <Level name="Nome do Mes" visible="true" column="nu_mes" nameColumn="no_mes" ordinalColumn="nu_mes" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"> 
     </Level> 
     <Level name="N&#250;mero do Mes" visible="true" column="nu_mes" nameColumn="nu_mes" ordinalColumn="nu_mes" type="Integer" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"> 
     </Level> 
     </Hierarchy> 
    </Dimension> 
    <Dimension type="StandardDimension" visible="true" foreignKey="id_tempo" highCardinality="false" name="Semestre"> 
     <Hierarchy name="Semestre" visible="true" hasAll="true" allMemberName="Todos os Semestres" primaryKey="id_tempo"> 
     <Table name="tempo" schema="dimensao"> 
     </Table> 
     <Level name="N&#250;mero do Semestre" visible="true" column="nu_semestre" nameColumn="nu_semestre" ordinalColumn="nu_semestre" type="Integer" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"> 
     </Level> 
     <Level name="Descri&#231;&#227;o do Semestre" visible="true" column="nu_semestre" nameColumn="no_semestre" ordinalColumn="no_semestre" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"> 
     </Level> 
     </Hierarchy> 
    </Dimension> 
    <Measure name="qt_chegada" column="qt_chegada" datatype="Integer" aggregator="sum" caption="Chegadas" description="Quantidade de Turistas" visible="true"> 
    </Measure> 
    </Cube> 
<Schema> 

Das Problem ist, wenn ich Saiku betreibe ich das Schema nicht sehen kann, und es hat diesen Fehler im Protokoll:

2016-04-08 08:17:31,976 WARN [mondrian.rolap.RolapSchema] Model is in legacy format 
2016-04-08 08:17:36,725 ERROR [org.saiku.web.core.SecurityAwareConnectionManager] Error connecting: chegadaturistas 
mondrian.olap.MondrianException: Mondrian Error:Internal error: Reading row count from table [null, null, tempo]; sql=[select count(*) from "tempo"] 

So bemerkte ich die select verwendet von mondrian im COUNT war nur mit der Tabelle und nicht mit der schema.table, die für PostgreSQL verwendet werden soll. Um sicher zu gehen, dass ich ein VIEW im öffentlichen PostgreSQL-Schema erstellt habe und es mir diesen Fehler in der "Tempo" -Tabelle nicht gegeben hat, aber mir auf einem anderen gegeben hat. Gibt es eine Möglichkeit, Mondrian zu zwingen, die SCHEMA.TABLE auf den Selects für PosgreSQL zu verwenden?

+0

@ tomas-greif, hast du einen Vorschlag für dieses Problem? Funktioniert Mondrian 4 im PUBLIC-Schema nur mit PostgreSQL? – Fizard

Antwort

1

Problem gelöst! Es sieht so aus, als wenn Sie Legend Mondrian 3 XML auf Mondrian 4 setzen (Saiku 3.X verwendet Mondrian 4), es aktualisiert das XML, aber es "vergisst" einfach, das SCHEMA-Tag der Datenbank nach der Aktualisierung zu setzen. Hier ist die Lösung, die ich tat, dank Tom Barber (die dies auf Google auf Saiku Gruppe beantwortet

Also nur die log4j.xml finden Kommentar- diese (nicht duplizieren, es ist bereits in der Datei kommentiert):.

.
<appender name="MONDRIAN" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="${catalina.base}/logs/mondrian.log"/> 
    <param name="Append" value="false"/> 
    <param name="MaxFileSize" value="500KB"/> 
    <param name="MaxBackupIndex" value="1"/> 

    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/> 
    </layout> 
    </appender> 

    <category name="mondrian"> 
     <priority value="DEBUG"/> 
     <appender-ref ref="MONDRIAN"/> 
    </category> 

STOPP SAIKU und wieder IT START Warten sie ein wenig und öffnen sie die saiku.log (es auf "saiku_directory" ist \ tomcat \ logs \ saiku.log, suchen sie die Zeile sein etwas wie folgt aus:

<Schema name="YOUR_SCHEMA_NAME" missingLink="ignore" metamodelVersion="4.300"> 
    <PhysicalSchema> 
........ 

Kopieren Sie das gesamte Schema und fügen Sie es in eine neue file.xml ein. Fügen Sie das Tag schema = "SCHEMA_NAME" auf allen TA ein BLE-Tags wie folgt:

Starten Sie SAIKU erneut, laden Sie dieses Schema hoch, starten Sie saiku neu.

Problem gelöst! : D

Verwandte Themen