<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Performance &#8211; DataMartIn</title>
	<atom:link href="https://datamartin.ca/category/performance/feed/" rel="self" type="application/rss+xml" />
	<link>https://datamartin.ca</link>
	<description>We Know Data</description>
	<lastBuildDate>Tue, 30 Jul 2024 13:22:40 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.1</generator>
	<item>
		<title>Step-by-step instructions to configure Incremental refresh</title>
		<link>https://datamartin.ca/2022/09/29/step-by-step-instructions-to-configure-incremental-refresh/</link>
		
		<dc:creator><![CDATA[Nuric Ugarte]]></dc:creator>
		<pubDate>Thu, 29 Sep 2022 21:06:15 +0000</pubDate>
				<category><![CDATA[Incremental Refresh]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Power BI]]></category>
		<guid isPermaLink="false">https://site1668528124.mywhc.ca/?p=504</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<div  data-mk-stretch-content="true" class="wpb_row vc_row vc_row-fluid jupiter-donut- mk-fullwidth-false  attched-false     js-master-row  mk-grid">
				
<div class="vc_col-sm-12 wpb_column column_container  jupiter-donut- _ jupiter-donut-height-full">
	
<div id="text-block-2" class="mk-text-block  jupiter-donut- ">

	
	<p>In this article, I explain how to set up an incremental refresh in Power BI, the benefits of apply this policy in your data models what are the requirements for it and the important considerations you have to consider.</p>
<h1><strong>Step-by-step instructions to configure Incremental refresh </strong></h1>
<p>Incremental refresh policies are defined in Power BI Desktop to help you to filter large datasets by using Power Query date/time parameters and to dynamically partition the data into ranges once published to the Power BI service.</p>
<p>Incremental refresh is supported for Power BI Premium, Premium per user, Power BI Pro, and Power BI Embedded datasets. But the real-time DirectQuery partition is only supported for datasets in Premium capacities.</p>
<p><strong>Benefits:</strong></p>
<ul>
<li>Faster time refresh as is not necessary to refresh the entire dataset.</li>
<li>Lower consumption of memory and other resources in both Power BI and data source systems because incremental refresh optimizes refresh operations at the partition level in the dataset.</li>
<li>Reduces the amount of unnecessary historical data stored in your dataset.</li>
<li>Minimize network problems because the queries to source data   return quickly the query output.</li>
<li>Able to work with large data models in Power BI Desktop without being limited by the memory resources available on your desktop computer.</li>
</ul>
<p><strong>Requirements to Configure Incremental Refresh</strong><strong>:</strong></p>
<ul>
<li>The column used to filter the table must be a date/time or <a href="https://docs.microsoft.com/en-us/power-bi/connect-data/incremental-refresh-configure#convert-datetime-to-integer" data-anchor="#convert-datetime-to-integer"><u>integer data type</u></a>.</li>
<li>To the incremental refresh works the data source should support <u>query folding</u> because the partition filters must be pushed to the source system when queries are submitted for refresh operations. Otherwise, Power BI will show the following warning:</li>
</ul>
<p><img decoding="async" class="wp-image-505 aligncenter" src="/wp-content/uploads/2022/09/screenshot_1-300x65.jpg" alt="" width="586" height="127" srcset="https://datamartin.ca/wp-content/uploads/2022/09/screenshot_1-300x65.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/screenshot_1-768x168.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/screenshot_1.jpg 981w" sizes="(max-width: 586px) 100vw, 586px" /></p>
<p><strong>Steps</strong></p>
<ol>
<li><strong>Create the RangeStart and RangeEnd parameters:</strong> These are used to filter the number of rows initially loaded into the Power BI Desktop model that have a date/time within the specified period.</li>
</ol>
<p>In the Power Query Editor, select <strong>Manage Parameters</strong>:</p>
<p><img decoding="async" class="wp-image-511 aligncenter" src="/wp-content/uploads/2022/09/manage-param-copy-274x300.jpg" alt="" width="667" height="730" srcset="https://datamartin.ca/wp-content/uploads/2022/09/manage-param-copy-274x300.jpg 274w, https://datamartin.ca/wp-content/uploads/2022/09/manage-param-copy.jpg 521w" sizes="(max-width: 667px) 100vw, 667px" /></p>
<p>Create RangeEnd Parameter:</p>
<ul>
<li>In <strong>Name</strong> type RangeEnd (case sentitive).</li>
<li>Check as <strong>Required</strong></li>
<li>In <strong>Type</strong>, select Date/Time</li>
<li>In <strong>Current Value</strong>enter a end date/time value respectively.</li>
</ul>
<p><img decoding="async" class="wp-image-512 aligncenter" src="/wp-content/uploads/2022/09/param2-273x300.jpg" alt="" width="451" height="496" srcset="https://datamartin.ca/wp-content/uploads/2022/09/param2-273x300.jpg 273w, https://datamartin.ca/wp-content/uploads/2022/09/param2.jpg 617w" sizes="(max-width: 451px) 100vw, 451px" /></p>
<p><strong>Note:</strong> When the dataset is published the parameter values are overridden automatically by the Power BI service for each partition. There&#8217;s no need to set them in dataset settings in the service.</p>
<ol>
<li><strong>Filter the data using RangeStart and RangeEnd parameters. </strong>In Power Query Editor, Selecting the <strong>Custom Filter</strong>menu option for the date column you want to filter on:</li>
</ol>
<p><img decoding="async" class="wp-image-506 aligncenter" src="/wp-content/uploads/2022/09/filter-copy-247x300.jpg" alt="" width="409" height="497" srcset="https://datamartin.ca/wp-content/uploads/2022/09/filter-copy-247x300.jpg 247w, https://datamartin.ca/wp-content/uploads/2022/09/filter-copy.jpg 550w" sizes="(max-width: 409px) 100vw, 409px" /></p>
<p>In the first condition select is <strong>after</strong> or <strong>is after or equal to</strong>, select Parameter:</p>
<p><img decoding="async" class="wp-image-507 aligncenter" src="/wp-content/uploads/2022/09/filter-rows-copy-300x133.jpg" alt="" width="471" height="209" srcset="https://datamartin.ca/wp-content/uploads/2022/09/filter-rows-copy-300x133.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/filter-rows-copy-1024x454.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/filter-rows-copy-768x341.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/filter-rows-copy.jpg 1071w" sizes="(max-width: 471px) 100vw, 471px" /></p>
<p>In the second condition, select <strong>is before</strong> and and then select <strong>RangeEnd:</strong></p>
<p><img decoding="async" class="wp-image-508 aligncenter" src="/wp-content/uploads/2022/09/filter-rows-2-copy-300x135.jpg" alt="" width="567" height="255" srcset="https://datamartin.ca/wp-content/uploads/2022/09/filter-rows-2-copy-300x135.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/filter-rows-2-copy-1024x460.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/filter-rows-2-copy-768x345.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/filter-rows-2-copy.jpg 1039w" sizes="(max-width: 567px) 100vw, 567px" /></p>
<p>Important:</p>
<ul>
<li>If you selected <strong>is after</strong>in the first condition, then select <strong>is before or equal to</strong></li>
<li>If you selected <strong>is after or equal to</strong>in the first condition, then select <strong>is before</strong> for the second one.</li>
</ul>
<p>Other filter combinations may result in double counting of rows.</p>
<p>Click ok to close, and then click Close &amp; Apply.</p>
<h3><strong>3. </strong>Define the Incremental refresh policy: In data view, right click on the table and then click on “Incremental Refresh”:</h3>
<p><img decoding="async" class="wp-image-509 aligncenter" src="/wp-content/uploads/2022/09/increm-refresh-copy-210x300.jpg" alt="" width="448" height="640" srcset="https://datamartin.ca/wp-content/uploads/2022/09/increm-refresh-copy-210x300.jpg 210w, https://datamartin.ca/wp-content/uploads/2022/09/increm-refresh-copy.jpg 461w" sizes="(max-width: 448px) 100vw, 448px" /></p>
<p><strong>4. Specify required settings:</strong></p>
<p><img decoding="async" class="wp-image-510 aligncenter" src="/wp-content/uploads/2022/09/increm-refresh-post-copy-300x199.jpg" alt="" width="608" height="403" /></p>
<p>Review your settings and then click <strong>Apply</strong>. Source data is not loaded with this step.</p>
<p><strong>5. Save and publish to the service:</strong> Once the above steps have been completed, save your model, and publish it to the service.</p>
<p>If your dataset is going to be large, be sure to enable <a href="https://docs.microsoft.com/en-us/power-bi/enterprise/service-premium-large-models#enable-large-datasets" data-anchor="#enable-large-datasets">Large dataset storage</a> format before to invoking the first refresh in the service.</p>
<p><strong>6. Refresh dataset:</strong> You can now refresh the model. The first refresh may take longer to import the historical data. Following refreshes will be much faster because only data for the period specified in the refresh policy setting will be refreshed.</p>
<p><strong>Important considerations</strong></p>
<p>&#8211; Filter date column updates: In case of a deletion in the historical range and not the incremental range it will not be detected. This could cause data refresh failures due to partition-key conflicts.</p>
<p>&#8211; Refresh policies are defined in Power BI Desktop, and they are applied by refresh operations in the service.</p>
<p>&#8211; Be careful when you make changes in the original Power BI files because if you republish it, you could remove any of the existing partitions. In this case you must deploy only the metadata using tools as ALM Toolkit or Tabular by using Tabular Model Scripting Language (TMSL). Check: Metadata-only deployment using ALM Toolkit. Apply to Power BI premium.</p>
<p>&#8211; Once a PBIX file with an incremental-refresh policy is published in Power BI service, you cannot download the dataset back and open it in Power BI Desktop.</p>

	<div class="clearboth"></div>
