Showing posts with label cubes. Show all posts
Showing posts with label cubes. Show all posts

Monday, March 12, 2012

Localizing cube elements

We're an ISV that builds a product which includes a predefined set of SSAS2005 cubes, dimensions, and measures. We want to support the localization of the various cube elements. The ideal way would be to use translations - however, we need to support Standard Edition, and my understanding is that translations are only supported under Enterprise Edition. :( So the question is, what's the best way to accomplish this and still support SE?

Right now we're looking at using AMO to programmatically translate the various OLAP elements (we also looked at directly modifying the XML/A deployment script, but aren't pursuing that option for process reasons). There are some concerns about this approach, however. There doesn't seem to be a language-independent way to identify specific OLAP objects from an OLAP client (there is an ID property on some objects, but as far as I can tell it isn't usable from ADOMD.NET, and it isn't present on all objects anyway). In other words, in our admin tools if we want to query a specific cube, there's no language independent way to reference it.

Also, if we change the names of, for example, a measure, we also need to change the expression for any calculations that reference that measure.

Is there some more elegant solution that we're missing here?

Thanks,
Kevin

Kevin.

You can argue back and fourth but looks like the answer for your case is to use translations :).
And that is the feature desinged specifically for the case you describe.

Edward.
--
This posting is provided "AS IS" with no warranties, and confers no rights.

|||Oh, I agree - which is why I was extremely disappointed when translations was announced as an enterprise edition feature only. That decision really complicated the lives of ISVs. A nice compromise might have been to support a single translation on SE, so that ISVs could localize to one foreign language without having to rename all of their cube elements.

Anyway, it sounds like you're saying that isn't much of a good alternative here that supports SE.

Friday, February 24, 2012

Local Cubes in SS2005, specifically for the dev team

Hi,

A question on local cubes...

If I'm right in saying that if you use the CREATE CUBE statement to create a local cube using the MSOLAP.3 provider, that under the hood you will in fact still be using the MSOLAP.2 provider and hence creating AS2K local cubes, how will this tally with mainstream support for AS2K ending in 2008? Will these form of local cube cease to be supported at that time?

regards

Colin

No, your assumption is wrong - CREATE CUBE is sent to msolap90.dll and creates a AS2005 cube. It can't be opened with MSOLAP.2 provider.|||

Well I'm basing my assumption on the information in MDX Solutions, chapter 17, which in turn was based on information obtained directly from the development team

As I understand it, when the connection is made to the empty .cub file and the MSOLAP.3 provider sees the syntax CREATE CUBE and INSERT INTO, it automatically delegates the query to the MSOLAP80.dll which in turn creates an AS2K cube rather than an AS2005 one.

You only create an AS2005 cube if you use the CREATE GLOBAL CUBE syntax or ASSL.

regards

Colin

Local Cubes Creation...

Hi,

1. Has anyone been able to generate local cubes in SSAS2K5 using XMLA? I run profiler while running a CREATE GLOBAL CUBE but wasn't able to view the relevant XMLA code that creates the local cube.

2. After running a CREATE GLOBAL CUBE on one of our cubes and, while trying to access it using Excel 2003, I am not able to choose a cube (the cube list is empty!!!!).

Thanks,

Joao Bilhim

With regard to (2) - if the Create global cube statement succeeded -it would have created a .cub file in the directory that you specified. You should be able to select it directly in Excel and access it.

Local Cubes Creation...

Hi,

1. Has anyone been able to generate local cubes in SSAS2K5 using XMLA? I run profiler while running a CREATE GLOBAL CUBE but wasn't able to view the relevant XMLA code that creates the local cube.

2. After running a CREATE GLOBAL CUBE on one of our cubes and, while trying to access it using Excel 2003, I am not able to choose a cube (the cube list is empty!!!!).

Thanks,

Joao Bilhim

With regard to (2) - if the Create global cube statement succeeded -it would have created a .cub file in the directory that you specified. You should be able to select it directly in Excel and access it.

Local cubes connection

