{"id":26,"date":"2020-12-16T20:56:27","date_gmt":"2020-12-16T19:56:27","guid":{"rendered":"http:\/\/blog.dataengineer.at\/?p=26"},"modified":"2020-12-20T22:20:20","modified_gmt":"2020-12-20T21:20:20","slug":"wie-testet-man-1-000-user-auf-power-bi-teil-1","status":"publish","type":"post","link":"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/","title":{"rendered":"Wie testet man 1.000 User auf Power BI? [Teil 1]"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Inhalt<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-69f223d6a0539\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-69f223d6a0539\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#Ausgangslage\" >Starting position<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#Was_wollen_wir_testen\" >What do we want to test?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#Wie_sieht_das_Modell_aus\" >What does the model look like?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#Wie_kann_man_das_testen\" >How can you test that?<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#Browser_Refresh\" >Browser Refresh<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#Testing_Tool_JMeter\" >Testing Tool JMeter<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#Kompromiss_DAX_Query\" >Compromise DAX Query<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#PowerShell\" >PowerShell<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#Integration_Services_SSIS\" >Integration Services (SSIS)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#SSIS_%E2%80%9CMasteloop%E2%80%9D\" >SSIS \u201cMasteloop\u201d<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#Azure_Datafactory_mit_SSIS\" >Azure Datafactory mit SSIS<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#Das_Ergebnis\" >The result<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Ausgangslage\"><\/span>Starting position<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>A long project comes to an end, data sources were connected over many months, a new data warehouse built, analysis models created and reports built - and now the end users can hardly wait to finally get their efficient, modern, fast and interactive reports with the cool Power BI use\u2026<\/p>\n\n\n\n<p>Everything is going well, the loading process makes it through the night, the model is a Power BI Premium Dataset and processes daily, the complex DAX calculations still result in reasonable response times in the report.<br>Aber was passiert, wenn jetzt 1.000 User gleichzeitig zugreifen?<br>Will the system collapse?<br>Verwenden wir lieber doch einen AAS (Azure Analysis Services)?<br>Brauchen wir einen Premium P2?<\/p>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>So better test before...<\/p><\/blockquote><\/figure>\n\n\n\n<p>But how?<br>In any case so realistic as possible!<br>Since there aren't 1,000 users who call up reports like crazy for 2 hours, it will probably have to be an automated test.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Was_wollen_wir_testen\"><\/span>What do we want to test?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>I have selected three reports that are very intense, not just the amount of data, but many very complex DAX measures in a matrix list.<\/p>\n\n\n\n<p>The aim should be to repeatedly call up this query with the report with different filters, if possible.<\/p>\n\n\n\n<p>We are satisfied with 100 users first, if that works, then with 500-700 users at the same time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Wie_sieht_das_Modell_aus\"><\/span>What does the model look like?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The tabular model as a premium dataset is not very large (3 GB), but quite complex.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"796\" height=\"803\" src=\"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/Model.png\" alt=\"Model\" class=\"wp-image-30\" srcset=\"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/Model.png 796w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/Model-297x300.png 297w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/Model-150x150.png 150w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/Model-768x775.png 768w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/Model-600x605.png 600w\" sizes=\"auto, (max-width: 796px) 100vw, 796px\" \/><figcaption>Tabluar Model<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Wie_kann_man_das_testen\"><\/span>How can you test that?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Now it gets interesting, because there is no ready-made procedure or even a tool - so there are a number of sometimes complex failures ...<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Browser_Refresh\"><\/span><img loading=\"lazy\" decoding=\"async\" width=\"30\" height=\"30\" class=\"wp-image-37\" style=\"width: 30px;\" src=\"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/No30x30.png\" alt=\"\"> Browser Refresh<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Simply call up the report over and over again via the browser, change filters, call up again.<br>That could be done eg. with JavaScript.<br>But for 100 browser instances or even 500?<br>That could only go wrong, the client is already at the end with 30 browser windows, ultimately you measure the behavior of the client and not the report and I didn't want to set up 100 VMs either.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Testing_Tool_JMeter\"><\/span><img loading=\"lazy\" decoding=\"async\" width=\"30\" height=\"30\" class=\"wp-image-37\" style=\"width: 30px;\" src=\"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/No30x30.png\" alt=\"\"> Testing Tool JMeter<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>I was immediately enthusiastic, you can configure everything well, determine what you send, exchange filters, define iterations and also set the parallelization.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"457\" src=\"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/JMeter-1024x457.png\" alt=\"\" class=\"wp-image-38\" srcset=\"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/JMeter-1024x457.png 1024w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/JMeter-300x134.png 300w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/JMeter-768x343.png 768w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/JMeter-600x268.png 600w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/JMeter-945x421.png 945w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/JMeter.png 1305w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>But unfortunately only web traffic is measured here, i.e. the query is not triggered at all and neither is the HTML rendering of the report.<br>So it was proven that you can get 100 times respond in parallel to the report URL and back, not quite as we would like ...<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Kompromiss_DAX_Query\"><\/span>Compromise DAX Query<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>So I reject the idea of testing the report as a whole visualization and limit myself to the query.<br>From Power BI, I determine the DAX statement from the complex matrix and break it down into two parts, so that I can always change a filter in between, otherwise for the cache would too easy, I also determine 10 different filter conditions that also bring data.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"372\" height=\"402\" src=\"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/DAXQuery.png\" alt=\"\" class=\"wp-image-41\" srcset=\"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/DAXQuery.png 372w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/DAXQuery-278x300.png 278w\" sizes=\"auto, (max-width: 372px) 100vw, 372px\" \/><figcaption>DAX with dynamic filter<\/figcaption><\/figure>\n\n\n\n<p>The test no longer relates to the entire report page, but only to one visual and the rendering time is also omitted - the query accounts for 90% of the loading time.<\/p>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>How do you automatically query a DAX query and receive the result?<\/p><\/blockquote><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"PowerShell\"><\/span>PowerShell<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>It is certainly possible to connect to the Premium Dataset, to work with XMLA and also to send DAX and you can then certainly program loops and also measure the time, the only question remains whether 500 PowerShell can run at the same time ...<\/p>\n\n\n\n<p>Knowing me means, that I avoid coding as long as possible...<br>So I have choosen anotehr way.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Integration_Services_SSIS\"><\/span>Integration Services (SSIS)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Since SSIS is already used in the project and SSIS is a good old friend of mine, I built three packages for the three different technical reports \/ queries, rotating 10 filters in a loop with a 10 second pause and 10 more times parallelized, slightly delayed.<\/p>\n\n\n\n<p>The effort was low, the infrastructure in the Azure data factory and the network connection was already available.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"526\" src=\"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/SSIS_Auftraege-1024x526.png\" alt=\"\" class=\"wp-image-43\" srcset=\"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/SSIS_Auftraege-1024x526.png 1024w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/SSIS_Auftraege-300x154.png 300w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/SSIS_Auftraege-768x395.png 768w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/SSIS_Auftraege-600x308.png 600w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/SSIS_Auftraege-945x486.png 945w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/SSIS_Auftraege.png 1415w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>With the loops and parallelization you get a maximum of 30 simultaneous \u201cusers\u201d with 3 different queries.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"SSIS_%E2%80%9CMasteloop%E2%80%9D\"><\/span><img loading=\"lazy\" decoding=\"async\" width=\"30\" height=\"30\" class=\"wp-image-37\" style=\"width: 30px;\" src=\"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/No30x30.png\" alt=\"\"> SSIS \u201cMasteloop\u201d<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>After the parallelized filter queries are running, you just have to multiply that, so I created a master package that calls this whole logic several times in such a way that it increases slowly.<\/p>\n\n\n\n<p>That should bring you to 100 users.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"647\" src=\"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/SSIS_Master-1024x647.png\" alt=\"\" class=\"wp-image-44\" srcset=\"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/SSIS_Master-1024x647.png 1024w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/SSIS_Master-300x190.png 300w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/SSIS_Master-768x485.png 768w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/SSIS_Master-600x379.png 600w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/SSIS_Master-945x597.png 945w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/SSIS_Master.png 1173w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>But at this point nothing works anymore ...<\/p><\/blockquote><\/figure>\n\n\n\n<p>Most jobs don't even start to run, everything is stuck, it becomes uncontrollable - because now the runtime environment is measured again instead of the reports.<\/p>\n\n\n\n<p>The first measure is to boost the integration runtime properly from a D4 to a D16 with 4 nodes.<\/p>\n\n\n\n<p>But that doesn't help either, because the problem also lies in SSIS, the time-controlled parallelization no longer works with the script tasks because the timing is not accurate and the package itself is so busy that the timers don't work.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Azure_Datafactory_mit_SSIS\"><\/span>Azure Datafactory mit SSIS<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Ich bleibe im Kern bei SSIS, denn dort kann man bequem DAX abfragen, aber die Steuerung verlagere ich in die ADF.<\/p>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>Azure Datafactory with SSIS<\/p><\/blockquote><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"401\" height=\"869\" src=\"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/ADF.png\" alt=\"\" class=\"wp-image-46\" srcset=\"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/ADF.png 401w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/ADF-138x300.png 138w\" sizes=\"auto, (max-width: 401px) 100vw, 401px\" \/><\/figure>\n\n\n\n<p><br>After 100 running in parallel for 2 hours without errors, I dare to encapsulate it again and to parallelize it several times, which theoretically leads to 750 simultaneous queries.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/ADF_Master.png\" alt=\"\" class=\"wp-image-47\" width=\"414\" height=\"497\" srcset=\"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/ADF_Master.png 512w, http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/ADF_Master-250x300.png 250w\" sizes=\"auto, (max-width: 414px) 100vw, 414px\" \/><figcaption>ADF pipeline master batch<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Das_Ergebnis\"><\/span>The result<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>After a few runs of 1 to 2 hours each, the logs can be analyzed.<\/p>\n\n\n\n<p>If only it were that easy ...<br>More about this in <strong><a href=\"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-2\/\" data-type=\"URL\" data-id=\"http:\/\/blog.dataengineer.at\/wie-testet-man-1-000-user-auf-power-bi-teil-2\" target=\"_blank\" rel=\"noreferrer noopener\">Part 2<\/a><\/strong>\u2026<\/p>","protected":false},"excerpt":{"rendered":"<p>A long project comes to an end, over many months a new data warehouse was built, analysis models created and reports built - and now the end users can hardly wait to finally use their reports with the cool Power BI ...<br \/>\nWhat happens if 1,000 users access it at the same time?<br \/>\nWill the system collapse?<\/p>","protected":false},"author":1,"featured_media":196,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[5,3,7],"tags":[21,45,17,44,19,13,20,22,46],"class_list":["post-26","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure","category-power-bi","category-tabular-analysis-services","tag-aas","tag-adf","tag-analysis-services","tag-data-factory","tag-dax","tag-powerbi","tag-premium","tag-ssis","tag-test"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Wie testet man 1.000 User auf Power BI? [Teil 1] - Data.Engineer BLOG<\/title>\n<meta name=\"description\" content=\"Ein langes Projekt geht zu Ende, \u00fcber viele Monate wurde ein neues Data Warehouse aufgebaut, Analysemodelle erstellt und Reports gebaut \u2013 und jetzt k\u00f6nnen es die Endbenutzer kaum erwarten endlich ihre Reports mit dem coolen Power BI zu verwenden\u2026Was passiert, wenn jetzt 1.000 User gleichzeitig zugreifen?Wird das System zusammenbrechen?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wie testet man 1.000 User auf Power BI? [Teil 1] - Data.Engineer BLOG\" \/>\n<meta property=\"og:description\" content=\"Ein langes Projekt geht zu Ende, \u00fcber viele Monate wurde ein neues Data Warehouse aufgebaut, Analysemodelle erstellt und Reports gebaut \u2013 und jetzt k\u00f6nnen es die Endbenutzer kaum erwarten endlich ihre Reports mit dem coolen Power BI zu verwenden\u2026Was passiert, wenn jetzt 1.000 User gleichzeitig zugreifen?Wird das System zusammenbrechen?\" \/>\n<meta property=\"og:url\" content=\"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Data.Engineer BLOG\" \/>\n<meta property=\"article:published_time\" content=\"2020-12-16T19:56:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-12-20T21:20:20+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/The-Matrix-640x360_PowerBI.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"360\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"data.engineer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"data.engineer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\\\/\\\/blog.dataengineer.at\\\/en\\\/wie-testet-man-1-000-user-auf-power-bi-teil-1\\\/#article\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/blog.dataengineer.at\\\/en\\\/wie-testet-man-1-000-user-auf-power-bi-teil-1\\\/\"},\"author\":{\"name\":\"data.engineer\",\"@id\":\"http:\\\/\\\/blog.dataengineer.at\\\/#\\\/schema\\\/person\\\/fe307e617b3de204775ffd3d9d8dc04a\"},\"headline\":\"Wie testet man 1.000 User auf Power BI? [Teil 1]\",\"datePublished\":\"2020-12-16T19:56:27+00:00\",\"dateModified\":\"2020-12-20T21:20:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/blog.dataengineer.at\\\/en\\\/wie-testet-man-1-000-user-auf-power-bi-teil-1\\\/\"},\"wordCount\":883,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\\\/\\\/blog.dataengineer.at\\\/#\\\/schema\\\/person\\\/fe307e617b3de204775ffd3d9d8dc04a\"},\"image\":{\"@id\":\"http:\\\/\\\/blog.dataengineer.at\\\/en\\\/wie-testet-man-1-000-user-auf-power-bi-teil-1\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blog.dataengineer.at\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/The-Matrix-640x360_PowerBI.jpg\",\"keywords\":[\"aas\",\"adf\",\"analysis services\",\"data factory\",\"dax\",\"powerbi\",\"premium\",\"ssis\",\"test\"],\"articleSection\":[\"Azure\",\"Power BI\",\"Tabular \\\/ Analysis Services\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\\\/\\\/blog.dataengineer.at\\\/en\\\/wie-testet-man-1-000-user-auf-power-bi-teil-1\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/blog.dataengineer.at\\\/en\\\/wie-testet-man-1-000-user-auf-power-bi-teil-1\\\/\",\"url\":\"http:\\\/\\\/blog.dataengineer.at\\\/en\\\/wie-testet-man-1-000-user-auf-power-bi-teil-1\\\/\",\"name\":\"Wie testet man 1.000 User auf Power BI? [Teil 1] - Data.Engineer BLOG\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/blog.dataengineer.at\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/blog.dataengineer.at\\\/en\\\/wie-testet-man-1-000-user-auf-power-bi-teil-1\\\/#primaryimage\"},\"image\":{\"@id\":\"http:\\\/\\\/blog.dataengineer.at\\\/en\\\/wie-testet-man-1-000-user-auf-power-bi-teil-1\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blog.dataengineer.at\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/The-Matrix-640x360_PowerBI.jpg\",\"datePublished\":\"2020-12-16T19:56:27+00:00\",\"dateModified\":\"2020-12-20T21:20:20+00:00\",\"description\":\"Ein langes Projekt geht zu Ende, \u00fcber viele Monate wurde ein neues Data Warehouse aufgebaut, Analysemodelle erstellt und Reports gebaut \u2013 und jetzt k\u00f6nnen es die Endbenutzer kaum erwarten endlich ihre Reports mit dem coolen Power BI zu verwenden\u2026Was passiert, wenn jetzt 1.000 User gleichzeitig zugreifen?Wird das System zusammenbrechen?\",\"breadcrumb\":{\"@id\":\"http:\\\/\\\/blog.dataengineer.at\\\/en\\\/wie-testet-man-1-000-user-auf-power-bi-teil-1\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\\\/\\\/blog.dataengineer.at\\\/en\\\/wie-testet-man-1-000-user-auf-power-bi-teil-1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\\\/\\\/blog.dataengineer.at\\\/en\\\/wie-testet-man-1-000-user-auf-power-bi-teil-1\\\/#primaryimage\",\"url\":\"http:\\\/\\\/blog.dataengineer.at\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/The-Matrix-640x360_PowerBI.jpg\",\"contentUrl\":\"http:\\\/\\\/blog.dataengineer.at\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/The-Matrix-640x360_PowerBI.jpg\",\"width\":640,\"height\":360,\"caption\":\"1.000 User auf Power BI\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\\\/\\\/blog.dataengineer.at\\\/en\\\/wie-testet-man-1-000-user-auf-power-bi-teil-1\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"http:\\\/\\\/blog.dataengineer.at\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wie testet man 1.000 User auf Power BI? [Teil 1]\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/blog.dataengineer.at\\\/#website\",\"url\":\"http:\\\/\\\/blog.dataengineer.at\\\/\",\"name\":\"Data.Engineer BLOG\",\"description\":\"All about data...\",\"publisher\":{\"@id\":\"http:\\\/\\\/blog.dataengineer.at\\\/#\\\/schema\\\/person\\\/fe307e617b3de204775ffd3d9d8dc04a\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\\\/\\\/blog.dataengineer.at\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\\\/\\\/blog.dataengineer.at\\\/#\\\/schema\\\/person\\\/fe307e617b3de204775ffd3d9d8dc04a\",\"name\":\"data.engineer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\\\/\\\/blog.dataengineer.at\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/Oliver_Cartoon3_240x320-1-150x150.jpg\",\"url\":\"http:\\\/\\\/blog.dataengineer.at\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/Oliver_Cartoon3_240x320-1-150x150.jpg\",\"contentUrl\":\"http:\\\/\\\/blog.dataengineer.at\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/Oliver_Cartoon3_240x320-1-150x150.jpg\",\"caption\":\"data.engineer\"},\"logo\":{\"@id\":\"http:\\\/\\\/blog.dataengineer.at\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/Oliver_Cartoon3_240x320-1-150x150.jpg\"},\"sameAs\":[\"http:\\\/\\\/dataengineer.at\"],\"url\":\"http:\\\/\\\/blog.dataengineer.at\\\/en\\\/author\\\/data-engineer\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Wie testet man 1.000 User auf Power BI? [Teil 1] - Data.Engineer BLOG","description":"Ein langes Projekt geht zu Ende, \u00fcber viele Monate wurde ein neues Data Warehouse aufgebaut, Analysemodelle erstellt und Reports gebaut \u2013 und jetzt k\u00f6nnen es die Endbenutzer kaum erwarten endlich ihre Reports mit dem coolen Power BI zu verwenden\u2026Was passiert, wenn jetzt 1.000 User gleichzeitig zugreifen?Wird das System zusammenbrechen?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/","og_locale":"en_US","og_type":"article","og_title":"Wie testet man 1.000 User auf Power BI? [Teil 1] - Data.Engineer BLOG","og_description":"Ein langes Projekt geht zu Ende, \u00fcber viele Monate wurde ein neues Data Warehouse aufgebaut, Analysemodelle erstellt und Reports gebaut \u2013 und jetzt k\u00f6nnen es die Endbenutzer kaum erwarten endlich ihre Reports mit dem coolen Power BI zu verwenden\u2026Was passiert, wenn jetzt 1.000 User gleichzeitig zugreifen?Wird das System zusammenbrechen?","og_url":"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/","og_site_name":"Data.Engineer BLOG","article_published_time":"2020-12-16T19:56:27+00:00","article_modified_time":"2020-12-20T21:20:20+00:00","og_image":[{"width":640,"height":360,"url":"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/The-Matrix-640x360_PowerBI.jpg","type":"image\/jpeg"}],"author":"data.engineer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"data.engineer","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#article","isPartOf":{"@id":"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/"},"author":{"name":"data.engineer","@id":"http:\/\/blog.dataengineer.at\/#\/schema\/person\/fe307e617b3de204775ffd3d9d8dc04a"},"headline":"Wie testet man 1.000 User auf Power BI? [Teil 1]","datePublished":"2020-12-16T19:56:27+00:00","dateModified":"2020-12-20T21:20:20+00:00","mainEntityOfPage":{"@id":"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/"},"wordCount":883,"commentCount":0,"publisher":{"@id":"http:\/\/blog.dataengineer.at\/#\/schema\/person\/fe307e617b3de204775ffd3d9d8dc04a"},"image":{"@id":"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/The-Matrix-640x360_PowerBI.jpg","keywords":["aas","adf","analysis services","data factory","dax","powerbi","premium","ssis","test"],"articleSection":["Azure","Power BI","Tabular \/ Analysis Services"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/","url":"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/","name":"Wie testet man 1.000 User auf Power BI? [Teil 1] - Data.Engineer BLOG","isPartOf":{"@id":"http:\/\/blog.dataengineer.at\/#website"},"primaryImageOfPage":{"@id":"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#primaryimage"},"image":{"@id":"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/The-Matrix-640x360_PowerBI.jpg","datePublished":"2020-12-16T19:56:27+00:00","dateModified":"2020-12-20T21:20:20+00:00","description":"Ein langes Projekt geht zu Ende, \u00fcber viele Monate wurde ein neues Data Warehouse aufgebaut, Analysemodelle erstellt und Reports gebaut \u2013 und jetzt k\u00f6nnen es die Endbenutzer kaum erwarten endlich ihre Reports mit dem coolen Power BI zu verwenden\u2026Was passiert, wenn jetzt 1.000 User gleichzeitig zugreifen?Wird das System zusammenbrechen?","breadcrumb":{"@id":"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#primaryimage","url":"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/The-Matrix-640x360_PowerBI.jpg","contentUrl":"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/The-Matrix-640x360_PowerBI.jpg","width":640,"height":360,"caption":"1.000 User auf Power BI"},{"@type":"BreadcrumbList","@id":"http:\/\/blog.dataengineer.at\/en\/wie-testet-man-1-000-user-auf-power-bi-teil-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"http:\/\/blog.dataengineer.at\/"},{"@type":"ListItem","position":2,"name":"Wie testet man 1.000 User auf Power BI? [Teil 1]"}]},{"@type":"WebSite","@id":"http:\/\/blog.dataengineer.at\/#website","url":"http:\/\/blog.dataengineer.at\/","name":"Data.Engineer BLOG","description":"All about data...","publisher":{"@id":"http:\/\/blog.dataengineer.at\/#\/schema\/person\/fe307e617b3de204775ffd3d9d8dc04a"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/blog.dataengineer.at\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"http:\/\/blog.dataengineer.at\/#\/schema\/person\/fe307e617b3de204775ffd3d9d8dc04a","name":"data.engineer","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/Oliver_Cartoon3_240x320-1-150x150.jpg","url":"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/Oliver_Cartoon3_240x320-1-150x150.jpg","contentUrl":"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/Oliver_Cartoon3_240x320-1-150x150.jpg","caption":"data.engineer"},"logo":{"@id":"http:\/\/blog.dataengineer.at\/wp-content\/uploads\/2020\/12\/Oliver_Cartoon3_240x320-1-150x150.jpg"},"sameAs":["http:\/\/dataengineer.at"],"url":"http:\/\/blog.dataengineer.at\/en\/author\/data-engineer\/"}]}},"post_mailing_queue_ids":[],"_links":{"self":[{"href":"http:\/\/blog.dataengineer.at\/en\/wp-json\/wp\/v2\/posts\/26","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.dataengineer.at\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.dataengineer.at\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.dataengineer.at\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.dataengineer.at\/en\/wp-json\/wp\/v2\/comments?post=26"}],"version-history":[{"count":11,"href":"http:\/\/blog.dataengineer.at\/en\/wp-json\/wp\/v2\/posts\/26\/revisions"}],"predecessor-version":[{"id":333,"href":"http:\/\/blog.dataengineer.at\/en\/wp-json\/wp\/v2\/posts\/26\/revisions\/333"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/blog.dataengineer.at\/en\/wp-json\/wp\/v2\/media\/196"}],"wp:attachment":[{"href":"http:\/\/blog.dataengineer.at\/en\/wp-json\/wp\/v2\/media?parent=26"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.dataengineer.at\/en\/wp-json\/wp\/v2\/categories?post=26"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.dataengineer.at\/en\/wp-json\/wp\/v2\/tags?post=26"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}