I’m pleased to let people know that breaking Power Query via Power Pivot is a thing of the past … at least for users of Excel 2013 or higher. (Sorry, if you’re on 2010, you still need to be careful.)
The information has been around for a bit, and it’s one of the topics we cover in our http://powerquery.training/course as well: how to break your Power Query by doing one of the following actions in Power Pivot:
- Renaming a table
- Renaming a column sourced from Power Query
- Deleting a column sourced from Power Query
Any of these three actions would set your query into an un-editable state, but worse, nothing would appear to happen. The query would refresh as normal, until you eventually tried to change it. At that point all hell would break loose and your only option was to rebuild your query (and related data model table) from scratch.
This has been covered in detail in the following sources:
But now, breaking Power Query via Power Pivot is a thing of the past…
This issue was fixed in Excel 2016, but it left many of us hanging with an older version that still exhibited the problems. If you’re on 2013, however, that problem has now been fixed. I share the links at the bottom of the post to make sure you’re updated, but first I’ll demonstrate that the fix is really working.
To set the stage, I created a simple Calendar table in Power Pivot, and loaded it to the Data Model.
Corruption Method #1: Deleting Columns
My first test was to attempt to delete the Year column in Power Pivot. At first it looks like nothing has really changed:
But when I click Yes, Power Pivot comes back with a message to let me know that I can’t do it after all:
Hooray! This is fantastic news, as it means that I can’t actually destroy my entire data model. Beautiful!
Corruption Method #2: Renaming Columns
Next I tried to rename the Year column to myYear.
Nope. Can’t break the model that way either.
Corruption Method #3: Renaming the Table
Finally, I tried to rename the table from Calendar to myCalendar:
And it looks like we’re protected from shooting our model in the foot too.
My thoughts on the fix
I’m 99% happy with this fix. It protects us from accidentally blowing up our data models, which is super important. Especially because it was possible to break the model and still run for months without every realizing it. That just shouldn’t be allowed to happen. So why am I not 100% happy?
Well, the first part is that Excel 2010 users are still susceptible to the issue. That’s a challenge, although to be fair Microsoft has been pretty forthcoming that the Load to Data Model hack is not truly a supported method anyway. So really, there’s not much of a surprise there. I’m not holding any points back on this one.
The last part – the remaining 1% for me - is that the fix, as implemented, means that you cannot ever rename a table in Power Pivot that was source from Power Query. In fact, even if you go back to Power Query and rename the table there, it still shows under the original name in Power Pivot. Granted it’s not a total show stopper, but you do want to give some thought to your query naming before you push it into the data model that very first time.
How can you ensure you have the fix?
If you’re running automatic updates for Office 2013, you should already have the fix in place. But if you want to check (or you don’t), then here’s the deal:
The full support KB article on the subject can be found here.
It will direct you to install the following updates:
- KB3039800: update for Office 2013 – From October 13, 2015
- KB3039739: update for Office 2013 – September 8, 2015
- KB3085502: MS15-099 security update for Excel 2013 – September 8, 2015
(There is a 32 and 64 bit version of each, so make sure you pick up the right version.)
For reference, I just tried to install them, without checking if they’d been installed first. Fortunately it does a check first, so for me each of them came back with a message like this:
So there, you go. Great news for users of Power Query and Power Pivot 2013 and higher. You can now model with the confidence that you won’t accidentally blow up your solution!