olap - Mondrian: Parece que no se pueden usar tablas de agregación
olap4j (1)
Puede ser el caso mondrian.rolap.aggregates.Read se establece en true y mondrian.rolap.aggregates.Use se establece en false. mondrian.rolap.aggregates.Use=true
y verifique. Referencia: http://mondrian.pentaho.com/documentation/configuration.php
Si este no es el caso, adjunte todas las propiedades relacionadas con las tablas agregadas y el XML de definición de cubo completo.
He estado luchando para que funcionen las tablas de agregación. Aquí está mi tabla de hechos:
employment_date_id
dimension1_id
dimension2_id
dimension3_id
dimension4
dimension5
measure1
measure2
measure3
Estoy contrayendo el employment_date_id
del año, trimestre y mes para incluir solo el año, pero se incluyen todas las demás columnas. Así es como se ve mi tabla de agregación:
yearquartermonth_year
dimension1_id
dimension2_id
dimension3_id
dimension4
dimension5
measure1
measure2
measure3
fact_count
Solo estoy colapsando la porción del año de la fecha. Los campos restantes se dejan como están. Aquí está mi configuración:
<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"/>
En general, estoy copiando el segundo ejemplo de tablas de agregación de la documentación . La mayoría de mis columnas no están contraídas en la tabla y son claves externas a las tablas de dimensiones.
Mi consulta que intento ejecutar es algo así como:
select {[Measures].[measure1]} on COLUMNS, {[EmploymentDate.yearQuarterMonth].[Year]} on ROWS from Cube1
El problema es que cuando lo depuro y activo el registro veo claves de bits que se ven así:
AggStar:agg_year_employment
bk=0x00000000000000000000000000000000000000000000000111111111101111100000000000000000000000000000000000000000000000000000000000000000
fbk=0x00000000000000000000000000000000000000000000000000000001101111100000000000000000000000000000000000000000000000000000000000000000
mbk=0x00000000000000000000000000000000000000000000000111111110000000000000000000000000000000000000000000000000000000000000000000000000
Y el patrón de bits de mi consulta es:
Foreign columns bit key=0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
Measure bit key= 0x00000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000
Y entonces mi tabla de agregación se omite. Sin embargo, estas son las columnas exactas que se pliegan en la tabla. Pero las posiciones de bit están desactivadas entre la consulta y la tabla de agregación. La otra cosa que encuentro extraña es que una parte de las columnas está contraída en la tabla, pero todas las AggForeignKeys
no están incluidas como bits, por lo que si realizo una consulta con esas columnas, esta tabla de agregación se omitirá. Eso es contrario a lo que había planeado. Mi plan fue siempre que haga una consulta sobre los límites de los años use esta tabla de agregación.
No entiendo por qué esto no funciona y por qué no crea las claves de bits correctamente. He intentado depurar el código mondrian, pero averiguar qué columna se asigna a qué posición en las claves de bit no es obvia. Siento que esto no debería ser tan difícil, pero todo lo que hay afuera realmente no lo explica muy bien. Y esta arquitectura de tabla de agregación realmente debe romperse.
¿Qué estoy haciendo mal? ¿Y por qué mi solución no funciona?
Actualizar Aquí está mi archivo 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