{"id":899,"date":"2021-01-25T18:21:37","date_gmt":"2021-01-25T16:21:37","guid":{"rendered":"https:\/\/www.flip-design.de\/?p=899"},"modified":"2021-01-25T18:21:37","modified_gmt":"2021-01-25T16:21:37","slug":"incomplete-data-at-a-self-service-bi-project-with-power-bi","status":"publish","type":"post","link":"https:\/\/www.flip-design.de\/?p=899","title":{"rendered":"Incomplete Data at a self service BI project with Power BI?"},"content":{"rendered":"\n<p>Mostly at self service BI Projects the business users imports data from unproven sources \u2013 like Excel. But if you have a project and\/or source like this, data can be have problems, because at a CSV or Excel file the data format can be anything.<br>When you take look at following screenshot. There a two tables. One has the facts (sales per date and branch). The second table provides the branches and here, I\u2019ve added a row with the ID \u201c-2\u201d, this provides as a key, which doesn\u2019t exists at the most sources. This key can be used to map error rows.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-9.png\"><img decoding=\"async\" loading=\"lazy\" width=\"605\" height=\"69\" src=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-9.png\" alt=\"\" class=\"wp-image-900\" srcset=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-9.png 605w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-9-300x34.png 300w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-9-500x57.png 500w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><\/figure>\n\n\n\n<p>So, if you import the data, everything is fine and you can make insights of it:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-10.png\"><img decoding=\"async\" loading=\"lazy\" width=\"291\" height=\"291\" src=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-10.png\" alt=\"\" class=\"wp-image-901\" srcset=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-10.png 291w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-10-150x150.png 150w\" sizes=\"(max-width: 291px) 100vw, 291px\" \/><\/a><\/figure>\n\n\n\n<p>But after some time, it can be happen that user insert some data which can be not used by the data model:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-11.png\"><img decoding=\"async\" loading=\"lazy\" width=\"334\" height=\"84\" src=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-11.png\" alt=\"\" class=\"wp-image-902\" srcset=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-11.png 334w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-11-300x75.png 300w\" sizes=\"(max-width: 334px) 100vw, 334px\" \/><\/a><\/figure>\n\n\n\n<p>Then you get following error when you refresh the data and the row will not be loaded and the end-users thinks everything is fine.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-12.png\"><img decoding=\"async\" loading=\"lazy\" width=\"500\" height=\"278\" src=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-12.png\" alt=\"\" class=\"wp-image-903\" srcset=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-12.png 500w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-12-300x167.png 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><\/figure>\n\n\n\n<p>To avoid this problem you can edit your Power Query ETL process and replace this error by set the \u201c-2\u201d<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-13.png\"><img decoding=\"async\" loading=\"lazy\" width=\"605\" height=\"302\" src=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-13.png\" alt=\"\" class=\"wp-image-904\" srcset=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-13.png 605w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-13-300x150.png 300w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-13-500x250.png 500w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><\/figure>\n\n\n\n<p>Now, you will get the row and will mapped to the Key from the dimension<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-14.png\"><img decoding=\"async\" loading=\"lazy\" width=\"294\" height=\"296\" src=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-14.png\" alt=\"\" class=\"wp-image-905\" srcset=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-14.png 294w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-14-150x150.png 150w\" sizes=\"(max-width: 294px) 100vw, 294px\" \/><\/a><\/figure>\n\n\n\n<p>To notice the users or to build up a QA dashboard, you can write some DAX code to count the errors and give some notice to the users<\/p>\n\n\n\n<p><code>Missings =<br>\u00a0\u00a0\u00a0 var missings = CALCULATE(COUNTA(Facts[BranchId]), FILTER(Branch, Branch[BranchId] = -2 ) )<br>\u00a0\u00a0\u00a0 var message = IF(missings > 0, \"Some branches are have incomplete data\", \"\")<br>\u00a0\u00a0\u00a0 return message<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-15.png\"><img decoding=\"async\" loading=\"lazy\" width=\"605\" height=\"403\" src=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-15.png\" alt=\"\" class=\"wp-image-906\" srcset=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-15.png 605w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-15-300x200.png 300w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2021\/01\/image-15-450x300.png 450w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mostly at self service BI Projects the business users imports data from unproven sources \u2013 like Excel. But if you have a project and\/or source like this, data can be have problems, because at a CSV or Excel file the &hellip; <a href=\"https:\/\/www.flip-design.de\/?p=899\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts\/899"}],"collection":[{"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=899"}],"version-history":[{"count":1,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts\/899\/revisions"}],"predecessor-version":[{"id":907,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts\/899\/revisions\/907"}],"wp:attachment":[{"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=899"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=899"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=899"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}