Microsoft Power BI vs Qlik vs Tableau

Gartner 2016 reports shows Tableau, Qlik, and Microsoft are the leader in Business Intelligence and Analytics Platforms. The full Gartner url is at the bottom. The Gartner link will be broken in sometime later, that was my experience with Gartner link.

I will put the highlight in this blog for the 3 BI platform.




Qlik is highly rated for ease of use, complexity of analysis and business benefits (according to its reference customers). Compared with its chief competitors, Tableau and Microsoft, Qlik scores significantly higher on complexity of analysis — which we attribute to its stronger ability to support multiple data sources, a robust calculation engine and associative filtering and search.


Somehow, Qlik should be the most expensive as compare to Tableau and Microsoft.


Cost of software was cited as a barrier to adoption by 29% of Qlik’s reference customers, putting it in the top quartile for this barrier. Qlik Sense uses token-based pricing, which closely aligns to a named user but with some concurrency supported. The degree to which Qlik is considered expensive depends on the point of comparison. Based on user reference responses from last year’s Magic Quadrant, Qlik’s licensing is competitively priced relative to Tableau and is less costly than that of the megavendors. However, in larger deployments (of more than 500 users), its pricing is 70% higher than chief competitor Tableau and almost double Microsoft’s three-year license fee. Recent contract reviews by Gartner do show increased flexibility in negotiating terms for larger deployments




Tableau continues to execute better than any vendor in the BI market and its land-and-expand sales model has performed extremely well, resulting in a dramatic increase in large enterprise deals — many of which started out as small desktop deployments that grew organically over time within organizations. Tableau has the third-largest average deployment size of all the vendors included in this Magic Quadrant — at 1,927 users — driven by 42% of organizations reporting average deployments of more than 1,000 users (which probably reflects the approach that Tableau has taken of leveraging an underlying data warehouse if one exists).


Again the price getting higher


While expansion continues to be strong for Tableau, pricing and packaging is being more heavily scrutinized because larger deals typically involve IT and/or procurement. When asked about limitations to a wider deployment, 44% of Tableau’s survey references cited the cost of software as a barrier. With increased price sensitivity in this market, new lower-priced market entrants — coupled with Tableau’s reluctance to respond with a more attractive enterprise pricing model — have probably affected its sales execution survey rating this year and contributed to the drop in its position on the Ability to Execute axis compared with last year (where Tableau dramatically outperformed the competition).




I am not sure in future but up to now, Microsoft is the cheapest.


Microsoft’s cloud-based delivery model and low per-user pricing offers a low TCO — one of the top three reasons why customers selected it, in addition to ease of use for business users and the availability of skilled resources. While Microsoft has long offered low per-user pricing, customers are advised to consider the TCO, which includes hardware costs, development and support costs. Previously, Microsoft had a high cost of ownership in its on-premises deployment model (despite low licensing costs), because of the complexity of implementing multiple servers. The new Power BI addresses this issue with both a streamlined workflow for content authors and because the hardware and server architecture is in the Microsoft Azure cloud.


Microsoft needs to make the deployment strategy clearer.


Microsoft Power BI 2.x was released in July 2015. The newness of the product and its cloud-only delivery model may contribute to Microsoft’s ranking in the bottom third for deployment size, with an average of 192 users. Eleven percent of surveyed customers cited the inability to support a large number of users as a limitation to broader deployment. (Note that Power BI 1.0 customers, where deployment sizes may be higher based on both product maturity and on-premises deployment, were not included in the survey.) Microsoft has published a statement of direction — intending to harmonize its on-premises and cloud products — but the strategy is unclear. The current Excel-based add-ins with publishing to on-premises SharePoint is one option. Alternatively, customers may author in Power BI Desktop and then publish to an on-premises partner product such as Pyramid Analytics or Panorama Necto.



Posted in .Net | Tagged , , , , | Leave a comment

Waze has no sound in Windows Phone running Windows 10

Go to Waze sound setting (Go to Setting then swap your finger to the left). Choose Sound, Choose Direction only instead of Include street name.

That was discovered by my son. Waze can talk now. Maybe you have some other ways to do it.

Posted in Community, Computers and Internet, Operating System | Tagged , , , , , | Leave a comment

The trend of C#, VB.NET, and F#

Below is the highlight of the long article for C#, VB.NET, and F#


C# is also one of the few big mainstream languages to figure on the most loved top 10 in the StackOverflow survey.

We will keep growing C# to meet the evolving needs of developers and remain a state of the art programming language.

We will innovate aggressively, while being very careful to stay within the spirit of the language. Given the diversity of the developer base, we will prefer language and performance improvements that benefit all or most developers, avoiding over-focusing on a given segment. We will continue to empower the broader ecosystem and grow its role in C#’s future, while maintaining strong stewardship of design decisions to ensure continued coherence.


