2015-04-21 22 views
61

Ho fatto fatica a far funzionare le tabelle di aggregazione. Ecco ciò che il mio tavolo infatti si presenta come:Mondrian: Sembra impossibile utilizzare le tabelle di aggregazione

employment_date_id 
dimension1_id 
dimension2_id 
dimension3_id 
dimension4 
dimension5 
measure1 
measure2 
measure3 

sto crollando il employment_date_id di anno, trimestre e mese per includere solo l'anno, ma ogni altra colonna è incluso. Ecco come appare la mia tabella di aggregazione:

yearquartermonth_year 
dimension1_id 
dimension2_id 
dimension3_id 
dimension4 
dimension5 
measure1 
measure2 
measure3 
fact_count 

Sto solo crollando la parte relativa all'anno della data. I campi rimanenti vengono lasciati così come sono. Qui è la mia configurazione:

<AggFactCount column="FACT_COUNT"/> 
<AggForeignKey factColumn="dimension1_id" aggColumn="dimension1_id"/> 
<AggForeignKey factColumn="dimension2_id" aggColumn="dimension2_id"/> 
<AggForeignKey factColumn="dimension3_id" aggColumn="dimension3_id"/> 

<AggMeasure name="[Measures].[measure1]" column="measure1"/> 
<AggMeasure name="[Measures].[measure2]" column="measure2"/> 
<AggMeasure name="[Measures].[measure3]" column="measure3"/> 

<AggLevel name="[dimension4].[dimension4]" column="dimension4"/> 
<AggLevel name="[dimension5].[dimension5]" column="dimension5"/> 
<AggLevel name="[EmploymentDate.yearQuarterMonth].[Year]" column="yearquartermonth_year"/> 

Sono per la maggior parte copiando il secondo esempio di tabelle di aggregazione dal documentation. La maggior parte delle mie colonne non sono compresse nella tabella e sono chiavi esterne alle tabelle delle dimensioni.

La mia domanda che sto cercando di eseguire è qualcosa di simile:

select {[Measures].[measure1]} on COLUMNS, {[EmploymentDate.yearQuarterMonth].[Year]} on ROWS from Cube1 

Il problema è che quando il debug e accendo la registrazione vedo chiavi bit che assomigliano a questo:

AggStar:agg_year_employment 
bk=0x00000000000000000000000000000000000000000000000111111111101111100000000000000000000000000000000000000000000000000000000000000000 
fbk=0x00000000000000000000000000000000000000000000000000000001101111100000000000000000000000000000000000000000000000000000000000000000 
mbk=0x00000000000000000000000000000000000000000000000111111110000000000000000000000000000000000000000000000000000000000000000000000000 

E schema di bit di mia domanda è:

Foreign columns bit key=0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 
Measure bit key=  0x00000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000 

E così la mia tabella di aggregazione è saltato. Tuttavia, queste sono le colonne esatte che vengono piegate nella tabella. Ma le posizioni dei bit sono fuori dalla query e dalla tabella di aggregazione. L'altra cosa che trovo strano è che una parte delle colonne è compressa nella tabella, ma tutti i AggForeignKeys non sono inclusi come bit, quindi se faccio una query con quelle colonne questa tabella di aggregazione verrà saltata? Questo è contrario a ciò che avevo programmato. Il mio piano era lungo quanto si sta facendo una query sui limiti dell'anno utilizza questa tabella di aggregazione.

Non capisco perché questo non funziona e perché non riesce a compilare correttamente le chiavi di bit. Ho provato a eseguire il debug del codice di Mondrian, ma è stato possibile capire quale colonna mappare a quale posizione nelle chiavi di bit non è evidente. Credo che questo non dovrebbe essere così difficile, ma tutto ciò che è fuori non lo spiega molto bene. E questa architettura della tabella di aggregazione è davvero da rompere.

Cosa sto sbagliando? E perché la mia soluzione non funziona?


aggiornamento Ecco il mio file di mondrian.properties:

mondrian.jdbcDrivers=com.mysql.jdbc.Driver,oracle.jdbc.driver.OracleDriver 

mondrian.rolap.generate.formatted.sql=true 
mondrian.rolap.localePropFile=locale.properties 
mondrian.rolap.aggregates.Use=true 
mondrian.rolap.aggregates.Read=true 

mondrian.trace.level=2 

mondrian.drillthrough.enable=true 
+0

Non ho mai visto un punto utilizzato all'interno di un nome di gerarchia come questo '[EmploymentDate.yearQuarterMonth]' ... questo non sta causando alcun tipo di problema lungo la linea da qualche parte? – whytheq

+0

Questa è una cosa mondrian. Era un modo non standard che si riferiscono a gerarchie che si suppone abbiano risolto nelle versioni più recenti. Ora comprendono entrambi i modi di riferirsi alle gerarchie. Sto solo usando una versione leggermente più vecchia. Ma leggi come [EmploymentDate]. [YearQuarterMonth] come una gerarchia, non un livello. – chubbsondubs

risposta

1

potrebbe essere il caso mondrian.rolap.aggregates.Read è impostata su true e mondrian.rolap.aggregates.Use è impostato a falso. Impostare mondrian.rolap.aggregates.Use=true e verificare. Riferimento: http://mondrian.pentaho.com/documentation/configuration.php

In caso contrario, si prega di allegare tutte le proprietà relative alle tabelle aggregate e al codice XML completo di definizione del cubo.

+0

No, ho entrambi impostato su true e ho allegato per file delle proprietà. – chubbsondubs

+0

Ho anche allegato le proprietà. – chubbsondubs