This is a brilliant utility! You just saved me hours of manual, tedious changes to merge two cubes. And you found several changes that I would have overlooked. Microsoft should buy this from you to include in the base product. Thanks for making this available!
i don't write reviews usually.. but this is AMAZING!!! we've developed scripts to do automatic partitions on our tabular cubes, so redeploying changes from the SSDT project is a NO NO, as it erases my existing partitions all the time.
Using BISM normalizer gives me the confident to make metadata / structural changes to our server, without worrying that it would accidentally overwrite other stuff, such as my auto created partitions, and I can review the xmla scripts before I run it.
i seriously won't know what to do if it were not for bism normalizers
p.s. also i was just cursing my life when i couldn't get the BIDS helper actions deployed to my prod (and I don't want to do deploy from SSDT), come here, and found out that the new version now supports it! amazing!
It's been great using the BISM Normalizer, thanks for developing this tool.
I need your help as I have recently come across an issue with the BISM Normalizer where I get the following error when I click the "Validate Selection" button:
No room is available to display rows.
I have installed the latest version, 220.127.116.11, but that didn't solve the problem. I work with 2 other colleagues on this project and they are not hitting this error so I'm wondering if it's something with my workspace database. Any leads you can provide would be very much appreciated.
At least one other user has had the same problem, but I have been unable to reproduce it. If the same tabular project works on your colleagues' machines, it may be something environmental to do with your machine set up.
If you like, I can set up a Webex for you to show me reproducing the error - just in case something comes up. If so, e-mail me at firstname.lastname@example.org and I'll set it up. Obviously I'd like to reproduce it, but it is proving a tricky one to reproduce!
I tried to get the already modeled structure from a deployed project into an empty one. The idea behin it is to use the modeled hierarchies etc. and get them into a new model. Next step would be to add a new fact and build the relationships.
The only thing that worked for me was getting all content of the model into my new one and then delete what I did not need any more. Every other option I tried like selecting only the connection and one table (skip the rest) did not succeed.
Am I doing things wrong or is this just a use case BISM normalizer is not meant to handle.
BISM Normalizer should work well for your requirement. Do you want to do a Webex so you can show me the process you are following? If so, e-mail me at email@example.com and I'll set something up.
if the name of a measure contains '[' or/and ']' the name is cut off in the Diff-Viewer window
Also the wrong definition seems to be derived from online databases in this case
maybe a similar issues exists for other special characters too?
Version 18.104.22.168 deals with the ']' character (with a caveat - read below). I did some digging ...
Before SP1, no special characters were even allowed in measure names.
Since SP1, special characters are allowed. However, if you open the .bim file and look at the XMLA for the command text in the MdxScript elements, you will see that Microsoft does a replacement of ']]' with ']' when displaying in the tabular model designer (genius). I'm assuming they have some code that depends on ']]' to parse measure names and know when the end of the measure name occurs.
I have built similar logic to allow BISM Normalizer to work with ']' characters, but I have not gone to the trouble of displaying ']]' as ']'. It should update/create measures in the target database without problems and they will appear the same as in the source model in the tabular model designer, but in the BISM Normalizer differences grid, they show as ']]'.
Maybe at a later date, I will change it to show as ']'. We'll see.
Thanks for pointing this out.
It seems that BISM Normalizer only gets installed for the latest installed version of Visual Studio. E.g. if you have VS 2010, 2012 and 2013 installed then BISM Normalizer is only available for VS 2013. It also seems that it is installed for the current user only.
to make it available for other VS versions and other users you have to manually copy the Addin-files
would be great if this could be selected in the setup:
- for which VS version to install it (multiselect)
- current user vs. all users (radio button)
is this possible?
would be great :)
You should not need to copy the files from one folder to another. When going through the installation wizard, it should give the option to change the installation directory. It defaults to something like "C:\Users\xxx\Documents\Visual Studio 2013\Addins", but you can change it.
In Visual Studio > Tools > Options > Environment > Add-in/Macros Security, it lists all the addin file paths. One of them is
which normally maps to
I think if you select this as the installation directory for BISM Normalizer it will be shared across users and VS versions.
Alternatively can manually point all Visual Studio instances at the same BISM Normalizer installation directory, which also avoids copying the files.
This also means that upgrading to a new version of BISM Normalizer is simpler because don't risk having different VS versions using different versions of BISM Normalizer.
My copy of BISM normaliser has expired, the message tells me the last day is 2014-06-30, I’ve uninstalled and downloaded the most recent version but I’m still getting that error, the version I Am running is 1.3.13. Is there a later version?
Version 1.3.13 should run till end of 2014. Please check the Visual Studio About box. It will have an item for BISM Normalizer (at bottom of list of installed extensions) that shows the version number. If that doesn't work, we can keep investigating.
So in the project, we had a few partition for the fact to start out. After it's in production, we have a separate process to dynamically create new partition daily and process that only (due to large amount of data daily).
Historically, using BISM, and not select "include partition" in comparison servers us extremely well when we try to deploy minor changes to cube, such as attribute name change, new attribute in existing dimension, etc.
However, when we need to add new dimension, thus new relationship between the fact and a few new table/dimension, it doesn't work anymore.
Even with ignoring partition, when I deploy the new dimension to production, BISM normalizer would still wipe away all the dynamically created partitions in fact table, thus basically erasing months of data. :( Luckily we took a backup beforehand
We had a couple workaround in mind, but would be really great if it still retains the dynamic partitions even when we are deploying new dimensions.
Thanks for the question.
BISM Normalizer retains partitions only if the table action is "Skip". An "Update" action performs a full update from the source definition (including partitions). Technically, an Update replaces the target table definition with a clone from the source. Same applies to other "first-class" objects - i.e. that have their own node in the differences grid. Partitions do not, because they are part of table definitions.
The "include partitions in table definitions" checkbox in the Options dialog affects only the comparison process, not the update process.
When I have previously had to make changes to existing tables that have partitions managed by the ETL ("dynamic partitions"), I have allowed for the time to fully rebuild and reprocess partitions. Changes such as adding a new column require all partitions to be reprocessed anyway before it is usable.
One more thing, if you are saying that a new definition of the dimension table wipes out the fact table (different table) without any structural changes to the fact table, then that should not happen - unless again, the fact table definition changes - like adding a new column (e.g. foreign key column to the new dim table).
If you are saying the fact table has an action item of Skip and still it's partitions are being wiped out, then please e-mail me on firstname.lastname@example.org for further offline investigation.
Great solution, loving the support for BIDS helper tabular objects but I have come across an error. I added an action to my solution then tried to deploy it but an error message "No room is available to display rows" appears when I validate selection. I have removed the action as well as reinstalled BISM Normalizer but the error still appears. Do you know may have caused this
Thank you for the feedback, and sorry to hear you are getting an error.
I would love to recreate the error and fix it. Might you be able to e-mail me the project files at email@example.com ?
Hi dear Christian,
First of all I wanna thanks for you developed this wonderful tool.
We are using the BIDS Helper for creating Translations, Display Folders, Actions and other good things in Tabular models like Multidimensional OLAP cubes.
But when we create above items with BIDS Helper in a model1, BISM Normalizer doesn't compare and commit changes to model2 about the translations,actions, etc. added to the bism file by BIDS Helper.
Could please add this features compare and commit functionality to BISM Normalizer.
you can find detailed information BIDS Helper (http://bidshelper.codeplex.com/)
We have been using BISM Normalizer to generate change scripts used during a release. However, we have to manually change the connection string in the script. It would be nice to have an option to preserve the target's connection strings.
Thanks again and Happy Birthday (to BISM Normalizer)
You should be able to Skip the difference for the connection string in the differences grid (by default it should have "Different Definitions" status and an Update action item - which can be changed to a Skip action item).
Does this work for you? Or are you generating a single script for multiple environments that each have different connection strings?
First of all thank you Christian for this amazing Extension.
I seem to have found a minor bug in the Normalizer. When you change a specific column format (example: Date column format) the normalizer does not detect any model changes and does not deploy.
Can you confirm this and possibly make a fix for it?
Thank you :)
Thank you for the feedback.
You are right that it does not currently include column formats in column definitions (and therefore does not detect changes in format). It does include the datatype, but not the format.
I do plan to add the format to column (and measure) definitions, but I probably won't get the time till January or February 2014.
I will post on my blog when I get this done.