Visual Basic is used by hundreds of thousands of people. Most are using WinForms to build business applications in Windows, and a few are building websites, overwhelmingly using ASP.NET Web Forms. A majority are also C# users. For many this may simply be because of language requirements of different projects they work on. However, outside of VB’s core scenarios many undoubtedly switch to C# even when VB is supported

We will keep Visual Basic straightforward and approachable. We will do everything necessary to keep it a first class citizen of the .NET ecosystem: When API shapes evolve as a result of new C# features, for instance, consuming those APIs should feel natural in VB. We will keep a focus on the cross-language tooling experience, recognizing that many VB developers also use C#. We will focus innovation on the core scenarios and domains where VB is popular.


F# is used by tens of thousands of people and shows great actual and potential growth.

We will enable and encourage strong community participation in F# by continuing to build the necessary infrastructure and tooling to complement community contributions. We will make F# the best-tooled functional language on the market, by improving the language and tooling experience, removing road blocks for contributions, and addressing pain points to narrow the experience gap with C# and VB. As new language features appear in C#, we will ensure that they also interoperate well with F#. F# will continue to target platforms that are important to its community.

The full article is here:

Posted in .Net, Community, Computers and Internet | Tagged , , , , , , , , | Leave a comment

The refactoring operation cannot be completed because it requires changes to generate code

The short blog shows you the workaround to the error “The refactoring operation cannot be completed because it requires changes to generate code”.

In one scenario, you will get this error is that you want to rename the namespace of VSTO (Visual Studio Tools for Office) project.

The error dialog looks like the one below.


The workaround I did was following.

        Go to Edit in Visual Studio

        Choose Find and Replace.

        Choose Replace in File.


        Rename all the occurrences of the namespace in the entire folder.


Posted in .Net, Community, Computers and Internet, Microsoft Office | Tagged , , , , | Leave a comment

Unable to cast COM object of type ‘System.__ComObject’ to interface type ‘Microsoft.Office.Interop.Outlook.ContactItem

This short blog show you how to fix the error you might have when following a msdn article for Outlook Add-in.

If you are following this article How to: Programmatically Search for a Specific Contact

You might hit the error “Unable to cast COM object of type ‘System.__ComObject’ to interface type ‘Microsoft.Office.Interop.Outlook.ContactItem” When you reach the following code.

foreach (Outlook.ContactItem foundContact in searchFolder)


What you need to do is to change the foreach loop like the code below.

foreach (Object foundContact in searchFolder)


    if (foundContact is Outlook.ContactItem)


        contactItem = (Outlook.ContactItem)foundContact;





That works for me.


Posted in .Net, Community, Computers and Internet, Microsoft Office | Tagged , , , , | Leave a comment

VSTO Add-In for Outlook

This article shows you how to create VSTO Add-in for Outlook.

There is an MSDN article out there but as usual most of the MSDN articles ask you to visualize the IDE development interface by yourself.

The first step is to download and install VSTO if you do not have a later version,

1.      Choose File -> click on “Project… (menu item)”.


2.    Select Office/SharePoint -> VSTO Add-ins -> Outlook 2013 and 2016 VSTO Add-in.


3.      Name your project FirstOutlookAddins.

4.      In the ThisAddIn code file, declare a field named inspectors in the ThisAddIn class. The inspectors field maintains a reference to the collection of Inspector windows in the current Outlook instance. This reference prevents the garbage collector from freeing the memory that contains the event handler for the E:Microsoft.Office.Interop.Outlook.InspectorsEvents_Event.NewInspector event.

public partial class ThisAddIn


        Outlook.Inspectors inspectors;

5.      Replace the ThisAddIn_Startup method with the following code. This code attaches an event handler to the E:Microsoft.Office.Interop.Outlook.InspectorsEvents_Event.NewInspector event.

private void ThisAddIn_Startup(object sender, System.EventArgs e)


    inspectors = this.Application.Inspectors;

    inspectors.NewInspector +=

    new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(Inspectors_NewInspector);


6.      In the ThisAddIn code file, add the following code to the ThisAddIn class. This code defines an event handler for the Microsoft.Office.Interop.Outlook.InspectorsEvents_Event.NewInspector event.

When the user creates a new mail message, this event handler adds text to the subject line and body of the message.

void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector)


    Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem;

    if (mailItem != null)


        if (mailItem.EntryID == null)


            mailItem.Subject = “This text was added by using code”;

            mailItem.Body = “This text was added by using code”;





Press F5 or click the Run button to test your project.

Posted in .Net, Community, Computers and Internet, Microsoft Office | Tagged , , , , , , | Leave a comment

Azure Machine Learning Terms Update

This blog post is to update some of the terms in Azure Machine Learning.

There is a very good hand on lab here but some of the terms you can no longer find it in the Azure ML Studio web site.

1. Reader: in


It is now call Import Data,


2. Project Columns: in


It is now call Select Columns in Dataset.


3. Metadata Editor: in


It is now call Edit Metadata.

Posted in .Net, Community, Computers and Internet | Tagged , , , , | Leave a comment