Today I am announcing the availability of a new External Tool for Power BI Desktop, “Microsoft Hates Greg’s Quick Measures” or MSHGQM for short. This tool more than doubles the number of Quick Measures available in Power BI Desktop alone and most calculations support the creation of either DAX measures or calculated columns so really MSHGQM triples the number of quick, easy calculations you can create.
The Birth of MSHGQM
So, despite the fact that I have contributed nearly 200 quick measure formulas to the Power BI Community’s Quick Measure Gallery, Microsoft has never once been so inclined as to base one of the Quick Measures in Power BI Desktop on one of my submissions. Other Quick Measures have made it, like Chris Webb’s Star Rating and Daniil Maslyuk’s Simple Linear Regression. Never one of mine though. But am I bitter? A little…I’m a little bitter, I’m not gonna lie. So what is one to do when life hands you lemons? Well, you can make lemonade or…you can use gain of function research to bioengineer a new, novel bacteria that attacks the photosynthetic respiratory systems of lemon trees in order to wipe out lemons from the face of the earth and henceforth be forever impervious from receiving sour fruit. What? Too soon? In any event, figuratively speaking, I took the latter approach. And thus, after a weekend of teaching myself how to code a C# WPF application, MSHGQM was born.
Are You Serious?
Oh yes, I am quite certain that Microsoft hates my quick measures. What are you going to do? Some people hate cans, some people hate turtles and some people at Microsoft obviously have a vitriolic hatred of my DAX code. But, I realize you probably have a whole host of questions. I will try to anticipate those questions and answer them here:
Where can I download Microsoft Hates Greg’s Quick Measures?
Why, you can download it right here from GitHub.
Is this a joke? Does it really exist?
That’s two questions, but OK. Yes, unlike my prank 150th Quick Measure Gallery submission, MAGIC!, this tool actually really does exist and works just as described. See, here is an un-doctored screen capture:
In fact, if you had attended my last CAMLPUG meeting, you would have actually seen a pre-working version of the tool. My son Rocket is still editing the video for distribution but I’ll get it posted as soon as I can.
Is the code as garbage as that interface?
Oh yes, I can assure you that the code is absolute garbage. But it works. Did you miss the part of this being my first ever C# WPF application and that I effectively coded it in a weekend? MSHGQM is actually an extremely hacked up version of the most excellent Metadata Translator tool by Kay Unkroth. Other than a few of my classes still being called Language and TranslationGroup though, not much of Kay’s code remains sadly. But, a deep, heartfelt thanks to Kay. I learned a tremendous amount studying your code and MSHGQM wouldn’t exist without that knowledge.
Why the name Microsoft Hates Greg’s Quick Measures?
Well I had a strict set of specific criteria for naming this tool. That criteria was as follows:
- Convey how much Microsoft hates my quick measure DAX code
- Make the name as long as possible
- Absolutely and utterly thwart any and all attempts at acronization
Thinking of the perfect name that fit all three criteria took many hours of laborious thought and “ideation”, I assure you.
Is the code open source?
No, the code is not open source.
What!?!!?? That’s blasphemy! How can your code NOT be open source?!?!?!?!!!?
Because it’s not.
Look, I have spent far, far too much time and energy excoriating open source to just roll over and release a piece of open source software. It’s just not going to happen. Well, there is one path, but you aren’t going to like it.
I realize that you are probably thinking that this sorta makes me like the kind of guy that would grab a handful of extra plastic bags every time he visits the grocery store and immediately toss those plastic bags into the nearest river or stream with the express intent of maximizing the total amount of worldwide turtle carnage. OK…fair. I actually happen to be that kind of guy…like, exactly that guy #oddlyspecific. But hey, at a young age my parents were tragically killed in front of me during a freak sea turtle mating accident. So, who are you to begrudge me a little revenge? The point is, the code is not open source.
Now, I have provided the code to Mike Carlo at powerbi.tips so that he can inspect it for “malicious” code. As long as “malicious” does not mean “an incomprehensible mess”, we should be good. Fantastic website BTW. I am working with Mike to get the tool included in Business Ops because I’m too lazy to write an installer of my own and Business Ops is really cool and legit.
But wait, doesn’t that make you a complete and utter hypocrite for using open source code to create your own closed source program?
Actually…it kind of goes along with and proves everything I have pretty much ever said about open source code. So…yeah, I’m good with it. Look, my program has all of the same hallmarks as 99.99999% of all open source software. It’s kinda garbage, it isn’t innovative, it’s inefficient, it’s generally inferior to what it is imitating, its storage is contributing to global warming and it’s free. So, 6 out of 7 ain’t bad. You really haven’t been reading my stuff, have you?
Why didn’t you use Python instead of C#?
What are the future plans for MSHGQM?
Well, the current tool is what I would consider an alpha version. The goal for the beta version is to cleanup all of the code and double the number of quick measures available. The beta is still going to be based on my own homegrown JSON DAX quick measure description format and necessary code behind for each quick measure. Probably take me a couple months.
After the beta, my goal is to try to use Mike Carlo’s nifty new DAX template creation tool to create DAX templates for my quick measures. The end goal is to try to make the entire interface, including the configuration interface for quick measures/columns, completely data driven so that you can add new quick measures simply by dropping a DAX template into a directory. That might take some time.
If they won’t let you play, take your ball and go home. Destroy the ball with extreme malice and prejudice. Invent a new ball. Invent a new game. Boldly declare victory even though nobody uses your ball or likes your stupid game.
Many thanks to my son Rocket for the image and have you checked out his crazy awesome video yet? The kid has some talent.