Hello,
I have created 3 local cubes which resided in the same .cub file. The cubes created from AS 2005 cubes.
How can I make ADOMD connection to all 3 cubes at the same time in my client application (C#)?
The problem is that Initial Catalog (database name) in connection string in case of local cubes is the same as the cube name.

Thanks,
GB

In ADOMD you don't connect directly to any specific cube. Once you have connect to the database (catalog) you just specify which cube you want in the query. So you only need the one connection and you can use that to query any of the cubes in the catalog.

eg

SELECT measures.AllMembers ON COLUMNS FROM <CUBE_NAME>

|||

I think GB meant that the problem was that since for him database name and the cube name are the same - he ended up with 3 different databases, and ADOMD only works with one database at the time.

However, the limitation of database name being the same as the cube name only existed in AS2000, and also AS2000 officially only supports one cube per database. These limitations don't exist in AS2005.

|||That makes sense, If I had to create a local cube I would use the ASSL syntax, but if I am not mistaken the CREATE LOCAL CUBE (which is depreciated) and CREATE GLOBAL CUBE methods setup the database with the same name as the cube. There is a reasonable white paper on local cubes which contrasts the different methods of creating them here http://www.localcubetask.com/UsingLocalCubesinMicrosoftSQLServer2005AnalysisServices.doc|||

I have cteated my local cubes using ASSL CGC method in SSMS 2005.

I created 3 cubes: Cube1,Cube2,Cube3 in one My_cubes.cub file.

In my C# code application I have the following connection string:

string myConnectionString = "Provider=MSOLAP;Data Source='C:\\LOCALCUBES\\My_cubes.cub';Initial Catalog=Cube1";

When I try to get dimensions from Cube2 I 'v got an error related to the connection string - no connection to Cube2.

I tryed to create 2 saparate connection strings for the same My_cubes.cub file but different cubes, but application can not open same file twice.

So, I still have a problem to open connection to 2 local cubes at the same time.

Thanks,

GB

|||The solution that was suggested above, is to build real XMLA scripts to create your cubes instead of using CREATE GLOBAL CUBE statement - this way you will be able to put multiple cubes in the same database in the local cube.|||

Yes, XMLA script is working for me.

I found the instructions hear:

http://cwebbbi.spaces.live.com/blog/cns!7B84B0F2C239489A!883.entry

Thanks,

GB

|||

Still have the problem.

My local .cub file created by XMLA script contains 3 databases with 7 cubes each.

When I open this .cub file in MDX Sample application I can make

a connection and MDX query to any of 3 databases and accordingly their cubes.

But in my C# application when I try open connection to all local databases in a loop from the same .cub file

I got the error just after attampting to open second database in a loop.This is ADOMDClient.AdomdConnection error:

"A connection cannot be made. Ensure that the server is running".

Any hints how to fix the problem?

Thanks,

GB

|||

You can only have one connection to the local cube file - therefore the second connection fails. Your options:

1. Split it to the 3 different local cube files

2. Put all the cubes in the same database

3. Close the previous connection before opening a new one

4. Keep one connection, but change the current database when you need to go to another one.

Local cubes connection

Hello,
I have created 3 local cubes which resided in the same .cub file. The cubes created from AS 2005 cubes.
How can I make ADOMD connection to all 3 cubes at the same time in my client application (C#)?
The problem is that Initial Catalog (database name) in connection string in case of local cubes is the same as the cube name.

Thanks,
GB

In ADOMD you don't connect directly to any specific cube. Once you have connect to the database (catalog) you just specify which cube you want in the query. So you only need the one connection and you can use that to query any of the cubes in the catalog.

eg

SELECT measures.AllMembers ON COLUMNS FROM <CUBE_NAME>

|||

I think GB meant that the problem was that since for him database name and the cube name are the same - he ended up with 3 different databases, and ADOMD only works with one database at the time.

However, the limitation of database name being the same as the cube name only existed in AS2000, and also AS2000 officially only supports one cube per database. These limitations don't exist in AS2005.

|||That makes sense, If I had to create a local cube I would use the ASSL syntax, but if I am not mistaken the CREATE LOCAL CUBE (which is depreciated) and CREATE GLOBAL CUBE methods setup the database with the same name as the cube. There is a reasonable white paper on local cubes which contrasts the different methods of creating them here http://www.localcubetask.com/UsingLocalCubesinMicrosoftSQLServer2005AnalysisServices.doc|||

I have cteated my local cubes using ASSL CGC method in SSMS 2005.

I created 3 cubes: Cube1,Cube2,Cube3 in one My_cubes.cub file.

In my C# code application I have the following connection string:

string myConnectionString = "Provider=MSOLAP;Data Source='C:\\LOCALCUBES\\My_cubes.cub';Initial Catalog=Cube1";

When I try to get dimensions from Cube2 I 'v got an error related to the connection string - no connection to Cube2.

I tryed to create 2 saparate connection strings for the same My_cubes.cub file but different cubes, but application can not open same file twice.

So, I still have a problem to open connection to 2 local cubes at the same time.

Thanks,

GB

|||The solution that was suggested above, is to build real XMLA scripts to create your cubes instead of using CREATE GLOBAL CUBE statement - this way you will be able to put multiple cubes in the same database in the local cube.|||

Yes, XMLA script is working for me.

I found the instructions hear:

http://cwebbbi.spaces.live.com/blog/cns!7B84B0F2C239489A!883.entry

Thanks,

GB

|||

Still have the problem.

My local .cub file created by XMLA script contains 3 databases with 7 cubes each.

When I open this .cub file in MDX Sample application I can make

a connection and MDX query to any of 3 databases and accordingly their cubes.

But in my C# application when I try open connection to all local databases in a loop from the same .cub file

I got the error just after attampting to open second database in a loop.This is ADOMDClient.AdomdConnection error:

"A connection cannot be made. Ensure that the server is running".

Any hints how to fix the problem?

Thanks,

GB

|||

You can only have one connection to the local cube file - therefore the second connection fails. Your options:

1. Split it to the 3 different local cube files

2. Put all the cubes in the same database

3. Close the previous connection before opening a new one

4. Keep one connection, but change the current database when you need to go to another one.