Thanks, Dan! Cool stuff!

Never knew about .prepare() and .execute() and my +1 vote for .next() to introduce.

One more general question: is it a good practice to embrace everything in a method in try/catch?

Consider I have some method which interacts with UI and it has try/catch in it and it catches everything it calls. Let's name it UpperUIMethod. But should I introduce try/catch in every methods I'm calling from this UpperUIMethod? 

Sometimes I want to avoid it to give more sense to the logic itself.

I think in your case of migrating MS SQL cube to DeepSee cube means building the whole BI solution in DeepSee from the scratch. 

I mean:

1. ETL the data from MS SQL into Caché fact tables (Caché classes).

2. Build DeepSee cube(or cubes) against the fact tables.

3. Introduce pivot tables with MDX-queries against DeepSee cube (cubes).

4. Make dashboards to provide the UI for this pivot tables.

Profit!