For several years, Visual Studio has been my go-to tool for designing semantic data models used for Business Intelligent reporting. Back in 2005, I used the Business Intelligence Development Studio (BIDS) Visual Studio add-in for SSIS, SSRS and SSAS projects to develop BI solutions with multidimensional cubes. In 2012 when Microsoft began the transition from on-disk cubes to in-memory SSAS Tabular models, I used SQL Server Data Tools (SSDT) to create tabular models. It was a rocky road at first. The Tabular designer was fragile to put it mildly.
Enter Power BI… Initially intended for self-service data model and report design, Power BI Desktop has quickly grown into a robust and full-featured BI design tool. Not only does Power BI Desktop include a lot of great features, it is stable and streamlined. It’s a joy to use compared with my early experiences using SSDT for tabular model design. I prefer to use Desktop to perform model design. It’s faster, more convenient and just easier than SSDT. However, at some point I the life of a project it just makes more sense to transition the data model to an enterprise-scale effort.
Now, before anyone has a chance to comment and say “Paul, what the #$@! are thinking? Visual Studio is an essential tool and there are certain things that you can’t do with out it!”, I agree and will continue to use SSDT for a few key features. So, yes, I am not absolutely done using Visual Studio for managing projects other than SSAS, and perhaps for code check-in …I’ll finish this part of the story in a bit.
I want to be clear – I love Visual Studio. It’s a great product for developing software and a variety of business and data solutions. However, history has demonstrated that the notion of stitching together several different products and expecting them all to just work together seamlessly is just untenable. Without getting into all the reasons that it has been difficult for Microsoft to develop and maintain a rock-solid tabular model design add-in for Visual Studio, contrast that effort with the evolution of the Power BI product. The Power BI product team is entirely focused on developing one product by a development team under unified leadership, with a focused set of objectives. Negotiating co-development of any product by several different teams is difficult within any organization, particularly one as large as Microsoft. The reason that new features can be added weekly to the Power BI service and monthly to Power BI Desktop is that one product team manages all those features.
Some of you will remember the time when the Business Intelligence message from Microsoft was that we supposed to create solutions relying on coordinated components of many products like SQL Server (relational, SSIS, SSAS and SSRS), Windows Server, SharePoint and Office – all orchestrated to work together seamlessly. It was a good idea – and still is in moderation – but this approach produced a delicate and complicated beast that was difficult to manage and had many potential points of failure.
One of the reasons Power BI Desktop is such a wonderfully streamlined product is that the feature set is optimized for data analysts and not for IT developers. To maintain a streamlined product, we are not at all likely to see enterprise capabilities (like version control, multi-developer code merging and scriptable objects) added to this product. These capabilities do exist, however, for Analysis Services projects and community supported tools like Tabular Editor and DAX Studio. But now (drum-roll, please) Power BI dataset can be developed and deployed to a workspace using enterprise tools through the magic of the XMLA endpoint.
The Visual Studio/SSDT Quandary
Call it a learning disability, but I have tried time and time again to use the Visual Studio tabular designer to manage SSAS projects with the same outcome. Smallish demo and POC projects go well but not-so-much when tackling the complexities of product-scale design. I guess it is just my natural optimism to hope things work out better than they did last time, but the laws of the universe dictate that if you do the same thing, history will be repeated.
Here’s how it goes… I start developing a data model in SSDT by importing some tables and queries, and adding relationships and measures. All good, right? At this point in the timeline, I often convince myself that development environment is stable and that everything will work-out so I forge ahead, believing that all will be good. I then add some more tables and a whole bunch of new DAX calculations – and soon everything goes to hell. The model designer stops responding or behaves sporadically, Visual Studio crashes, the model definition file gets corrupted and I then I remember that I’ve been down this dark road before.
Recounting the painful past, it is frustrating to open a support ticket and explain to the engineer that “sometimes when I do that, this happens but not always” and “in all the confusion, I really can’t remember exactly how I got to this state.”
Pondering these memories, then I draft a blog post titled “I Am Done Using Visual Studio”
I sincerely appreciate the efforts of Kasper DeJonge from the SSAS product team back in 2012 as we spent hours in remote meetings trying to reproduce various odd behaviors in the tabular designer with a large data model. The fundamental problem was that the Model.bim file, which defines all the objects in the data model, was an enormous XML document (ours was approaching 100,000 lines.) Every change in the designer required the entire file to be re-written to disk and the loaded back into memory. Things improved significantly in 2016 and 2017 when the model definition was streamlined using JSON rather than XML, and the file structure was simplified to reduce the file size. Similar meetings with several other product leaders have proven that the product team are seriously dedicated to optimizing the enterprise tabular model experience.
I’m all about solutions and not just ranting about problems. So what’s the answer? How should we manage enterprise BI data model and Power BI solutions from now one? Using Tabular Editor alongside Visual Studio is really a best-of-both-worlds experience. You can open the Model.bim file stored in the Visual Studio SSAS project folder.
Tabular Editor is a superb tool for developing and managing tabular data models for SQL Server Analysis Services (SSAS), Azure Analysis Services (AAS) and Power BI. It is a community supported tool created by Daniel Otykier, a Microsoft MVP and Senior Business Intelligence Architect with Kapacity.dk in Denmark. The most comprehensive resource to find this and other community supported BI tools for the Microsoft platform is on the Italians’ site at SqlBi.com/Tools
If the project is under source code control, changes made with Tabular Editor will be detected and can be synchronized with the remote source repository from Team Explorer in Visual Studio.
Here are some quick facts and recommendations:
Power BI and Version Control
Power BI Desktop files (.PBIX) do not support version control and code merging.
Don’t try to do this – It will turn out badly. Starting model design in Power BI Desktop will save you time but once you transition to the Model.bim file format, use Tabular Editor.
Separating Reports and Dataset
A monolythic PBIX file created with Power BI Desktop containing reports, data model and queries is simple and easy to manage until you need to move beyond several limitations that this imposes.
Power BI reports and datasets (data models) should be managed separately in all serious projects. Period. …whether you need to transition the data model to Model.bim or not.
Separating Power BI reports from the data model/dataset has many advantages which include allowing report and data model development to be performed in parallel and by different team members. This is an absolute must to create a certified dataset for users to connect and do their own reporting and analysis.
Visual Studio and Version Control
Visual Studio SSAS projects allow you to manage version control.
This is a good thing. Keep doing this but use Tabular Editor as your primary model design tool.
A data model stored as a Model.bim file can have changes compared, split and merged between data model version files, deployed AS databases or Power BI datasets. Manage integrated source control with Azure DevOps or GitHub. Check-in changes, branch, merge, push and pull changes made by other developers but don’t use the Visual Studio Compare tool. Dependencies within the model definition can easily get you into trouble
Tabular Editor is a far superior design experience than Visual Studio. It is streamlined, easy to use and it won’t blow up when writing measure calculations. You can switch back and forth between tools since each tool has features that the other lacks. Just be sure to save and close the model file with one tool before opening it in the other …AND MAKE BACKUPS! The more that I do this, the more I prefer using Tabular Editor.
Tabular Editor doesn’t have a graphical model designer so I prefer to use Visual Studio to model tables and relationships. Set table and column properties, create calculated columns and measures, manage partitions and other tabular model features in Tabular Editor.
Start in Power BI Desktop and Migrate to an Enterprise Model
From Power BI Desktop, save the file as a .PBIT (template) which and then be opened in Tabular Editor. Once you save the file to the .BIM format, this is a one-way trip since a an Enterprise model cannot be saved back to a PBIT or PBIX file. Of course, if you start designing the data model in Visual Studio, there is no need to resave the model. You can just and use Tabular Editor to make new model enhancements.
Power BI Premium, AAS & SSAS
Power BI Premium capacity is required to deploy a Model.bim file as a dataset in a Power BI workspace.
Power BI Premium capacity is the E-ticket and is the best way to access all Power BI enterprise capabilities. With the XMLA endpoint, it will make more sense for most customers to deploy enterprise data models as datasets to a workspace rather than Azure Analysis Services (AAS) models.
Future-Proofing Data Models
If your organization chooses not to use Premium, which might be a more economical choice until you have enough licensed users to justify the cost, you can use AAS data models or on-prem SSAS data models to exceed the capacity limits of Power BI datasets under only Pro licensing.
If industry certification or compliance restrictions prevent your organization from using Power BI in the cloud, using enterprise models is the norm. Use a local instance of SQL Server Analysis Services Tabular. If you move to the cloud in the future, the transition should be relatively simple.
Keep in mind that Premium Capacity, or perhaps a more attractive licensing alternative, may be in your future so architect solutions in such as way that you can easily make that transition.
25 thoughts on “I Am Done Using Visual Studio …for BI data model development”
This is an excellent article. In my case, I’ve come from pro developer process (source control etc) into Power BI desktop. Started using Tabular Editor very quickly, to edit the model running inside PBI Desktop. But have still been wanting to get the model into git. You’ve answered a lot of my questions about doing this.
I, for one, appreciated the detail, and explaining it as a journey. Helps me understand the conclusion rather than just being given the final recipe.
I do not have a server nor Power BI online accounts I can write to. BUT I DO have Visual Studio and plenty of data. So my question is: Can I use Tabular Editor to make my own cube on my own drive? Then I could query the cube properly from Excel! That would be WONDERFUL! The cube Model as written by the DBA does not have business rules, time dimension, etc etc.
To answer your question, I’ll need to understand your objective. Is this for a production report solution or just for development? If you are developing a data model to share with users, it will need to be hosted somewhere. Using the Power BI service with Pro licenses is usually the easiest and least expensive option.
For developer purposes, you can install SSAS with SQL Server Developer edition on your desktop for free.
As an old Multidimensional developer and now a Tabular model developer / Power BI Online dataset developer, thank you so much for this. Working in Visual Studio to manage tabular models has been so painful. It seems like it was designed to suck the joy out of the development workflow. VS 2015 was painful and I was so hoping VS 2019 would have been better, but it just crashes, complains and seems like it was not even built to do this task. Tabular Editor is so awesome and just a lifesaver at work. Thank you Paul!
Thank you for your comments
Also VS can not handle PowerBI Premium models as they are at 1520 version and not on 1500.
I was not able to reverse engineer an existing model to work on it furher in VS.
Hello, I am interested to hear more about what you said: “… make more sense for most customers to deploy enterprise data models as datasets to a workspace rather than Azure Analysis Services (AAS) models” Do you have a post on this?
I posted about the XMLA endpoint. That’s the best place to start.
Heh. Remember when Microsoft VS 2008 completely dropped support for SQL Reporting Services when VS 2005 completely supported it? I then abandoned SSRS in place of custom c# reporting integrated w/ Office since Microsoft could not be trusted to eat their own dog food.
Nice post Paul, a little long, but you do a good job explaining everything.
Thanks, Tom. Brevity has not always been my gift but I hope this helps to put a few key pieces in the puzzle for enterprise data model development. The rest, we figure out together.
Great article Paul! What are your thoughts on when to use Power BI Desktop vs AAS for larger, more complex models? Even on a VM with 32 GB of RAM, Power BI Desktop can be quite sluggish and buggy.
This article was very helpful to me. I have had a nightmarish experience with BI studio corruptions. Tabular editor has been much better. One thing you left out is using tabular editor to publish the model, and then just reverse engineer from the AS database into a new BI VSS SSAS tabular project. This seems to deliver a clean working project. I just haven’t figured out the usefulness of the VSS SSAS project, but i have noticed that tabular editor can work fine with models that won’t open in VSS. The workaround seems to work in all these cases.
This post is absolutely not clickbate. I have nothing to sell and do not allow ads on my blog so I am a bit confused by your reaction. This post is sincere and honest. Rather than reacting negatively and deleting your comments, I have chosen to reply. As I stated in this post, Visual Studio is a fantastic product for application development and many other things. If you are following my blog, you will know that I am not an application developer but a BI consultant. This has nothing to do with C, C++or Java. Calm down, folks. If you are not in the BI world and don’t understand, then quietly move along. I wish you all well.
You have views and continued membership in the MVP program to sell.
I’m also in the BI see space and appreciate this blog Paul and get where you are coming from.
Good post Paul. Gave me something to think about and some of the points are certainly valid as a BI and Analytics professional.
Someone came and said Java is dying. I almost compare this article with conjectures of the former.
The article should have been titled I am done with SSRS or perharps SSAS. The data used in power BI for scalable data solution must some go through data engineering and in this case SSIS.
Power BI is not a repository but presentation. Visual Studio caters for both repository organization, OLAP, Integration. Once data is landed, it does not care if Power BI or tableau is used.
By the way u can switch from Tableau to Power BI if Visual Studio has organized your data via integration services, data stage or Oracle.
Let us separate data organization from data presentation.
As a Microsoft blogger you then need to explain the title to a C# or C++
Research for the Title of a Topic should be taken seriously.
If we don’t then some will wake up and say I am done with Rolls Royce, Airbus is better.
Airbus is far much better because of Rolls Royce.