</div>

</div>
	</div>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Essential checklist to keep your Power BI Solutions optimized. Part IV. Visualization Good Practices</title>
		<link>https://datamartin.ca/2022/09/29/essential-checklist-to-keep-your-power-bi-solutions-optimized-part-iv-visualization-good-practices/</link>
		
		<dc:creator><![CDATA[Nuric Ugarte]]></dc:creator>
		<pubDate>Thu, 29 Sep 2022 14:50:14 +0000</pubDate>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Data Visualization]]></category>
		<guid isPermaLink="false">https://site1668528124.mywhc.ca/?p=472</guid>

					<description><![CDATA[This last article includes a list of best practices for data visualization. &#8211; Use filters in your visualizations to reduce the amount of data that display: The more data a visual must display, the slower it will load, so apply filters in the Filters pane, or use Top N, to reduce the number of items [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>This last article includes a list of best practices for data visualization.</p>
<p><strong>&#8211; Use filters in your visualizations to reduce the amount of data that display: </strong>The more data a visual must display, the slower it will load, so apply filters in the Filters pane, or use Top N, to reduce the number of items displayed.</p>
<p>So, if your report is connected to a large data model and you do not apply any filtering, all the data will be loaded into memory and decompressed on each update, creating a huge memory demand.</p>
<p><img decoding="async" class="wp-image-473 aligncenter" src="/wp-content/uploads/2022/09/top10-300x96.jpg" alt="" width="697" height="223" srcset="https://datamartin.ca/wp-content/uploads/2022/09/top10-300x96.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/top10-768x247.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/top10.jpg 962w" sizes="(max-width: 697px) 100vw, 697px" /></p>
<p><strong>&#8211; Only include the necessary number of visuals in your report: </strong>This will decrease the number of calculations that Power BI is performing when rendering your report. For example, you should use a multi-row card instead of using multiple single cards.</p>
<p><img decoding="async" class="wp-image-474 aligncenter" src="/wp-content/uploads/2022/09/cards-300x97.jpg" alt="" width="709" height="229" srcset="https://datamartin.ca/wp-content/uploads/2022/09/cards-300x97.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/cards-768x249.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/cards.jpg 878w" sizes="(max-width: 709px) 100vw, 709px" /></p>
<p><strong>&#8211; Limit the use of slicers:</strong> Because they are visualizations, the underlying data will be updated every time the dashboard is refreshed, which could affect the performance.</p>
<p><img decoding="async" class="wp-image-475 aligncenter" src="/wp-content/uploads/2022/09/slicers-300x53.jpg" alt="" width="651" height="115" srcset="https://datamartin.ca/wp-content/uploads/2022/09/slicers-300x53.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/slicers-768x135.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/slicers.jpg 979w" sizes="(max-width: 651px) 100vw, 651px" /></p>
<p><strong>&#8211; Use Microsoft-certified custom visuals: </strong>These have the Microsoft’s guarantee that these visual elements perform at their best, in addition have more options than non-certified ones.<strong> </strong></p>
<p><img decoding="async" class="wp-image-476 aligncenter" src="/wp-content/uploads/2022/09/pbi-certified-visuals-300x280.jpg" alt="" width="653" height="610" srcset="https://datamartin.ca/wp-content/uploads/2022/09/pbi-certified-visuals-300x280.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/pbi-certified-visuals-768x716.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/pbi-certified-visuals.jpg 972w" sizes="(max-width: 653px) 100vw, 653px" /></p>
<p><strong>&#8211; Avoid unnecessary interactions between visuals:</strong> Power BI automatically creates interactions between all the visuals on a page, which require high loading capacity that could slow down the loading of reports.</p>
<p>Therefore, make sure to eliminate the unnecessary interactions that Power BI creates by default.</p>
<p><strong>&#8211; Use <u>Performance Analyzer</u> to Analyze the performance of your report elements: </strong>such as visuals and DAX formulas when users interact with them, and which consume the most resources.</p>
<p><img decoding="async" class="wp-image-477 aligncenter" src="/wp-content/uploads/2022/09/perf-analyzer1-300x112.jpg" alt="" width="753" height="281" srcset="https://datamartin.ca/wp-content/uploads/2022/09/perf-analyzer1-300x112.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/perf-analyzer1-1024x382.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/perf-analyzer1-768x286.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/perf-analyzer1.jpg 1268w" sizes="(max-width: 753px) 100vw, 753px" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>✅ Excel Checklist</strong></p>
<p>Download the Excel checklist at the following link: <a href="https://github.com/NuricBI/Checklist">https://github.com/NuricBI/Checklist</a></p>
<p><strong>Conclusions</strong></p>
<p>In this article we reviewed how to improve and analyze the performance of your Power BI solutions in the different development layers:</p>
<p>✔ Data source.</p>
<p>✔ Data model.</p>
<p>✔ DAX.</p>
<p>✔ Data visualization.</p>
<p>You must be careful in each of them, because in whatever could be the cause that affects the final performance of the report.</p>
<p>Keep handy the excel file with the summarized list of best practices and recommended tools to analyze the performance of each phase of your solution.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Tools to Analyze the Performance of your Power BI Solution</title>
		<link>https://datamartin.ca/2022/09/29/tools-to-analyze-the-performance-of-your-power-bi-solution/</link>
		
		<dc:creator><![CDATA[Nuric Ugarte]]></dc:creator>
		<pubDate>Thu, 29 Sep 2022 14:37:31 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Power BI]]></category>
		<guid isPermaLink="false">https://site1668528124.mywhc.ca/?p=424</guid>

					<description><![CDATA[In this post I&#8217;ll show you several tools that can help you analyze the performance of your Power BI solutions at every step of the way, some of them are built-in features and others are free and open source. In this checklist you will find the tools you can use at every step of the [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>In this post I&#8217;ll show you several tools that can help you analyze the performance of your Power BI solutions at every step of the way, some of them are built-in features and others are free and open source.</p>
<p>In this checklist you will find the tools you can use at every step of the way:</p>
<p><strong><img decoding="async" class="wp-image-555 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/portada-300x157.jpg" alt="" width="519" height="272" srcset="https://datamartin.ca/wp-content/uploads/2022/09/portada-300x157.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/portada-768x402.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/portada.jpg 896w" sizes="(max-width: 519px) 100vw, 519px" /></strong></p>
<p><strong>1. DATA SOURCE</strong></p>
<p><strong>Query Diagnostic</strong></p>
<p><strong> </strong>This Power BI Desktop feature will help you understand what happens inside the Power Query when a query is executed, the parts of the query that are being performed locally or remotely, and the slowdowns you may encounter during:</p>
<p>&#8211; Loading and transforming your data.</p>
<p>&#8211; Refreshing your data in Power Query.</p>
<p><strong>Start a Query Diagnostic:</strong></p>
<ul>
<li>Go to the &#8216;Tools&#8217; tab in the Power Query Editor ribbon. You will have the following options Diagnose Step and Start Diagnostics / Stop Diagnostics:</li>
</ul>
<p><strong><img decoding="async" class="wp-image-590 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics-300x83.jpg" alt="" width="401" height="111" srcset="https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics-300x83.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics-1024x285.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics-768x213.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics.jpg 1083w" sizes="(max-width: 401px) 100vw, 401px" /></strong></p>
<p><strong>Start Diagnostics / Stop Diagnostics</strong> is more used because it provides complete information about each query while <strong>Diagnose Step </strong>analyzes the performance of a specific step without showing you the diagnostic of the other steps of the query.</p>
<ul>
<li>In Power Query Editor, select the query you want to analyze.</li>
<li>Go to Tools in the Home ribbon, click “Start Diagnostics”.</li>
<li>Perform the evaluations you want analyze, as: authoring, refreshing a preview, full refresh, etc.</li>
<li>When you are finished, make sure that you select “Stop Diagnostics”.</li>
</ul>
<p>This generates two new queries with the diagnostics results:</p>
<p><img decoding="async" class=" wp-image-615 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics-1-300x79.jpg" alt="" width="365" height="96" srcset="https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics-1-300x79.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics-1-768x202.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics-1.jpg 771w" sizes="(max-width: 365px) 100vw, 365px" /></p>
<p>In my opinion the most important column is the Exclusive Duration, you should convert it to seconds in the Power Query Editor and then summarize it to get an idea of where time is spent and identify how you can optimize the queries in your power bi models:</p>
<p><strong><img decoding="async" class="wp-image-616 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics-2-300x151.jpg" alt="" width="515" height="259" srcset="https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics-2-300x151.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics-2-1024x514.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics-2-768x386.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics-2.jpg 1259w" sizes="(max-width: 515px) 100vw, 515px" /></strong></p>
<p><strong>2. DATA MODEL</strong></p>
<p><strong>DAX Studio</strong></p>
<p>&#8211; Launch DAX Studio. Select the model that you want to analyze:</p>
<p><img decoding="async" class="wp-image-518 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/dax-300x165.jpg" alt="" width="385" height="212" srcset="https://datamartin.ca/wp-content/uploads/2022/09/dax-300x165.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/dax-768x421.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/dax.jpg 964w" sizes="(max-width: 385px) 100vw, 385px" /></p>
<p>&#8211; Go to the advanced tab and click on “View Metrics”:</p>
<p><img decoding="async" class="wp-image-617 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/dax-studio-1-300x130.jpg" alt="" width="420" height="182" srcset="https://datamartin.ca/wp-content/uploads/2022/09/dax-studio-1-300x130.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/dax-studio-1.jpg 585w" sizes="(max-width: 420px) 100vw, 420px" /></p>
<p>This will show metrics that help you quickly detect the performance issues.</p>
<p><strong>Cardinality:</strong> This is the number of unique values in a column. High cardinality columns can be particularly expensive, especially when have a string or date/time format.</p>
<p><img decoding="async" class="wp-image-602 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/dax-studio2-300x95.jpg" alt="" width="540" height="171" srcset="https://datamartin.ca/wp-content/uploads/2022/09/dax-studio2-300x95.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/dax-studio2-1024x326.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/dax-studio2-768x244.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/dax-studio2.jpg 1261w" sizes="(max-width: 540px) 100vw, 540px" /></p>
<p>If possible, remove columns such as GUID and timestamp from a SQL Server table from your model. In addition, I recommend splitting Datetime columns into two columns, one for date and one for time.</p>
<p><strong>Size information:</strong> The other important thing you can see is the space that is taking up each table and column of the model, for example:</p>
<p><img decoding="async" class="wp-image-618 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/dax-studio3-300x112.jpg" alt="" width="584" height="218" srcset="https://datamartin.ca/wp-content/uploads/2022/09/dax-studio3-300x112.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/dax-studio3-1024x381.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/dax-studio3-768x285.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/dax-studio3.jpg 1259w" sizes="(max-width: 584px) 100vw, 584px" /></p>
<p>In this case, the Work Order table is taking up almost 20% of the entire model, which helps you analyze where your model consumes the most memory and choose which columns to remove to optimize it.</p>
<p><strong>Summary information:</strong> In the Summary tab you can see the total size of this model, in this example the analyzed PBIX is consuming 198.27 MB. You can also see the number of tables and columns:</p>
<p><strong><img decoding="async" class="wp-image-619 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/dax-studio4-300x112.jpg" alt="" width="431" height="161" srcset="https://datamartin.ca/wp-content/uploads/2022/09/dax-studio4-300x112.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/dax-studio4-768x286.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/dax-studio4.jpg 923w" sizes="(max-width: 431px) 100vw, 431px" /></strong></p>
<p><strong>Bravo for Power BI</strong></p>
<p>This is a free open-source tool for users who do not need a high level of complexity. In case you need more advanced functionalities you should use other more advanced tools such as DAX Studio and Tabular Editor.</p>
<p>After downloading Bravo, go to the “Analyze Model” and connect to the data model:</p>
<p><img decoding="async" class="wp-image-620 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/bravo-300x157.jpg" alt="" width="506" height="265" srcset="https://datamartin.ca/wp-content/uploads/2022/09/bravo-300x157.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/bravo-1024x534.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/bravo-768x401.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/bravo.jpg 1263w" sizes="(max-width: 506px) 100vw, 506px" /></p>
<p>You will get information about the tables and columns in your model that are consuming the most memory:</p>
<p><img decoding="async" class="wp-image-621 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/bravo1-300x166.jpg" alt="" width="574" height="318" srcset="https://datamartin.ca/wp-content/uploads/2022/09/bravo1-300x166.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/bravo1-1024x566.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/bravo1-768x425.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/bravo1.jpg 1262w" sizes="(max-width: 574px) 100vw, 574px" /></p>
<p>In addition, you can drill down to see more detail for any table:</p>
<p><img decoding="async" class="wp-image-622 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/bravo2-300x168.jpg" alt="" width="555" height="311" srcset="https://datamartin.ca/wp-content/uploads/2022/09/bravo2-300x168.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/bravo2-1024x572.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/bravo2-768x429.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/bravo2.jpg 1267w" sizes="(max-width: 555px) 100vw, 555px" /></p>
<p>To analyze the unreferenced columns, I recommend my tool <strong><u>Tabular Editor,</u></strong> which can help you identify the reports connected to the dataset where these columns are used.</p>
<p><strong>3. DAX FORMULAS / VISUALIZATION</strong></p>
<p><strong>Performance Analyzer: </strong>To Analyze the performance of your report elements, such as visuals and DAX formulas when users interact with them, and which consume the most resources.</p>
<p>In the View ribbon you can find the Performance Analyzer. By opening this pane and clicking Record, this will show you how fast your report renders when performing different functions in your report.</p>
<p><img decoding="async" class="wp-image-623 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/perf-analyzer-300x107.jpg" alt="" width="339" height="121" srcset="https://datamartin.ca/wp-content/uploads/2022/09/perf-analyzer-300x107.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/perf-analyzer.jpg 695w" sizes="(max-width: 339px) 100vw, 339px" /></p>
<p>You can review the results of your performance test in <strong>the Performance analyzer</strong> pane. To review the tasks in order of duration, longest to shortest, right-click the <strong>Sort</strong> icon next to the <strong>Duration (ms)</strong> column header:</p>
<p><img decoding="async" class="wp-image-624 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/perf-analyzer1-1-300x112.jpg" alt="" width="533" height="199" srcset="https://datamartin.ca/wp-content/uploads/2022/09/perf-analyzer1-1-300x112.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/perf-analyzer1-1-1024x382.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/perf-analyzer1-1-768x286.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/perf-analyzer1-1.jpg 1268w" sizes="(max-width: 533px) 100vw, 533px" /></p>
<p>The log information for each visual shows the time it has taken (duration) to complete the following categories of tasks, which will help you detect what is causing performance delays so you can work on improving those sections.</p>
<ul>
<li><strong>DAX query</strong>&#8211; Time taken by the to send the query and the time it took Analysis Services to return the results.</li>
<li><strong>Visual display</strong>– Rendering time on the screen, including the time required to retrieve web images or geocoding.</li>
<li><strong>Other</strong>&#8211; The time it took the visual to prepare queries, wait for other visuals to complete, or perform other background processing tasks.</li>
</ul>
<p>The only real way to reduce the long duration is to optimize DAX queries for other visuals or reduce the number of visuals in the report.</p>
<p><strong>4. DATA MODEL / DAX FORMULAS / VISUALIZATION</strong></p>
<p><a href="https://docs.tabulareditor.com/Best-Practice-Analyzer.html"><strong>Best Practice Analyzer</strong></a><strong> within </strong><a href="https://tabulareditor.com/"><strong>Tabular Editor</strong></a><strong>.</strong></p>
<p>Best Practice Analyzer is an external tool that scans your data model and easily validates if your data model complies with all best practices at formatting level, performance, naming conventions and DAX expressions.</p>
<p>I analyzed a test data model getting the following information which shows the potential issues and improvements that can be made in the data model in each category:</p>
<p><img decoding="async" class="wp-image-625 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/tabular-editor-245x300.jpg" alt="" width="441" height="540" srcset="https://datamartin.ca/wp-content/uploads/2022/09/tabular-editor-245x300.jpg 245w, https://datamartin.ca/wp-content/uploads/2022/09/tabular-editor.jpg 632w" sizes="(max-width: 441px) 100vw, 441px" /></p>
<p>This can help you save a lot of time by avoiding having to validate all these recommendations manually.</p>
<p>In this article 👉 <strong><a href="https://powerbi.microsoft.com/en-us/blog/best-practice-rules-to-improve-your-models-performance/">Best practice rules to improve your model’s performance</a></strong> you can read the rules that analyze which are segmented into categories. Some rules are more aesthetic-oriented while others are more focused on performance optimization.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Essential checklist to keep your Power BI Solutions optimized. Part II. Data model good practices</title>
		<link>https://datamartin.ca/2022/09/29/essential-checklist-to-keep-your-power-bi-solutions-optimized-part-ii-data-model-good-practices/</link>
		
		<dc:creator><![CDATA[Nuric Ugarte]]></dc:creator>
		<pubDate>Thu, 29 Sep 2022 14:37:23 +0000</pubDate>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Tabular Models]]></category>
		<guid isPermaLink="false">https://site1668528124.mywhc.ca/?p=420</guid>

					<description><![CDATA[This second article is focused on best practices for designing your data model, optimizing CPU, RAM, and workspace capacity consumption by minimizing memory usage. Benefits. Reduce space and processing time. Faster refresh times. Lower latency reports. Reduce the time development. More user-friendly data models because the user will not navigate through a bunch of useless [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>This second article is focused on best practices for designing your data model, optimizing CPU, RAM, and workspace capacity consumption by minimizing memory usage.</p>
<p><strong>Benefits</strong>.</p>
<ul>
<li>Reduce space and processing time.</li>
<li>Faster refresh times.</li>
<li>Lower latency reports.</li>
<li>Reduce the time development.</li>
<li>More user-friendly data models because the user will not navigate through a bunch of useless objects that are not needed to build the reports.</li>
</ul>
<p><strong>&#8211; Choose the appropriate dataset mode for your solution:</strong> You can use Import, DirectQuery, and Composite model.</p>
<p>There are a variety of factors to consider when deciding which method to use, so I recommend that you review the advantages, disadvantages, and limitations of each in the <a href="https://docs.microsoft.com/en-us/power-bi/connect-data/service-dataset-modes-understand">Microsoft documentation</a> so that you can select the correct one.</p>
<p><strong>&#8211; Build your data model using a <u>star schema</u></strong> architecture avoiding snowflake schema:</p>
<p><strong>Benefits</strong></p>
<ul>
<li>More user friendly.</li>
<li>The DAX formulas are simpler.</li>
<li>The time refreshes are faster.</li>
<li>Reduces redundant data</li>
</ul>
<p>Star schema are specialized data models used when designing data warehouses, the tables are classified as either dimension or fact. In this schema the fact sits in the middle and the dimensions are all around related directly to the fact which gives it the shape of a star.</p>
<p><strong><img decoding="async" class="wp-image-592 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/star-schema-300x221.jpg" alt="" width="624" height="460" srcset="https://datamartin.ca/wp-content/uploads/2022/09/star-schema-300x221.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/star-schema.jpg 756w" sizes="(max-width: 624px) 100vw, 624px" /></strong></p>
<p><strong>&#8211; Only include the essential columns </strong><strong>to create the reports:</strong> You do not want a report larger than necessary. However, removing the unnecessary columns could be too complicated when you have a lot of reports connected to the dataset because they can break.</p>
<p>I created a tool to help you to clean up your data models easily and quickly, you can download it for free, visit the link: <u><a href="https://datamartin.ca/2022/09/18/data-model-cleaner-for-power-bi-and-analysis-services-ssas/">Tabular model cleane</a>r</u>.</p>
<p><strong><img decoding="async" class="wp-image-593 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/used-unused-objects-300x105.jpg" alt="" width="626" height="219" srcset="https://datamartin.ca/wp-content/uploads/2022/09/used-unused-objects-300x105.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/used-unused-objects-1024x359.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/used-unused-objects-768x270.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/used-unused-objects.jpg 1114w" sizes="(max-width: 626px) 100vw, 626px" /></strong></p>
<p><strong>&#8211; Load in your data model the necessary tables</strong>: Probably you need to import a table in Power Query to make intermediate calculations but if you won&#8217;t use this table in your reports remember unchecking the &#8220;enable load&#8221; option in Power Query:</p>
<p><strong><img decoding="async" class="wp-image-594 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/load-300x266.jpg" alt="" width="287" height="255" srcset="https://datamartin.ca/wp-content/uploads/2022/09/load-300x266.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/load.jpg 312w" sizes="(max-width: 287px) 100vw, 287px" /></strong></p>
<p><strong>&#8211; Apply an <a href="https://datamartin.ca/2022/09/29/step-by-step-instructions-to-configure-incremental-refresh/"><u>Incremental Refresh</u></a> policy to reduce the amount of data: </strong>Power BI desktop is limited for your computer resources, if you are working with very large models will be necessary configure the Incremental refresh.</p>
<p><strong>Benefits</strong></p>
<ul>
<li>Optimize your time development because you work over a smaller data model.</li>
<li>Shorter data refresh time.</li>
<li>Lower resource consumption in the Power BI Service.</li>
</ul>
<p>Check our article: <a href="https://datamartin.ca/2022/09/29/step-by-step-instructions-to-configure-incremental-refresh/"><u>Configure an Incremental Refresh Policy in seven steps</u></a></p>
<p><strong><img decoding="async" class="wp-image-595 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/increm-refresh-post-copy-1-300x199.jpg" alt="" width="481" height="319" srcset="https://datamartin.ca/wp-content/uploads/2022/09/increm-refresh-post-copy-1-300x199.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/increm-refresh-post-copy-1-1024x680.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/increm-refresh-post-copy-1-768x510.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/increm-refresh-post-copy-1.jpg 1148w" sizes="(max-width: 481px) 100vw, 481px" /></strong></p>
<p><strong>&#8211; Group by and summarize combined with composite models:</strong> Depending on the level of granularity that you need to handle in your reports you can group your data by month, division, city for example.</p>
<p>In case you have to visualize a detail of the data, you can create a composite model and adding a drill through page that retrieves the detail data from a DirectQuery table.</p>
<p>For more detail check: <a href="https://learn.microsoft.com/en-us/power-bi/transform-model/desktop-composite-models">Composite Models in Power BI Desktop</a></p>
<p><strong>&#8211; Avoid many-to-many relationships: </strong>Most of the time, this can be avoided by creating a bridge table with unique values and one-to-many relationships from the bridge table to the fact tables, thus adopting star schema.</p>
<p><strong><img decoding="async" class="wp-image-596 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/n-to-n-300x141.jpg" alt="" width="530" height="249" srcset="https://datamartin.ca/wp-content/uploads/2022/09/n-to-n-300x141.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/n-to-n-1024x481.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/n-to-n-768x361.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/n-to-n.jpg 1244w" sizes="(max-width: 530px) 100vw, 530px" /></strong></p>
<p><strong>&#8211; Avoid both-directional relationships in your data model:</strong> You need to have a solid data modeling knowledge to measure the impact of this type of relationship in your data model, otherwise this could cause:</p>
<ul>
<li>Unexpected results</li>
<li>Performance problems</li>
</ul>
<p><img decoding="async" class="wp-image-597 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/many-to-many-300x140.jpg" alt="" width="581" height="271" srcset="https://datamartin.ca/wp-content/uploads/2022/09/many-to-many-300x140.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/many-to-many-1024x478.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/many-to-many-768x358.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/many-to-many.jpg 1159w" sizes="(max-width: 581px) 100vw, 581px" /></p>
<p>Instead of creating a bi-directional relationship, try using a measure like the one below to get the value you need:</p>
<p><img decoding="async" class="wp-image-598 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/cross-filter-300x59.jpg" alt="" width="473" height="93" srcset="https://datamartin.ca/wp-content/uploads/2022/09/cross-filter-300x59.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/cross-filter-768x152.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/cross-filter.jpg 803w" sizes="(max-width: 473px) 100vw, 473px" /></p>
<p>&#8211; Add a <strong>date table</strong> to your model and mark it as a date table.</p>
<p><strong><img decoding="async" class="wp-image-599 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/data-table-300x107.jpg" alt="" width="547" height="195" srcset="https://datamartin.ca/wp-content/uploads/2022/09/data-table-300x107.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/data-table-1024x365.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/data-table-768x274.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/data-table-1536x548.jpg 1536w, https://datamartin.ca/wp-content/uploads/2022/09/data-table.jpg 1571w" sizes="(max-width: 547px) 100vw, 547px" /></strong></p>
<p><strong>&#8211; Disable auto date/time option: </strong>This avoids Power BI automatically create a lot of date dimension tables in the background.</p>
<p><strong><img decoding="async" class="wp-image-600 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/data-time-option-300x287.jpg" alt="" width="443" height="424" srcset="https://datamartin.ca/wp-content/uploads/2022/09/data-time-option-300x287.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/data-time-option.jpg 607w" sizes="(max-width: 443px) 100vw, 443px" /></strong></p>
<p><strong>&#8211; Disable the “Autodetect new relationships after data is loaded” option: </strong>Because you could mess up your data model if you do not have solid experience in data modeling.</p>
<p><strong><img decoding="async" class="wp-image-601 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/autodetect-300x287.jpg" alt="" width="400" height="383" srcset="https://datamartin.ca/wp-content/uploads/2022/09/autodetect-300x287.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/autodetect.jpg 594w" sizes="(max-width: 400px) 100vw, 400px" /></strong></p>
<p><strong>&#8211; Remove columns with high cardinality:</strong> High cardinality columns can be particularly expensive. If possible:</p>
<ul>
<li>Remove columns such as GUID and timestamp from a SQL Server table from your model.</li>
<li>Splitting Datetime columns in two columns, one for date and one for time.</li>
</ul>
<p><strong><img decoding="async" class="wp-image-602 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/dax-studio2-300x95.jpg" alt="" width="692" height="219" srcset="https://datamartin.ca/wp-content/uploads/2022/09/dax-studio2-300x95.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/dax-studio2-1024x326.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/dax-studio2-768x244.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/dax-studio2.jpg 1261w" sizes="(max-width: 692px) 100vw, 692px" /></strong></p>
<p><strong>&#8211; Select the correct data type: </strong>Don’t use decimal type if you only need the whole number or if your data granularity is at day level don’t use Date/Time data.</p>
<p><strong>&#8211; Create measures instead of Calculated Columns:</strong> Using measures where applicable will help reduce data model size and increase the efficiency of the calculations.</p>
<p><strong> </strong><strong>&#8211; Create custom columns in Power query instead of DAX calculated columns:</strong> The custom columns created in Power Query achieve a better and more efficient compression.</p>
<p><strong>&#8211; Use tools as DAX Studio and Bravo </strong><strong>you to analyze where your model consumes the most memory:</strong> and choose which columns and tables you should remove to optimize it.</p>
<p><img decoding="async" class="size-medium wp-image-603 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/tools-300x123.jpg" alt="" width="300" height="123" srcset="https://datamartin.ca/wp-content/uploads/2022/09/tools-300x123.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/tools.jpg 318w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>&#8211; Use the tool <a href="https://datamartin.ca/2022/09/18/data-model-cleaner-for-power-bi-and-analysis-services-ssas/"><u>Tabular model cleaner</u></a> to analyze the impact in your reports of make changes or removing objects from your data models.</p>
<p><img decoding="async" class="wp-image-397 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/main-picture-300x167.jpg" alt="" width="489" height="272" srcset="https://datamartin.ca/wp-content/uploads/2022/09/main-picture-300x167.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/main-picture-1024x569.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/main-picture-768x427.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/main-picture.jpg 1367w" sizes="(max-width: 489px) 100vw, 489px" /></p>
<p>Click <a href="https://datamartin.ca/2022/09/19/essential-checklist-to-keep-your-power-bi-solutions-optimized-part-iii-optimizing-dax-formulas/"><span style="text-decoration: underline;">here</span></a> for part 3 of this series.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Microsoft Power Platform Conference #MPCC2022 &#8211; Day 1 Recap</title>
		<link>https://datamartin.ca/2022/09/27/mpcc2022-day1recap/</link>
		
		<dc:creator><![CDATA[Nuric Ugarte]]></dc:creator>
		<pubDate>Tue, 27 Sep 2022 23:38:10 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Power BI]]></category>
		<guid isPermaLink="false">https://site1668528124.mywhc.ca/?p=451</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<div  data-mk-stretch-content="true" class="wpb_row vc_row vc_row-fluid jupiter-donut- mk-fullwidth-false  attched-false     js-master-row  mk-grid">
				
<div class="vc_col-sm-12 wpb_column column_container  jupiter-donut- _ jupiter-donut-height-full">
		<div class=" vc_custom_1663800743577">

<div id="text-block-4" class="mk-text-block  jupiter-donut- ">

	
	<h4><span class="TextRun SCXW149972001 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW149972001 BCX0">What a great first day of</span><span class="NormalTextRun SCXW149972001 BCX0"> the</span><span class="NormalTextRun SCXW149972001 BCX0"> Microsoft Power Platform Conference 2022. </span><span class="NormalTextRun SCXW149972001 BCX0">A wonderful day</span><span class="NormalTextRun SCXW149972001 BCX0"> full of great speakers</span><span class="NormalTextRun SCXW149972001 BCX0">! Here’s</span> <span class="NormalTextRun SCXW149972001 BCX0">a brief </span><span class="NormalTextRun SCXW149972001 BCX0">summa</span><span class="NormalTextRun SCXW149972001 BCX0">ry</span><span class="NormalTextRun SCXW149972001 BCX0"> of some of the </span><span class="NormalTextRun SCXW149972001 BCX0">sessions </span><span class="NormalTextRun SCXW149972001 BCX0">I attended:</span></span><span class="EOP SCXW149972001 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h4>
<p><strong>What are Power BI Metrics? &#8211; </strong><span data-contrast="auto">By Treb Gatte</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">In this session Treb talked about the Power BI metrics and how they can be used by the organizations to define and track their most important KPIs that automatically stay in sync with their reporting and analysis solutions to help them drive better decision making.</span></p>
<p><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><img decoding="async" class="wp-image-499 aligncenter" src="/wp-content/uploads/2022/09/northwind-scorecard-300x201.png" alt="" width="551" height="369" srcset="https://datamartin.ca/wp-content/uploads/2022/09/northwind-scorecard-300x201.png 300w, https://datamartin.ca/wp-content/uploads/2022/09/northwind-scorecard-1024x686.png 1024w, https://datamartin.ca/wp-content/uploads/2022/09/northwind-scorecard-768x515.png 768w, https://datamartin.ca/wp-content/uploads/2022/09/northwind-scorecard.png 1537w" sizes="(max-width: 551px) 100vw, 551px" /> </span></p>
<p><span data-contrast="none">The Power BI metrics </span><span data-contrast="none">help drive a data culture in the organizations, some of the Power BI metrics capabilities are: </span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:&#091;8226&#093;,&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none">Automatically setup cascading scorecards with hierarchies</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:&#091;8226&#093;,&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="none">Link metrics across scorecards and define custom roll-ups</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:&#091;8226&#093;,&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="none">Define metrics with categorical values and targets</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:&#091;8226&#093;,&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none">Setup up metrics with multiple milestones and targets</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
</ul>
<p><span data-contrast="auto">More info: </span><a href="https://learn.microsoft.com/en-us/power-bi/create-reports/service-goals-create"><span data-contrast="none">https://learn.microsoft.com/en-us/power-bi/create-reports/service-goals-create</span></a></p>
<p><strong>The Path to success with Power BI  &#8211; </strong><span data-contrast="auto">By Adam Saxton and Patrick Le Blank</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">In this session they shared the 3 most important aspects you must consider to achieve a successful Power BI Solution</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<ol>
<li data-leveltext="%1." data-font="Segoe UI" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:&#091;65533,0&#093;,&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Ensure the query folding is being applied</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="%1." data-font="Segoe UI" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:&#091;65533,0&#093;,&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Create star schema data models</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="%1." data-font="Segoe UI" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:&#091;65533,0&#093;,&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Minimize the number of visuals in the report, it means keep it clean and simple</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
</ol>
<p><img decoding="async" class="wp-image-440 aligncenter" src="/wp-content/uploads/2022/09/microsoftteams-image-3-1-300x225.jpg" alt="" width="507" height="380" srcset="https://datamartin.ca/wp-content/uploads/2022/09/microsoftteams-image-3-1-300x225.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/microsoftteams-image-3-1-1024x768.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/microsoftteams-image-3-1-768x576.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/microsoftteams-image-3-1-1536x1152.jpg 1536w, https://datamartin.ca/wp-content/uploads/2022/09/microsoftteams-image-3-1.jpg 2000w" sizes="(max-width: 507px) 100vw, 507px" /></p>
<p><strong>From insight to Action: Driving a data culture with Power BI &#8211;</strong><span data-contrast="auto">By Kim Manis</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="none">In this session, Tim shared the importance of building a data culture throughout your organization, how Power BI can help empower your employees to make data-driven decisions and talked about the AI capabilities that can bring more insights to the users as: Q&amp;A, Key Driver Analysis, etc. which are </span><span data-contrast="none">automated insights that run behind the scenes, and surfaces insights that need attention.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><img decoding="async" class="wp-image-443 aligncenter" src="/wp-content/uploads/2022/09/microsoftteams-image-4-300x225.jpg" alt="" width="528" height="396" srcset="https://datamartin.ca/wp-content/uploads/2022/09/microsoftteams-image-4-300x225.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/microsoftteams-image-4-1024x768.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/microsoftteams-image-4-768x576.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/microsoftteams-image-4-1536x1152.jpg 1536w, https://datamartin.ca/wp-content/uploads/2022/09/microsoftteams-image-4.jpg 2000w" sizes="(max-width: 528px) 100vw, 528px" /></p>
<p><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>

	<div class="clearboth"></div>
</div>

	</div>
</div>
	</div>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Essential checklist to keep your Power BI Solutions optimized. Part III. Optimizing DAX Formulas</title>
		<link>https://datamartin.ca/2022/09/19/essential-checklist-to-keep-your-power-bi-solutions-optimized-part-iii-optimizing-dax-formulas/</link>
		
		<dc:creator><![CDATA[Nuric Ugarte]]></dc:creator>
		<pubDate>Mon, 19 Sep 2022 23:21:37 +0000</pubDate>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Power BI]]></category>
		<guid isPermaLink="false">https://site1668528124.mywhc.ca/?p=417</guid>

					<description><![CDATA[This third article will cover how to optimize the DAX Formulas of your data model &#8211; Convert Multiple Measures to Variables: This will minimize the number of measures on your data model and improve their performance. &#8211; Use the DIVIDE function for division instead divide operator (/): This function is optimized to check division by [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>This third article will cover how to optimize the DAX Formulas of your data model</p>
<p><strong>&#8211; Convert Multiple Measures to Variables: </strong>This will minimize the number of measures on your data model and improve their performance.</p>
<p><strong><img decoding="async" class="wp-image-605 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/variables-300x142.jpg" alt="" width="499" height="236" srcset="https://datamartin.ca/wp-content/uploads/2022/09/variables-300x142.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/variables.jpg 355w" sizes="(max-width: 499px) 100vw, 499px" /></strong></p>
<p><strong>&#8211; Use the DIVIDE function for division instead divide operator (/)</strong>: This function is optimized to check division by zero which generates a significant performance gain.</p>
<p><strong><img decoding="async" class="wp-image-607 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/division-1-300x104.jpg" alt="" width="597" height="207" srcset="https://datamartin.ca/wp-content/uploads/2022/09/division-1-300x104.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/division-1-768x267.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/division-1.jpg 845w" sizes="(max-width: 597px) 100vw, 597px" /></strong></p>
<p><strong>&#8211; Avoid using the IFERROR function</strong>: It&#8217;s better to avoid using the ISERROR and IFERROR functions. Instead, apply defensive strategies when developing the model as:</p>
<ul>
<li style="list-style-type: none;">
<ul style="list-style-type: circle;">
<li>Apply Power Query transformations to remove or substitute invalid or missing values, and to set correct data types.</li>
<li>Use the IF function to determine whether an error result would occur or error-tolerant functions.</li>
</ul>
</li>
</ul>
<p><strong>&#8211; Reduce usage</strong> of calculated columns that use the <strong>RELATED</strong> function.</p>
<p>&#8211; Use <strong>SELECTEDVALUE()</strong> instead of HASONEVALUE().</p>
<p>&#8211; Use <strong>COUNTROWS</strong> instead of COUNT because it&#8217;s more efficient and performs better.</p>
<p>&#8211; Write <strong>Explicit measures</strong>: You will have more flexibility and will be able to reuse them within other DAX formulas.</p>
<p><strong>Implicit measure:</strong> This is when you use a column with numeric values directly in a visualization, you will identify it because each numeric column has the Sigma (or sum) icon next to it.</p>
<p><strong>Explicit measure:</strong> These are the ones created using a DAX formula, they show a calculator icon beside them.</p>
<p>I recommend that you use explicit measures even for simple measures such as sum, count, average, etc. and then hide the corresponding column to avoid confusing users by having both the column and the measure in the data model.</p>
<p><strong><img decoding="async" class="wp-image-608 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/measures-300x139.jpg" alt="" width="499" height="231" srcset="https://datamartin.ca/wp-content/uploads/2022/09/measures-300x139.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/measures.jpg 576w" sizes="(max-width: 499px) 100vw, 499px" /></strong></p>
<p><strong>&#8211; Use <a href="https://www.daxformatter.com/"><u>DAX Formatter</u></a> to format your code:</strong> The code will be easier to read and maintain.</p>
<p><img decoding="async" class="wp-image-611 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/dax-formatter-300x36.jpg" alt="" width="508" height="61" srcset="https://datamartin.ca/wp-content/uploads/2022/09/dax-formatter-300x36.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/dax-formatter-1024x124.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/dax-formatter-768x93.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/dax-formatter-1536x186.jpg 1536w, https://datamartin.ca/wp-content/uploads/2022/09/dax-formatter.jpg 1835w" sizes="(max-width: 508px) 100vw, 508px" /></p>
<p><img decoding="async" class="wp-image-610 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/dax-formatter-1-1-300x45.jpg" alt="" width="507" height="76" srcset="https://datamartin.ca/wp-content/uploads/2022/09/dax-formatter-1-1-300x45.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/dax-formatter-1-1-1024x152.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/dax-formatter-1-1-768x114.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/dax-formatter-1-1-1536x228.jpg 1536w, https://datamartin.ca/wp-content/uploads/2022/09/dax-formatter-1-1.jpg 1674w" sizes="(max-width: 507px) 100vw, 507px" /></p>
<p>&#8211; Use <a href="https://datamartin.ca/2022/09/29/tools-to-analyze-the-performance-of-your-power-bi-solution/"><span style="text-decoration: underline;"><strong>performance analyzer</strong></span></a> to identify the DAX formulas with longer rendering time.</p>
<p><img decoding="async" class=" wp-image-562 aligncenter" src="/wp-content/uploads/2022/09/performance-analyzer-article-3-300x126.jpg" alt="" width="490" height="206" srcset="https://datamartin.ca/wp-content/uploads/2022/09/performance-analyzer-article-3-300x126.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/performance-analyzer-article-3.jpg 768w" sizes="(max-width: 490px) 100vw, 490px" /></p>
<p>&#8211; Use <strong>DAX Studio to troubleshoot the slowest formulas</strong>: This tool will help you to speed up the troubleshoot process as you can modify the DAX code there directly and when running it know in detail the performance impact. I recommend you check out <a href="https://data-mozart.com/mastering-dp-500-exam-troubleshoot-dax-performance-with-dax-studio/">this <span style="text-decoration: underline;">article</span></a> that goes deeper in this topic.</p>
<p><img decoding="async" class=" wp-image-563 aligncenter" src="/wp-content/uploads/2022/09/dax-studio-3-300x96.jpg" alt="" width="823" height="263" srcset="https://datamartin.ca/wp-content/uploads/2022/09/dax-studio-3-300x96.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/dax-studio-3-1024x328.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/dax-studio-3-768x246.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/dax-studio-3.jpg 1408w" sizes="(max-width: 823px) 100vw, 823px" /></p>
<p>Click <a href="https://datamartin.ca/2022/09/29/essential-checklist-to-keep-your-power-bi-solutions-optimized-part-iv-visualization-good-practices/"><u>here</u></a> to read the last part of this series.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Importance of Query folding and good practices</title>
		<link>https://datamartin.ca/2022/09/19/importance-of-query-folding-and-good-practices/</link>
		
		<dc:creator><![CDATA[Nuric Ugarte]]></dc:creator>
		<pubDate>Mon, 19 Sep 2022 23:17:07 +0000</pubDate>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Data Modeling]]></category>
		<category><![CDATA[Query Folding]]></category>
		<guid isPermaLink="false">https://site1668528124.mywhc.ca/?p=413</guid>

					<description><![CDATA[Query Folding is the capability of Power Query to delegate some of the transformations to the source to improve performance. In this post you will see its importance and good practices guide to achieve it. According to official documentation the following data sources support query folding: &#8211; Relational databases (SQL Server, Oracle, etc.). -OData sources (including [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>Query Folding is the capability of </strong>Power Query to delegate some of the transformations to the source to improve performance. In this post you will see its importance and good practices guide to achieve it.</p>
<p>According to official <a href="https://docs.microsoft.com/en-us/power-query/power-query-folding#transformations-that-can-achieve-folding" data-anchor="#transformations-that-can-achieve-folding">documentation</a> the following data sources support query folding:</p>
<p>&#8211; Relational databases (SQL Server, Oracle, etc.).</p>
<p>-OData sources (including SharePoint lists).</p>
<p>&#8211; Active Directory.</p>
<p>Data sources like flat files (Excel, CSV, txt, etc.), blobs, and web usually do not support it. Check <a href="https://docs.microsoft.com/en-us/power-query/power-query-folding#transformations-that-prevent-folding" data-anchor="#transformations-that-prevent-folding">here</a> the list of transformations that prevent query folding.</p>
<p>You can check if the query folding occurs by right-clicking on the last applied steps and validating if View Native Query option is enabled, when the View Native Query option is grayed out, it means that this specific step or transformation is executed with local resources.</p>
<p><strong><img decoding="async" class=" wp-image-586 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/native-query-160x300.jpg" alt="" width="206" height="386" srcset="https://datamartin.ca/wp-content/uploads/2022/09/native-query-160x300.jpg 160w, https://datamartin.ca/wp-content/uploads/2022/09/native-query.jpg 387w" sizes="(max-width: 206px) 100vw, 206px" /></strong></p>
<p><strong>Query Folding importance:</strong></p>
<p><strong>&#8211; Tables in import mode</strong> <a id="QueryFolding"></a>will have a lower resource utilization and faster refresh time.</p>
<p><strong>&#8211; Direct Query and Dual storage mode</strong> table only admit Power Query queries that can be folded.</p>
<p>&#8211; To be able to configure the <strong><u>incremental refresh</u> </strong>in a table, it is essential that the query folding can be achieved.</p>
<p><strong>Query folding good practices:</strong></p>
<p><strong>&#8211; Fully Folding:</strong> The preferred scenario is to achieve a query folding fully, that is the source executes all required transformations and returns to Power BI the desired result set.</p>
<p><strong><img decoding="async" class="wp-image-627 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/post-image-2-300x108.jpg" alt="" width="436" height="157" srcset="https://datamartin.ca/wp-content/uploads/2022/09/post-image-2-300x108.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/post-image-2.jpg 736w" sizes="(max-width: 436px) 100vw, 436px" /></strong><strong>&#8211; Partial Folding:</strong> Place <a href="https://docs.microsoft.com/en-us/power-query/power-query-folding#transformations-that-can-achieve-folding"><u>steps that support query folding</u></a> at the beginning and move the <a href="https://docs.microsoft.com/en-us/power-query/power-query-folding#transformations-that-prevent-folding"><u>steps that prevent query folding</u></a> later because these transformations will be loaded into the local cache and processed locally by Power BI engine.</p>
<p>The idea is to maximize the performance getting as much query folding as possible. However, the recommendation is to avoid this option whenever you can.</p>
<ul>
<li><strong>Native Query:</strong> If you use a native query include all the logic of the required transformations there, because any other transformations applied to the results of this function will be processed with local resources.</li>
<li><strong>Apply the transformations in the data source:</strong> When you identify that your query requires a large number of steps that can’t be folded, apply the transformations in the data source <u>using a database view or by physically preparing and materializing data. </u></li>
</ul>
<p>I recommend you create a view because it can provide you with multiple advantages over regular tables. Check this interesting <a href="https://data-mozart.com/3-reasons-to-use-views-instead-of-tables-in-power-bi/">article</a> about that.</p>
<p><strong>Conclusion</strong></p>
<p>When you are working with a relational data source (such as SQL Server) always check the query folding. If most of the steps do not support it, use another approach for the transformations.</p>
<p>Not applying these recommendations in your data model could exponentially increase resource usage and refresh time and will prevent you from using Direct query or Dual storage mode and apply incremental refresh policies in your data model.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Essential checklist to keep your Power BI Solutions optimized. Part I: Optimizing the Data source</title>
		<link>https://datamartin.ca/2022/09/18/essential-checklist-to-keep-your-power-bi-solutions-optimized-part-i-optimizing-the-data-source-2/</link>
		
		<dc:creator><![CDATA[Nuric Ugarte]]></dc:creator>
		<pubDate>Sun, 18 Sep 2022 20:35:52 +0000</pubDate>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Power Query]]></category>
		<guid isPermaLink="false">https://site1668528124.mywhc.ca/?p=400</guid>

					<description><![CDATA[This is a series of articles about the most important practices at every step of your solution to get scalable data models and faster reports: At the end of this series of articles, you will be able to download the summary checklist in Excel format, I recommend you keep it handy to review it every [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>This is a series of articles about the most important practices at every step of your solution to get scalable data models and faster reports:</p>
<p><img decoding="async" class="wp-image-320 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/steps-300x40.jpg" alt="" width="623" height="83" srcset="https://datamartin.ca/wp-content/uploads/2022/09/steps-300x40.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/steps-1024x136.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/steps-768x102.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/steps.jpg 1082w" sizes="(max-width: 623px) 100vw, 623px" /></p>
<p>At the end of this series of articles, you will be able to download the summary checklist in Excel format, I recommend you keep it handy to review it every time you build a Power BI solution from scratch or need to improve the performance of your existing developments.</p>
<h4><strong>Part I. Optimizing</strong><strong> the Data source</strong></h4>
<p>This includes the source, connections, and power query transformations performed prior to loading a table to the data model.</p>
<p><strong>&#8211; Ensuring </strong><a title="Folding Importance" href="https://datamartin.ca/2022/09/19/importance-of-query-folding-and-good-practices/#QueryFolding" data-anchor="#QueryFolding"><strong><u>query </u></strong><strong><u>folding</u></strong></a> <strong>occurs whenever possible: Applying query folding in your power query tables could exponentially reduce resource utilization and refresh time.</strong></p>
<p>When you are working with a relational data source (such as SQL Server) always check the query folding. If most of the steps do not support it, consider applying transformations on the data source using a database view or by physically preparing and materializing the data.</p>
<p>You must have the query folding enabled, to check it right-click on the last applied step in Power Query:</p>
<p><img decoding="async" class="wp-image-586 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/native-query-160x300.jpg" alt="" width="238" height="446" srcset="https://datamartin.ca/wp-content/uploads/2022/09/native-query-160x300.jpg 160w, https://datamartin.ca/wp-content/uploads/2022/09/native-query.jpg 387w" sizes="(max-width: 238px) 100vw, 238px" /></p>
<p>If the “View Native Query” option is grayed out, it means that this specific step or transformation is executed with local resources.</p>
<p><strong>&#8211; Minimize the Power Query steps:</strong> Consolidate repeated steps, put all &#8220;remove columns&#8221; together, all &#8220;rename columns” together and so on. This change will improve the execution performance of the query.</p>
<p><strong><img decoding="async" class="wp-image-587 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/query-steps-300x207.jpg" alt="" width="520" height="359" srcset="https://datamartin.ca/wp-content/uploads/2022/09/query-steps-300x207.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/query-steps-768x531.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/query-steps.jpg 869w" sizes="(max-width: 520px) 100vw, 520px" /></strong></p>
<p><strong>&#8211; If your source is an Excel File, you could convert it to CSV before importing it into Power BI:</strong> The performance of reading data from a CSV is better.</p>
<p>To convert the Excel files, you could use the <a href="https://cloudconvert.com">CloudConvert</a> API to CSV files, and then save them to Azure Blob storage.</p>
<p>However, the recommendation for big projects is always to move the data to a database.</p>
<p><strong>&#8211; Disable Power Query background refresh: </strong>By default, when Power Query imports data it retrieves and stores 1000 rows of preview data for each query.</p>
<p>If your Power BI Desktop file contains many queries, this option could extend the time it takes to complete a refresh, in these cases it is convenient to disable it.</p>
<p><img decoding="async" class="wp-image-588 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/background-data-300x286.jpg" alt="" width="496" height="473" srcset="https://datamartin.ca/wp-content/uploads/2022/09/background-data-300x286.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/background-data-768x733.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/background-data.jpg 825w" sizes="(max-width: 496px) 100vw, 496px" /></p>
<p><strong>&#8211; If safe, Ignore the Privacy levels or set both sources to Organizational: </strong>This setting can potentially improve performance and functionality, however, Power BI Desktop cannot ensure the privacy of data merged into the Power BI Desktop file.</p>
<p>Don´t deactivate this option in the following scenarios:</p>
<ul>
<li>If the data source contains sensitive data.</li>
<li>Queries that accept query folding like SQL.</li>
<li>If the dataset will be published.</li>
</ul>
<p><strong><img decoding="async" class="wp-image-589 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/privacy-levals-300x286.jpg" alt="" width="503" height="480" srcset="https://datamartin.ca/wp-content/uploads/2022/09/privacy-levals-300x286.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/privacy-levals-768x732.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/privacy-levals.jpg 816w" sizes="(max-width: 503px) 100vw, 503px" /></strong></p>
<p><strong>&#8211; Use <a href="https://datamartin.ca/2022/09/29/tools-to-analyze-the-performance-of-your-power-bi-solution/">Query Diagnostics </a></strong>to analyze the query performance and identify the bottlenecks exist while loading and transforming your data and refreshing your data in Power Query.</p>
<p><img decoding="async" class="wp-image-590 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics-300x83.jpg" alt="" width="632" height="175" srcset="https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics-300x83.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics-1024x285.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics-768x213.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/query-disgnostics.jpg 1083w" sizes="(max-width: 632px) 100vw, 632px" /></p>
<p>Click <a href="https://datamartin.ca/2022/09/29/essential-checklist-to-keep-your-power-bi-solutions-optimized-part-ii-data-model-good-practices/"><span style="text-decoration: underline;">here</span></a> for part 2 of this series.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Data Model Cleaner for Power BI and Analysis Services (SSAS)</title>
		<link>https://datamartin.ca/2022/09/18/data-model-cleaner-for-power-bi-and-analysis-services-ssas/</link>
		
		<dc:creator><![CDATA[Nuric Ugarte]]></dc:creator>
		<pubDate>Sun, 18 Sep 2022 20:32:10 +0000</pubDate>
				<category><![CDATA[Analysis Services]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Metadata]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Power BI]]></category>
		<category><![CDATA[SSAS]]></category>
		<category><![CDATA[Tabular Models]]></category>
		<guid isPermaLink="false">https://site1668528124.mywhc.ca/?p=395</guid>

					<description><![CDATA[Is your data model turning into an unfriendly monster full of unnecessary columns and measures with long refresh time? Or after cleaning up your data model, do you find that connected reports break so you manually go through each one to find the cause? In this post I will introduce you to the first version [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Is your data model turning into an unfriendly monster full of unnecessary columns and measures with long refresh time?</p>
<p>Or after cleaning up your data model, do you find that connected reports break so you manually go through each one to find the cause?</p>
<p>In this post I will introduce you to the first version of a tool I created to help you in the process of clean your data models, which can become a nightmare if you don&#8217;t have an effective and fast way to do it.</p>
<p><strong>Challenge</strong></p>
<p>When developers <span style="text-decoration: underline;">remove unnecessary objects </span>from large data models<span style="text-decoration: underline;">,</span> connected <span style="text-decoration: underline;">reports break</span> a and the <span style="text-decoration: underline;">validation process is manual, tedious and time-consuming.</span></p>
<p><strong>Solution:</strong></p>
<p>When I tried to clean my data models I couldn’t find any tool with all the functionalities I needed, so decided to create my own using Power BI, which allows:</p>
<p>&#8211; Obtain all the dependencies of the data model in an efficient and automated way.</p>
<p>&#8211; Identify the list of objects (measures, columns, calculated columns, tables) in use and those that are not, in the reports connected to the Power BI or SSAS Data model.</p>
<p>I hope it can help you in the process of keeping your data models optimized 😊.</p>
<p><strong>How It Works</strong></p>
<p>This tool contains two parts:</p>
<p><strong>1. Get the dependencies between all objects in the data model:</strong> This tool identifies how all the objects in your data model are connected to each other. For example, if you want to remove a measure, you will be able to detect the impact on your reports.</p>
<p>To get the dependencies I used Dynamic Management Views (DMV) which are queries that return information about model objects, server operations and server status. If you want to know more that DMVs, check our article <a href="https://datamartin.ca/2022/09/30/what-are-the-dmvs-and-how-you-can-use-them/"><u>What are Dynamic Management Views (DMVs) and what are they for?.</u></a></p>
<p>The main DMV that I used is the <a href="/blog/what-are-dynamic-management-views-dmvs-and-what-are-they-for/"><u>DISCOVER_CALC_DEPENDENCY</u></a>, which Returns information about the calculation dependency for an object that is specified in a Tabular database or in a DAX query that is executed against a Tabular database.</p>
<p><strong>2. Identify the objects used in the data model:</strong> For that I used the tool “Report Analyzer” explained in detail in this article:<a href="https://www.elegantbi.com/post/reportanalyzer"> Report Analyzer</a></p>
<p>Finally, I related the information provided for the <a href="https://datamartin.ca/2022/09/30/what-are-the-dmvs-and-how-you-can-use-them/"><u>DMVs</u></a> and I merged it with the information generated for the <a href="https://www.elegantbi.com/post/reportanalyzer"><u>Report Analyzer</u></a> in a Power BI report.</p>
<p><strong>How to Use the Tool</strong></p>
<p>You can use this tool in any Power BI data model with the following simple steps:</p>
<p><strong>1. Get the connection details of a Power BI Dataset</strong></p>
<p><strong>Local Power BI Dataset:</strong></p>
<p>Open a Power BI Dataset that you want to document. Open DAX Studio and choose the “PBI / SSDT Model” data source option, then click on Connect:</p>
<p><img decoding="async" class="wp-image-396 aligncenter" src="/wp-content/uploads/2022/09/connection-300x169.jpg" alt="" width="476" height="268" srcset="https://datamartin.ca/wp-content/uploads/2022/09/connection-300x169.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/connection-1024x576.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/connection-768x432.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/connection.jpg 1220w" sizes="(max-width: 476px) 100vw, 476px" /></p>
<p>In the lower right-hand corner of the screen is the name of the server, and the port number you have connected to. In this case it is localhost:52223</p>
<p><img decoding="async" class=" wp-image-629 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/server-300x44.png" alt="" width="395" height="58" srcset="https://datamartin.ca/wp-content/uploads/2022/09/server-300x44.png 300w, https://datamartin.ca/wp-content/uploads/2022/09/server.png 375w" sizes="(max-width: 395px) 100vw, 395px" /></p>
<p>Run the following DMV query in a DAX query window. This will give you the GUID, the name of the only database in the Power BI data model:</p>
<p>SELECT [CATALOG_NAME] FROM $SYSTEM.DBSCHEMA_CATALOGS</p>
<p><strong><img decoding="async" class="alignnone wp-image-630 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/db-300x120.png" alt="" width="438" height="175" srcset="https://datamartin.ca/wp-content/uploads/2022/09/db-300x120.png 300w, https://datamartin.ca/wp-content/uploads/2022/09/db.png 461w" sizes="(max-width: 438px) 100vw, 438px" /></strong></p>
<p><strong>Power BI Premium</strong></p>
<p><strong>&#8211; Server:</strong> Go to “Workspace settings” and copy the Workspace Connection.</p>
<p><img decoding="async" class="wp-image-631 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/workspace-connection-300x271.jpg" alt="" width="414" height="374" srcset="https://datamartin.ca/wp-content/uploads/2022/09/workspace-connection-300x271.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/workspace-connection.jpg 764w" sizes="(max-width: 414px) 100vw, 414px" /></p>
<p><strong>&#8211; Database:</strong> Is the dataset name.</p>
<p>2. <strong>Update the Dataset parameters in the Data model cleaner tool:</strong></p>
<p><strong><img decoding="async" class="wp-image-632 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/edit-parameters-300x133.jpg" alt="" width="639" height="283" srcset="https://datamartin.ca/wp-content/uploads/2022/09/edit-parameters-300x133.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/edit-parameters.jpg 668w" sizes="(max-width: 639px) 100vw, 639px" /></strong></p>
<p><strong>3. Get all the objects used in the Power BI reports connected to the data model:</strong></p>
<p>&#8211; Save all the PBI report files connected to the golden dataset in a folder.</p>
<p>&#8211; Open External tool: Report Analyzer:</p>
<p><img decoding="async" class="wp-image-633 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/performance-analyzer-300x51.jpg" alt="" width="535" height="91" srcset="https://datamartin.ca/wp-content/uploads/2022/09/performance-analyzer-300x51.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/performance-analyzer.jpg 593w" sizes="(max-width: 535px) 100vw, 535px" /></p>
<p>&#8211; Click on “Select folder”:</p>
<p><img decoding="async" class="wp-image-634 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/performance-analyzer-2-300x106.jpg" alt="" width="507" height="179" srcset="https://datamartin.ca/wp-content/uploads/2022/09/performance-analyzer-2-300x106.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/performance-analyzer-2.jpg 637w" sizes="(max-width: 507px) 100vw, 507px" /></p>
<p>&#8211; Select the respective folder, and select “Export Report Metadata”:</p>
<p><img decoding="async" class=" wp-image-556 aligncenter" src="/wp-content/uploads/2022/09/performance-analyzer-3-300x141.jpg" alt="" width="492" height="231" srcset="https://datamartin.ca/wp-content/uploads/2022/09/performance-analyzer-3-300x141.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/performance-analyzer-3.jpg 531w" sizes="(max-width: 492px) 100vw, 492px" /></p>
<p>&#8211; You will see the following message:</p>
<p><img decoding="async" class="wp-image-635 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/message-300x127.jpg" alt="" width="392" height="166" srcset="https://datamartin.ca/wp-content/uploads/2022/09/message-300x127.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/message.jpg 512w" sizes="(max-width: 392px) 100vw, 392px" /></p>
<p>The files in .txt format will be saved in the same folder where the reports are.</p>
<p><strong>4. Update the “LocalSoucePBITemplates” parameter in Power BI:</strong></p>
<p>Type the location of the folder with the .txt files generated by the <a href="https://www.elegantbi.com/post/reportanalyzer"><u>Report Analyzer</u></a>:</p>
<p><strong><img decoding="async" class=" wp-image-700 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/parameters-300x126.jpg" alt="" width="376" height="158" srcset="https://datamartin.ca/wp-content/uploads/2022/09/parameters-300x126.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/parameters-1024x431.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/parameters-768x323.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/parameters.jpg 1081w" sizes="(max-width: 376px) 100vw, 376px" /></strong></p>
<p><strong>Information provided by the Data Model Cleaner</strong><strong> tool</strong></p>
<p><strong>&#8211; Object dependencies:</strong> On this tab you can consult the list of calculated objects affected by the selected object:</p>
<p><strong><img decoding="async" class="wp-image-637 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/dependencies-300x95.jpg" alt="" width="631" height="200" srcset="https://datamartin.ca/wp-content/uploads/2022/09/dependencies-300x95.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/dependencies-1024x326.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/dependencies-768x244.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/dependencies.jpg 1113w" sizes="(max-width: 631px) 100vw, 631px" /></strong></p>
<p><strong>&#8211; Calculated Objects Breakdown: </strong>This tab shows the breakdown of the queried calculated object.</p>
<p><strong><img decoding="async" class="wp-image-639 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/breakdown-300x128.jpg" alt="" width="596" height="254" srcset="https://datamartin.ca/wp-content/uploads/2022/09/breakdown-300x128.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/breakdown-1024x437.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/breakdown-768x328.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/breakdown.jpg 1109w" sizes="(max-width: 596px) 100vw, 596px" /></strong></p>
<p><strong>&#8211; Objects Used / Unused List:</strong> On this tab you can easily consult the Used / Unused list of the objects that will help you make decisions about hiding or removing them from the model.</p>
<p>If you consult by table additionally you will see the “M” or DAX expression of the table.</p>
<p>To determine the used list of objects this tool consider:</p>
<ul>
<li data-leveltext="o" data-font="Courier New" data-listid="14" data-aria-posinset="1" data-aria-level="1">Visuals and custom visuals</li>
<li data-leveltext="o" data-font="Courier New" data-listid="14" data-aria-posinset="2" data-aria-level="1">Report-Level measures</li>
<li data-leveltext="o" data-font="Courier New" data-listid="14" data-aria-posinset="3" data-aria-level="1">Filters added to the visuals, pages, and reports</li>
<li data-leveltext="o" data-font="Courier New" data-listid="14" data-aria-posinset="4" data-aria-level="1">Bookmarks</li>
</ul>
<p><img decoding="async" class="wp-image-640 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/used-unused-objects-1-300x105.jpg" alt="" width="634" height="222" srcset="https://datamartin.ca/wp-content/uploads/2022/09/used-unused-objects-1-300x105.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/used-unused-objects-1-1024x359.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/used-unused-objects-1-768x270.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/used-unused-objects-1.jpg 1114w" sizes="(max-width: 634px) 100vw, 634px" /></p>
<p>You can also drill through on any object used and consult the reports, pages and in which of the visualizations this object is being used:</p>
<p><strong><img decoding="async" class=" wp-image-641 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/drill-menu-300x135.jpg" alt="" width="610" height="275" srcset="https://datamartin.ca/wp-content/uploads/2022/09/drill-menu-300x135.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/drill-menu-1024x460.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/drill-menu-768x345.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/drill-menu.jpg 1102w" sizes="(max-width: 610px) 100vw, 610px" /></strong></p>
<p><strong><img decoding="async" class=" wp-image-642 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/drill-300x80.jpg" alt="" width="627" height="167" srcset="https://datamartin.ca/wp-content/uploads/2022/09/drill-300x80.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/drill-1024x271.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/drill-768x204.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/drill.jpg 1124w" sizes="(max-width: 627px) 100vw, 627px" /></strong></p>
<p><strong>&#8211; Used Objects in the Reports:</strong> List of objects used by report.</p>
<p><img decoding="async" class=" wp-image-643 aligncenter" src="https://datamartin.ca/wp-content/uploads/2022/09/used-objects-300x76.jpg" alt="" width="609" height="154" srcset="https://datamartin.ca/wp-content/uploads/2022/09/used-objects-300x76.jpg 300w, https://datamartin.ca/wp-content/uploads/2022/09/used-objects-1024x261.jpg 1024w, https://datamartin.ca/wp-content/uploads/2022/09/used-objects-768x196.jpg 768w, https://datamartin.ca/wp-content/uploads/2022/09/used-objects.jpg 1331w" sizes="(max-width: 609px) 100vw, 609px" /></p>
<h3 dir="auto" tabindex="-1">Download Tabular Model Cleaner tool here 👇:</h3>
<p dir="auto"><a href="https://github.com/NuricBI/NuricBI/files/10865237/Tabular.Models.Cleaner.tool.zip">Tabular Model Cleaner tool.zip</a></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
