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
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
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