I've got a multi-tenant system w/ something I'd call an "extensible schema". For example, think of a typical PRODUCTS database table, then let your users define N extra fields to enter with each PRODUCT. Now slam all the user-entered values for those fields in a single XML column of each PRODUCTS row. The result is a "logical schema" which varies by user.

The Pentaho ad-hoc and dashboard features are really sweet, so I'm wondering what options we might have for handling our dynamic/varying metdadata in this environment.

I've read a bit about using xactions to create reports based on user input, but that would defeat the purpose of us leveraging the awesome ad-hoc report designer Pentaho already has. It would certainly be nicer to adapt the metadata layer for our needs and then leverage the ad-hoc and dashboard components out of the box. I've also considered just writing a JDBC driver, but that's probably a bit outside of my comfort zone.

Any advice? I've been poking around the source a bit and would love some pointers or ideas. It looks like I'd need the loading of any BusinessView to be user-aware so it could pull back the additional column definitions. Then I'd need to learn a lot more about MQL so I could intercept calls to SQLBaseComponent.doQuery and redirect access to the "virtual columns".