Chip Gore · Apr 15, 2020

InterSystems IRIS Business Intelligence - Limiting the source data for a cube

I'm looking for a means to dynamically specify and/or limit the data from the source that goes into a cube at build time.

I have a single data class that defines my source, and as the data within this table/collection grows/changes over time, I would like to be able to control which records actually make it into the indexed cube, but I'm having a hard time (short of defining a stored procedure to use instead of the extent query) for populating my cube indexes.

0 2 67 2


I found that creating a "Data Container" by extending the %DeepSee.DataConnector class allowed me to make an SQL based "source" where I could then create the dynamic filtering I wanted within the SQL of the container, and the balance of the IRIS Business Intelligence machinery would work just fine.

There are two preferred ways to limit facts that go into cube.

A) Build restriction option in cube. Change of build restriction requires recompilation of cube. Though you can call stored procedure there.
B) %OnProcessFact callback in the cube class.

For details please see "Restricting the Records Used in the Cube" in the documentation [1]

Disadvantage of using data connectors is that cube synchronization is not possible for cubes based on them: [2].