{"id":15924,"date":"2017-08-01T12:37:00","date_gmt":"2017-08-01T19:37:00","guid":{"rendered":"https:\/\/devwww.3cloudsolutions.com\/post\/self-service-bi-improving-data-quality-using-power-bi-flow-powerapps-2\/"},"modified":"2023-12-22T14:29:53","modified_gmt":"2023-12-22T22:29:53","slug":"self-service-bi-improving-data-quality-using-power-bi-flow-powerapps","status":"publish","type":"post","link":"https:\/\/3cloudsolutions.com\/resources\/self-service-bi-improving-data-quality-using-power-bi-flow-powerapps\/","title":{"rendered":"Self-Service BI: Improving Data Quality using Power BI, Flow &#038; PowerApps"},"content":{"rendered":"<p>As more and more organizations embrace data-driven decisions and the value of data democratization, their success in doing so will depend on getting their data management strategies right. For corporate and traditional Business Intelligence scenarios, many companies already have Master Data Management strategies in place. However, when it comes to self-service BI scenarios, there is often no real strategy and end users are left with gaping holes in their data quality as the usage increases over time. Let\u2019s discuss how you can enable data democratization within your organization, as well as provide a tool for your power users to maintain data quality in their reports.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/11\/SelfServiceBI_PowerBIPowerAppsFlow.png\" alt=\"SelfServiceBI_PowerBIPowerAppsFlow.png\" width=\"805\" height=\"509\" \/><\/p>\n<p><!--more--><\/p>\n<p>Missing the relevant master data information for the transaction data is a common data quality scenario. Here, I&#8217;ll walk you through how to identify, get notified, and resolve this. We will use Power BI to identify the issue and display in a dashboard, Flow to notify the data steward or subject matter expert of potential issues, and PowerApps to easily resolve the issue.<\/p>\n<p>In this example, we have some product-related information (master data) stored in an Excel sheet in OneDrive for Business:<\/p>\n<p><img decoding=\"async\" style=\"margin-right: auto; margin-left: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/11\/Excel1.png\" alt=\"Excel1.png\" \/><\/p>\n<p>The transaction data is also stored in an Excel sheet in OneDrive for Business:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"margin-right: auto; margin-left: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/11\/Excel2.png\" alt=\"Excel2.png\" width=\"315\" height=\"260\" \/><\/p>\n<p>You\u2019ll notice that <em>Product ID &#8211; 5<\/em> is not present in the master data for Product. Follow the steps below to recreate the solution.<\/p>\n<h2><span style=\"background-color: transparent;\">Step 1<\/span><\/h2>\n<p><span style=\"background-color: transparent;\">Create a Power BI report that displays the number of Product IDs in the transaction table that is missing the master data information. The model is straightforward for this scenario and you can even connect Power BI directly to the Excel files stored in OneDrive for Business.<\/span><\/p>\n<p><img decoding=\"async\" style=\"width: 432px; margin-right: auto; margin-left: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/11\/PowerBI1-1.png\" alt=\"PowerBI1-1.png\" width=\"432\" \/><\/p>\n<h2>Step 2<\/h2>\n<p><span style=\"background-color: transparent;\">The next step is to create a DAX measure that will display the number of Product IDs present within the Sales table and not present in the Product table.<\/span><\/p>\n<div class=\"step_num\" aria-label=\"Step 3\">\n<div class=\"codebox\">\n<div class=\"mw-geshi mw-code mw-content-ltr\" dir=\"ltr\">\n<div class=\"html5 source-html5\">\n<p>MissingProductID =<br \/>\n<span style=\"font-weight: inherit;\">VAR MPD =<br \/>\n<\/span><span style=\"font-weight: inherit;\">\u00a0 \u00a0 DISTINCTCOUNT ( Sales[Product ID] )<br \/>\n<\/span><span style=\"font-weight: inherit;\">\u00a0 \u00a0 \u00a0 \u00a0 &#8211; CALCULATE ( DISTINCTCOUNT ( &#8216;Product'[ProductID] ), Sales )<br \/>\n<\/span><span style=\"font-weight: inherit;\">RETURN<br \/>\n<\/span><span style=\"font-weight: inherit;\">\u00a0 \u00a0 IF ( MPD &gt; 0, MPD )<\/span><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h2>Step 3<\/h2>\n<p>Now, follow the steps below to create a simple Power BI report:<\/p>\n<ol style=\"list-style-type: lower-alpha;\">\n<li>Using the measure MissingProductID, create a card to display the total number of missing product IDs.<\/li>\n<li>You will need to create a table to display the missing product IDs. To do this, add a table visual using the Product ID from the Sales table and the MissingProductID measure.<\/li>\n<li>Additionally, you will need one table to display the data as it would appear for an end user. Create the table (just like step b) using the Product ID from the Product table and the Sales table. Lastly, add in the MissingProductID.<\/li>\n<\/ol>\n<p><img decoding=\"async\" style=\"width: 501px; margin-right: auto; margin-left: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/11\/PowerBI2.png\" alt=\"PowerBI2.png\" width=\"501\" \/><\/p>\n<p style=\"padding-left: 30px;\">\nWe can now see that there is\u00a0one missing product ID (number 5). You can also see that the sales attributed to the missing product ID\u00a0are 50 dollars.<\/p>\n<h2>Step 4<\/h2>\n<p>You will now need to publish this report online and pin the card you just created to a new dashboard. Set a data alert on the card (if you aren\u2019t sure how to do this, read this article on <a href=\"https:\/\/powerbi.microsoft.com\/en-us\/documentation\/powerbi-service-set-data-alerts\/\">setting data alerts in Power BI<\/a>) with the condition (threshold above 0) and frequency (at most once an hour) as shown below. Emails are not enabled as we will make use of Flow for that. Click on Save and close.<\/p>\n<p><img decoding=\"async\" style=\"width: 616px; margin-right: auto; margin-left: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/11\/PowerBI3.png\" alt=\"PowerBI3.png\" width=\"616\" \/><\/p>\n<h2>Step 5<\/h2>\n<p>For the next step, go back to Manage Alerts (found under the ellipsis icon of the card on which we set the data alerts) and select the alert that we just made (shown below). Click on \u201cUse Microsoft Flow to trigger additional actions\u201d found at the bottom of the alert. This will take you to Microsoft Flow and will open a template for triggering Flow with Power BI data-driven alerts. Select the alert we just created:<\/p>\n<p><img decoding=\"async\" style=\"width: 788px; margin-right: auto; margin-left: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/11\/Flow1.png\" alt=\"Flow1.png\" width=\"788\" \/><\/p>\n<h2>Step 6<\/h2>\n<p>Create a new step which will be an action to send an email, and add some content in the subject and the body of the email draft. Note that we are providing the link of the dashboard in the body of the email:<\/p>\n<p><img decoding=\"async\" style=\"width: 690px; margin-right: auto; margin-left: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/11\/Flow2.png\" alt=\"Flow2.png\" width=\"690\" \/><\/p>\n<h2>Step 7<\/h2>\n<p>So far, we have used Power BI to identify the issue and Flow to notify the power user of the issue with customized email content (rather than the generic data alert message from Power BI). Our next step is to make use of PowerApps to create an App that can help the power user make the required corrections or add missing product IDs in the Product Excel file.<\/p>\n<p><span style=\"background-color: transparent;\">To do this, <\/span><a style=\"background-color: transparent;\" href=\"https:\/\/web.powerapps.com\/home\">log in to PowerApps<\/a><span style=\"background-color: transparent;\"> with your username and password. Click on the Apps menu on the left, and select <\/span><em style=\"background-color: transparent;\">Create New<\/em><span style=\"background-color: transparent;\">. You should see the screen below where you can select OneDrive for Business as your data source.<\/span><\/p>\n<p><span style=\"background-color: transparent;\"><img decoding=\"async\" style=\"width: 712px; margin-right: auto; margin-left: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/11\/PowerApps1.png\" alt=\"PowerApps1.png\" width=\"712\" \/><\/span><\/p>\n<p>Add a new connection to OneDrive, point it to the Product.xlsx file, and choose the Product table as shown below:<\/p>\n<p><img decoding=\"async\" style=\"width: 703px; margin-right: auto; margin-left: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/11\/PowerApps2.png\" alt=\"PowerApps2.png\" width=\"703\" \/><\/p>\n<p>Click on the Connect button below after selecting the table, and your basic app should be ready in a few seconds.<\/p>\n<h2>Step 8<\/h2>\n<p>You should see three screens in the app that you created \u2013<\/p>\n<ol>\n<li>Browse screen \u2013 where you can see all the Product IDs and selected details<\/li>\n<li>Detail screen \u2013 to show further details of the selected Product ID<\/li>\n<li>Edit screen \u2013 where you can add or edit Product IDs<\/li>\n<\/ol>\n<p>You can <a href=\"https:\/\/powerapps.microsoft.com\/en-us\/tutorials\/get-started-create-from-data\/\">follow this link<\/a> to learn how to edit this app further. For the purpose of this post, we are just going to use the basic app as it is.<\/p>\n<p><img decoding=\"async\" style=\"width: 510px; margin-right: auto; margin-left: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/11\/PowerApps3.png\" alt=\"PowerApps3.png\" width=\"510\" \/><\/p>\n<h2>Step 9<\/h2>\n<p>Save the app to the cloud under the name DataQChecker:<\/p>\n<p><img decoding=\"async\" style=\"width: 684px; margin-right: auto; margin-left: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/11\/PowerApps4.png\" alt=\"PowerApps4.png\" width=\"684\" \/><\/p>\n<h2>Step 10<\/h2>\n<p>After that, embed this app into the Power BI dashboard that we created using the steps from <a href=\"https:\/\/powerapps.microsoft.com\/en-us\/blog\/embed-an-app\/\">this article<\/a>. Now your dashboard should look similar to the example below where you have an\u00a0interface to directly add or edit product entries.<\/p>\n<p><img decoding=\"async\" style=\"width: 634px; margin-right: auto; margin-left: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/11\/PowerBI4.png\" alt=\"PowerBI4.png\" width=\"634\" \/><\/p>\n<h2>Step 11<\/h2>\n<p>In this step, we are going to simulate new data coming in by adding\u00a0two more entries in the Sales table for Product IDs 10 and 11:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"margin-right: auto; margin-left: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/11\/Excel3.png\" alt=\"Excel3.png\" width=\"344\" height=\"374\" \/><\/p>\n<p>We know Product IDs 10 and 11 are not present in the Product table. Once the dataset is refreshed (could be a scheduled refresh or in this case, Excel files in OneDrive for Business can sync automatically), we should get an email as shown below:<\/p>\n<p><img decoding=\"async\" style=\"width: 606px; margin-right: auto; margin-left: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/11\/email-1.png\" alt=\"email-1.png\" width=\"606\" \/><\/p>\n<p>By clicking on the dashboard link, we should see the dashboard with\u00a0three missing product IDs:<\/p>\n<p><img decoding=\"async\" style=\"width: 666px; margin-right: auto; margin-left: auto; display: block;\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/11\/PowerBI5.png\" alt=\"PowerBI5.png\" width=\"666\" \/><\/p>\n<h2>Step 12<\/h2>\n<p>Lastly, go ahead and add the\u00a0three missing product IDs using the Data Quality App (<strong><u>right there in Power BI<\/u><\/strong>!). Refresh the dataset manually to see the results.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/3cloudsolutions.com\/wp-content\/uploads\/2022\/11\/Final.gif\" alt=\"Final.gif\" width=\"848\" height=\"460\" \/><\/p>\n<p>It really is that easy for self-service BI users to maintain the data quality of their analytics solution with the use of Power BI, Flow, and PowerApps. Maintaining data quality is vital to the\u00a0<span style=\"background-color: transparent;\">success of the analytics solution as well as increasing <\/span><span style=\"background-color: transparent;\">adoption, and Microsoft provides all the tools required<\/span><span style=\"background-color: transparent;\">.<\/span><\/p>\n<p>For a more detailed look at <a href=\"https:\/\/flow.microsoft.com\/\" target=\"_blank\" rel=\"noopener\">Microsoft Flow<\/a>\u00a0alerts, check out this post from Nathaniel Schrar: <a href=\"https:\/\/www.blue-granite.com\/blog\/from-alerts-to-actions-power-bi-alerts-and-microsoft-flow\">From Alerts to Actions: Power BI Alerts and Microsoft Flow<\/a>.\u00a0If you have questions or want to learn more about how to maintain your data quality, please\u00a0<a href=\"https:\/\/www.blue-granite.com\/contact-us\">contact us<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Learn how you to enable data-democratization within your organization, as well as provide a tool for your power users to maintain data quality in their reports.<\/p>\n","protected":false},"author":21,"featured_media":14603,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[260],"tags":[273],"class_list":["post-15924","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-ai","tag-power-bi","topics-blog"],"acf":[],"_links":{"self":[{"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/posts\/15924","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/comments?post=15924"}],"version-history":[{"count":0,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/posts\/15924\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/media\/14603"}],"wp:attachment":[{"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/media?parent=15924"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/categories?post=15924"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/tags?post=15924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}