<?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>DesignMind</title>
	<atom:link href="https://www.designmind.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.designmind.com</link>
	<description>Big Data, Business Intelligence, and Data Analytics Consultants</description>
	<lastBuildDate>Thu, 13 Jan 2022 20:29:30 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.8.3</generator>
	<item>
		<title>Advanced Bookmarks and Buttons in Power BI</title>
		<link>https://www.designmind.com/business-intelligence/bookmarks-and-buttons-in-power-bi/</link>
		
		<dc:creator><![CDATA[Brendan Phan]]></dc:creator>
		<pubDate>Mon, 18 Jan 2021 03:15:59 +0000</pubDate>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[bookmarks and buttons in Power BI]]></category>
		<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Power BI reports]]></category>
		<guid isPermaLink="false">https://www.designmind.com/?p=9029</guid>

					<description><![CDATA[<p>Why Use Bookmarks and Buttons in Power BI? When developing Power BI reports, using bookmarks and buttons together does more for you than just add pleasing aesthetics. It gives users the ability to switch between saved states of filters and slicers with the push of a button. Setting up multiple bookmarks/buttons makes navigation of your...</p>
<div class="read-more"><a class="more-link" href="https://www.designmind.com/business-intelligence/bookmarks-and-buttons-in-power-bi/" rel="nofollow">Read more</a></div>
<p>The post <a rel="nofollow" href="https://www.designmind.com/business-intelligence/bookmarks-and-buttons-in-power-bi/">Advanced Bookmarks and Buttons in Power BI</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Why Use Bookmarks and Buttons in Power BI?</h2>
<p>When developing Power BI reports, using bookmarks and buttons together does more for you than just add pleasing aesthetics. It gives users the ability to switch between saved states of filters and slicers with the push of a button. Setting up multiple bookmarks/buttons makes navigation of your report much more straightforward to end users new and experienced with your data or to Power BI.</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Advanced-Bookmarks-and-Buttons-in-Power-BI.jpg"><img loading="lazy" class="size-full wp-image-9032 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Advanced-Bookmarks-and-Buttons-in-Power-BI.jpg" alt="Advanced Bookmarks and Buttons in Power BI" width="616" height="528" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Advanced-Bookmarks-and-Buttons-in-Power-BI.jpg 616w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Advanced-Bookmarks-and-Buttons-in-Power-BI-300x257.jpg 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Advanced-Bookmarks-and-Buttons-in-Power-BI-56x48.jpg 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Advanced-Bookmarks-and-Buttons-in-Power-BI-150x129.jpg 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Advanced-Bookmarks-and-Buttons-in-Power-BI-47x40.jpg 47w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Advanced-Bookmarks-and-Buttons-in-Power-BI-97x83.jpg 97w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Advanced-Bookmarks-and-Buttons-in-Power-BI-250x214.jpg 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Advanced-Bookmarks-and-Buttons-in-Power-BI-82x70.jpg 82w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Advanced-Bookmarks-and-Buttons-in-Power-BI-240x206.jpg 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Advanced-Bookmarks-and-Buttons-in-Power-BI-260x223.jpg 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Advanced-Bookmarks-and-Buttons-in-Power-BI-347x297.jpg 347w" sizes="(max-width: 616px) 100vw, 616px" /></a></p>
<h2>Setting Up Bookmarks</h2>
<p>Bookmarks allow users to look at a saved state of specific filters or visuals. Bookmarks can apply to ‘all visuals’ on a report page or ‘selected visuals’ on a page.</p>
<p>All visuals should be used in the case when switching between bookmarks and wanting the page to return exactly how we left it. This will work for defaulting a page on a visual that uses the spotlight feature.</p>
<p>Selected visuals allow for different visuals to be used between each bookmarks, although the visuals may look the same each visual can contain different fields. Also, another case when using selected visuals is for persistent filters. This allows for a slicer on a page to be selected when switching between bookmarks and not defaulted and across page filtering will persist if the slicer is the same.</p>
<h2>Updating Bookmark Using ‘All Selected’</h2>
<p>1. Create a bookmark and rename it.<br />
2. Set the page with filters, matrix list ordering, or spotlight.<br />
3. Hover over the bookmark ellipse and update the bookmark.</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/All-Selected.jpg"><img loading="lazy" class="size-large wp-image-9033 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/All-Selected-1024x353.jpg" alt="All Selected Bookmark" width="1024" height="353" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/All-Selected-1024x353.jpg 1024w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/All-Selected-300x103.jpg 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/All-Selected-768x265.jpg 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/All-Selected-56x19.jpg 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/All-Selected-150x52.jpg 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/All-Selected-116x40.jpg 116w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/All-Selected-125x43.jpg 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/All-Selected-250x86.jpg 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/All-Selected-203x70.jpg 203w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/All-Selected-240x83.jpg 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/All-Selected-260x90.jpg 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/All-Selected-462x159.jpg 462w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/All-Selected.jpg 1125w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>
<p><iframe loading="lazy" src="https://www.youtube.com/embed/2an8kUAl17A" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>&nbsp;</p>
<h2>Updating Bookmark Using ‘Selected Visuals’</h2>
<p>1. In the selection pane move all slicer visuals to the top.<br />
2. Select all the visuals beside the slicers.<br />
3. Update the bookmark with all the selected visuals still being highlighted. This will allow the slicer to persist when filtering across bookmarks.</p>
<h2><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selected-Visuals.jpg"><img loading="lazy" class="size-full wp-image-9034 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selected-Visuals.jpg" alt="Selected visuals" width="984" height="301" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selected-Visuals.jpg 984w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selected-Visuals-300x92.jpg 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selected-Visuals-768x235.jpg 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selected-Visuals-56x17.jpg 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selected-Visuals-150x46.jpg 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selected-Visuals-120x37.jpg 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selected-Visuals-125x38.jpg 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selected-Visuals-250x76.jpg 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selected-Visuals-220x67.jpg 220w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selected-Visuals-240x73.jpg 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selected-Visuals-260x80.jpg 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selected-Visuals-462x141.jpg 462w" sizes="(max-width: 984px) 100vw, 984px" /></a></h2>
<h2><iframe loading="lazy" src="https://www.youtube.com/embed/C5KmmdGvXoU" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></h2>
<h2>Setting Up Active/Inactive Buttons</h2>
<p>Pairing together buttons and bookmarks allows users to actively engage in the report and buttons can be redesigned through text, sizing, and shape. We create active and inactive buttons that are in the same position, however, when one button is being used the other button is hidden.<br />
1. Create a button by selecting the ‘buttons’ drop down and select ‘blank’ under the Insert tab in the ribbon.<br />
2.Duplicate one button and make a button a darker color shade for the active button and reduce the transparency to 50% on the other button.<br />
3. Assign the active button an ‘action’. Select a button and in the visualizations pane turn on the ‘action’ and for action type select ‘bookmark’ and choose the respective bookmark then stack the active and inactive button on one another.</p>
<h2><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Active-and-Inactive-buttons.jpg"><img loading="lazy" class="size-full wp-image-9035 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Active-and-Inactive-buttons.jpg" alt="Active and inactive buttons" width="648" height="121" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Active-and-Inactive-buttons.jpg 648w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Active-and-Inactive-buttons-300x56.jpg 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Active-and-Inactive-buttons-56x10.jpg 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Active-and-Inactive-buttons-150x28.jpg 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Active-and-Inactive-buttons-120x22.jpg 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Active-and-Inactive-buttons-125x23.jpg 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Active-and-Inactive-buttons-250x47.jpg 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Active-and-Inactive-buttons-220x41.jpg 220w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Active-and-Inactive-buttons-240x45.jpg 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Active-and-Inactive-buttons-260x49.jpg 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Active-and-Inactive-buttons-462x86.jpg 462w" sizes="(max-width: 648px) 100vw, 648px" /></a><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selection-Pane.jpg"><img loading="lazy" class="size-full wp-image-9036 alignright" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selection-Pane.jpg" alt="Selection pane" width="182" height="609" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selection-Pane.jpg 182w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selection-Pane-90x300.jpg 90w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selection-Pane-17x56.jpg 17w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selection-Pane-45x150.jpg 45w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selection-Pane-12x40.jpg 12w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selection-Pane-25x83.jpg 25w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selection-Pane-75x250.jpg 75w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selection-Pane-21x70.jpg 21w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selection-Pane-72x240.jpg 72w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selection-Pane-78x260.jpg 78w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Selection-Pane-89x297.jpg 89w" sizes="(max-width: 182px) 100vw, 182px" /></a></h2>
<h2><iframe loading="lazy" src="https://www.youtube.com/embed/Bp49rH0Gl_A" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></h2>
<h2>How To Use The Selection Pane</h2>
<p>The selection pane has the ability to ‘show’ and ‘hide’ visuals including buttons. By changing the buttons name and moving slicers and buttons at the top of the selection pane make updating bookmarks more organized. For the naming convention for each button, I can distinguish each button by their name followed by “active” or “inactive”.</p>
<h2>The Bottom Line for Bookmarks and Buttons in Power BI</h2>
<p>End users will find navigation of your reports much more straightforward and user friendly.   They will easily find the information they are seeking and become more skilled at utilizing Power BI to make business decisions.  You can learn more tips about using Power BI on our <a href="https://www.designmind.com/power-bi-consultant/"><strong>Power BI and Data Visualization</strong></a> page.</p>
<p><em>Brendan Phan is a BI Consultant at DesignMind. </em></p>
<p>The post <a rel="nofollow" href="https://www.designmind.com/business-intelligence/bookmarks-and-buttons-in-power-bi/">Advanced Bookmarks and Buttons in Power BI</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How To Export Underlying Data in Power BI</title>
		<link>https://www.designmind.com/business-intelligence/export-underlying-data-in-power-bi/</link>
		
		<dc:creator><![CDATA[Chennie Teng]]></dc:creator>
		<pubDate>Tue, 15 Dec 2020 19:16:37 +0000</pubDate>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[data visualization]]></category>
		<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Power BI Desktop]]></category>
		<category><![CDATA[Power BI Service]]></category>
		<guid isPermaLink="false">https://www.designmind.com/?p=8974</guid>

					<description><![CDATA[<p>In order to make data visualizations even more useful, you need to learn how to export underlying data in Power BI. When you publish a report to your workspace, and want to export the underlying data from a table visualization, you may see the underlying data option greyed out and only see the summarized data. ...</p>
<div class="read-more"><a class="more-link" href="https://www.designmind.com/business-intelligence/export-underlying-data-in-power-bi/" rel="nofollow">Read more</a></div>
<p>The post <a rel="nofollow" href="https://www.designmind.com/business-intelligence/export-underlying-data-in-power-bi/">How To Export Underlying Data in Power BI</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In order to make data visualizations even more useful, you need to learn how to export underlying data in Power BI. When you publish a report to your workspace, and want to export the underlying data from a table visualization, you may see the underlying data option greyed out and only see the summarized data.  When you hover on top of the underlying data, it will say “You must first add an aggregate to your chart to export the underlying data.”</p>
<h2>Understanding Summarized Data and Underlying Data</h2>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Understanding-Summarized-Data.png"><img loading="lazy" class="wp-image-9015 size-full alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Understanding-Summarized-Data.png" alt="Understanding summarized data" width="600" height="333" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Understanding-Summarized-Data.png 600w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Understanding-Summarized-Data-300x167.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Understanding-Summarized-Data-56x31.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Understanding-Summarized-Data-150x83.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Understanding-Summarized-Data-72x40.png 72w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Understanding-Summarized-Data-125x69.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Understanding-Summarized-Data-250x139.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Understanding-Summarized-Data-126x70.png 126w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Understanding-Summarized-Data-240x133.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Understanding-Summarized-Data-260x144.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Understanding-Summarized-Data-462x256.png 462w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<p>Before you try to export the underlying data, it&#8217;s important to understand the differences between summarized data and underlying data. Summarized exportation will only export aggregated data points in the visualizations; on the other hand, underlying data will export additional data that are not displayed in the visualization but are relevant to the visual.</p>
<h2>When to export Summarized Data vs When to export Underlying Data</h2>
<p>You should export summarized data when you want to see the relevant data in the visualization. Summarized data will only show the columns and measures that you created for the visualizations. If the visual contains aggregation, the export will contain aggregated data.</p>
<p>You should export underlying data in power bi when you want to see the relevant data and additional data from the data model you have created in Power BI. However, if your visual contains an aggregation, it will not be exporting the aggregated data.</p>
<p>Both data will be exported to an xlsx file, and your internet browser will prompt you to save the file, and then open it in Excel.</p>
<h2>How to export Underlying data in Power BI</h2>
<p>First, you have to make sure you have the correct settings. In Power BI Desktop, please select File &gt; Options and Settings &gt; Options &gt; Current File &gt; Report Settings, then under Export Data subtitle, please enable “Allow End Users to Export Both Summarized and Underlying Data from the Service.”</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Export-Both-Summarized-and-Underlying-Data.png"><img loading="lazy" class="size-full wp-image-9017 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Export-Both-Summarized-and-Underlying-Data.png" alt="Export both summarized and underlying data " width="600" height="333" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Export-Both-Summarized-and-Underlying-Data.png 600w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Export-Both-Summarized-and-Underlying-Data-300x167.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Export-Both-Summarized-and-Underlying-Data-56x31.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Export-Both-Summarized-and-Underlying-Data-150x83.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Export-Both-Summarized-and-Underlying-Data-72x40.png 72w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Export-Both-Summarized-and-Underlying-Data-125x69.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Export-Both-Summarized-and-Underlying-Data-250x139.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Export-Both-Summarized-and-Underlying-Data-126x70.png 126w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Export-Both-Summarized-and-Underlying-Data-240x133.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Export-Both-Summarized-and-Underlying-Data-260x144.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Export-Both-Summarized-and-Underlying-Data-462x256.png 462w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<p>If the first step worked for you, congratulations. If the first step did not work for you, and the underlying data option is still greyed out, you need to create an aggregate function and implement it in the Power BI Visual. This can be achieved by creating a Power BI calculated measure and using any aggregate function, and then importing it inside the visualization. I like to use the SUM function, but functions like MIN, MAX, AVERAGE work too.</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Use-any-aggregate-function.png"><img loading="lazy" class="size-full wp-image-9018 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Use-any-aggregate-function.png" alt="use any aggregate function" width="600" height="333" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Use-any-aggregate-function.png 600w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Use-any-aggregate-function-300x167.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Use-any-aggregate-function-56x31.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Use-any-aggregate-function-150x83.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Use-any-aggregate-function-72x40.png 72w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Use-any-aggregate-function-125x69.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Use-any-aggregate-function-250x139.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Use-any-aggregate-function-126x70.png 126w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Use-any-aggregate-function-240x133.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Use-any-aggregate-function-260x144.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Use-any-aggregate-function-462x256.png 462w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<p>Remember, the function does not have to make sense; you are simply creating the function to bypass the export blockage in the Power BI Service. After you import the aggregate function inside of the data visualization, you can hide the aggregate function by minimizing the column. After it is complete, you can publish the report again.</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Publish-the-report-again.png"><img loading="lazy" class="alignnone wp-image-9019 size-full" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Publish-the-report-again.png" alt="publish the report again and now you can export underlying data in power bi" width="600" height="333" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Publish-the-report-again.png 600w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Publish-the-report-again-300x167.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Publish-the-report-again-56x31.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Publish-the-report-again-150x83.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Publish-the-report-again-72x40.png 72w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Publish-the-report-again-125x69.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Publish-the-report-again-250x139.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Publish-the-report-again-126x70.png 126w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Publish-the-report-again-240x133.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Publish-the-report-again-260x144.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Publish-the-report-again-462x256.png 462w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<p>Congratulations, you are now able to export both summarized and underlying data from the Power BI Service!  You can learn more about Power BI on our <a href="https://www.designmind.com/power-bi-consultant/"><strong>Power BI and Data Visualization</strong></a> page.</p>
<p><em>Chennie Teng is a BI Consultant at DesignMind. </em></p>
<p>The post <a rel="nofollow" href="https://www.designmind.com/business-intelligence/export-underlying-data-in-power-bi/">How To Export Underlying Data in Power BI</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Setting up VS Code for Remote Development with Source Control (Part 3)</title>
		<link>https://www.designmind.com/cloud-computing/setting-up-vs-code-for-remote-development-source-control-is-easy/</link>
		
		<dc:creator><![CDATA[Brian Hatchet]]></dc:creator>
		<pubDate>Wed, 21 Oct 2020 18:48:35 +0000</pubDate>
				<category><![CDATA[AppDev]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[BI consultant]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[remote development]]></category>
		<category><![CDATA[secure remote development]]></category>
		<category><![CDATA[SSH remote]]></category>
		<category><![CDATA[SSH Server]]></category>
		<category><![CDATA[visual studio code]]></category>
		<category><![CDATA[VS Code]]></category>
		<category><![CDATA[VSCode]]></category>
		<guid isPermaLink="false">https://www.designmind.com/?p=8865</guid>

					<description><![CDATA[<p>Setting up vs code for Remote Development step by step In part one of this series, we showed you how to configure a Windows 2019 EC2 instance to run an OpenSSH Server to pave the way for secure, remote development. In part two, we configured the server for password-less login. Now, we can get down...</p>
<div class="read-more"><a class="more-link" href="https://www.designmind.com/cloud-computing/setting-up-vs-code-for-remote-development-source-control-is-easy/" rel="nofollow">Read more</a></div>
<p>The post <a rel="nofollow" href="https://www.designmind.com/cloud-computing/setting-up-vs-code-for-remote-development-source-control-is-easy/">Setting up VS Code for Remote Development with Source Control (Part 3)</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Setting up vs code for Remote Development step by step</h2>
<p>In part one of this series, <strong><a href="https://www.designmind.com/cloud-computing/setting-up-a-remote-development-environment/" target="_blank" rel="noopener noreferrer">we showed you how to configure a Windows 2019 EC2 instance to run an OpenSSH Server</a></strong> to pave the way for secure, remote development. In part two, <strong><a href="https://www.designmind.com/cloud-computing/setting-vs-code-remote-development-source-control/" target="_blank" rel="noopener noreferrer">we configured the server for password-less login</a></strong>. Now, we can get down to the good stuff and configure the full developer tool chain.  You&#8217;ll see that setting up vs code for remote development is easy if you do it step by step.</p>
<h3>Install VS Code on the Local Machine</h3>
<p>VS Code and it&#8217;s extensions requires nothing to be installed on the development machine other than the OpenSSH Server. This is because the developer&#8217;s VS Code with the requisite extensions handle installing, starting and removing the &#8220;development server&#8221; into the SSH user&#8217;s home directory. Since the software is still in beta, it can be a little temperamental. Fortunately, VS Code comes with all of the tools for a user to manage it.</p>
<p>Install <strong><a href="https://code.visualstudio.com" target="_blank" rel="noopener noreferrer">VSCode</a></strong> on your developer&#8217;s local machine. If you have never worked with VSCode before, you are in for a pleasant surprise. It&#8217;s a lightweight, rock-solid IDE that&#8217;s both free and powerful. It has extensions for most of your needs and has an active community. With a built-in package manager, it&#8217;s easy to configure and extend it too.</p>
<h3>Install the Remote Development Extension</h3>
<p>Open up VSCode&#8217;s Package Manager from the Command Palette.</p>
<p>Install the VSCode Remote Development extension.</p>
<p>On top of the remote tools, it will install three connectors. We will be using the one for SSH. It also ships with a Container connector for talking to Docker based environments and it installs a WSL connector for local WSL Installations. Don&#8217;t be fooled, that&#8217;s for connecting to WSL on the same development machine. We need to use SSH to connect to our remote development server regardless.</p>
<h3>Configure the SSH Remote Development Extension</h3>
<p>There&#8217;s quite a few powerful options for the Remote Server. Unfortunately, they are sparsely documented.</p>
<p>When you connect to an SSH Server the first time, it will create a map between the server address and the operating system of the development server. This is so it knows what commands to run.</p>
<p>For Windows, you&#8217;ll want to map it to windows and all commands will be done over Powershell.</p>
<p>For WSL Ubuntu, you&#8217;ll want to map it to linux and all commands will be run over sh.</p>
<p>There&#8217;s quite a few options that control how the Remote Development tools behave.</p>
<h3>Getting to Work</h3>
<p>With a properly configured SSH server, the rest is easy.</p>
<p>Open up VSCode and access the command palette Cntl+Shift+P.</p>
<p><code>&gt; Remote-SSH: Connect to Host ...</code></p>
<p>This will bring up the connect dialog.</p>
<p>You will want to provide the hostname of your server and the destination OS. This host selection tells it what language of commands to run when it deploys the development server. The plugin deploys a temporary development server using Powershell for Windows and Bash for Linux. It uploads commands and deploys a node server that handles all the file synchronization and remote coordination. All over ssh &#8211; seriously cool stuff.</p>
<p>If you want to have more advanced configuration, the Command Palette provides the ability to edit your local developer&#8217;s .ssh/config file directly. Here is where you can store advanced SSH configuration options.</p>
<div>
<div><code>Host {your ec2 dns name or ip address}<br />
</code></div>
<div><code>  HostName {your ec2 dns name or ip address}<br />
</code></div>
<div><code>  User {demo for the WSL configuration, administrator for the Windows Open SSH Server Version}</code></div>
<div><code>  ForwardAgent yes</code></div>
<div><code>  DynamicForward 8080<br />
</code></div>
</div>
<div></div>
<div>
<p><strong>ForwardAgent</strong>: For the WSL version (hosts that support key-agent forwarding), set this value to yes to forward your local developer&#8217;s public ssh key to downstream resources, like accessing the git repository. You must have your key loaded into an ssh key agent in order for it to work.</p>
<p><strong>DynamicForward</strong>: One of the most powerful options in this setup is the DynamicForwarding. By specifying a port, you will be able to access resources on the server by configuring your clients to use a SOCKS 5 proxy.</p>
</div>
<div>Once you&#8217;ve configured a host, it should connect and spin up a new VS Code session. It takes a bit to setup the development server, but it should connect and you&#8217;ll be using VS Code like you&#8217;re sitting at the development server.</div>
<div></div>
<div><img loading="lazy" class="alignnone wp-image-8885 size-full" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/vscode-remote-connected.jpg" alt="Setting up vs code for remote development like you are at the server" width="1025" height="769" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/vscode-remote-connected.jpg 1025w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/vscode-remote-connected-300x225.jpg 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/vscode-remote-connected-768x576.jpg 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/vscode-remote-connected-56x42.jpg 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/vscode-remote-connected-150x113.jpg 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/vscode-remote-connected-53x40.jpg 53w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/vscode-remote-connected-111x83.jpg 111w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/vscode-remote-connected-250x188.jpg 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/vscode-remote-connected-93x70.jpg 93w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/vscode-remote-connected-240x180.jpg 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/vscode-remote-connected-260x195.jpg 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/vscode-remote-connected-396x297.jpg 396w" sizes="(max-width: 1025px) 100vw, 1025px" /></div>
<div>From this point on, the Remote Development tools manual is a better resource. The key takeaways are:</div>
<div></div>
<div>You can explore the filesystem in VS Code, edit and delete files. You can upload too. If you open up the terminal in that remote window, you have shell access. You know have a fast and lightweight IDE that is connected securely.</div>
<h3>Git Plugin on the Development Server</h3>
<p><strong>WSL Ubuntu Users</strong></p>
<p>You have git and key-agent forwarding out of the box (after you enabled it in sshd_config).</p>
<p><strong>Windows Users</strong></p>
<p>You need to<strong><a href="https://gitforwindows.org/" target="_blank" rel="noopener noreferrer"> install git</a></strong> via RDP. Since you don&#8217;t have key-agent forwarding, you will need to configure the ssh keys for the user and add the public key to your repositories settings.</p>
<p>With  your public SSH key added to your repository, you will have git access directly in VS code.</p>
<p>If you <strong>don&#8217;t</strong> have git installed, you will see this message on your VS Code Remote Source Control tab.</p>
<p><img loading="lazy" class="alignnone wp-image-8887 size-full" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-no-git.jpg" alt="Setting up vs code for remote development no git in vs code remote" width="1021" height="767" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-no-git.jpg 1021w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-no-git-300x225.jpg 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-no-git-768x577.jpg 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-no-git-56x42.jpg 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-no-git-150x113.jpg 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-no-git-53x40.jpg 53w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-no-git-110x83.jpg 110w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-no-git-250x188.jpg 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-no-git-93x70.jpg 93w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-no-git-240x180.jpg 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-no-git-260x195.jpg 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-no-git-395x297.jpg 395w" sizes="(max-width: 1021px) 100vw, 1021px" /></p>
<p>If you install after connecting, you&#8217;ll need to reconnect VS Code Remote. You&#8217;ll know you have git capabilities when you see:</p>
<p><img loading="lazy" class="alignnone wp-image-8888 size-full" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-with-git.jpg" alt="Setting up vs code for remote development reconnect remote code with git" width="1024" height="767" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-with-git.jpg 1024w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-with-git-300x225.jpg 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-with-git-768x575.jpg 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-with-git-56x42.jpg 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-with-git-150x112.jpg 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-with-git-53x40.jpg 53w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-with-git-111x83.jpg 111w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-with-git-250x187.jpg 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-with-git-93x70.jpg 93w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-with-git-240x180.jpg 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-with-git-260x195.jpg 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/remote-code-with-git-397x297.jpg 397w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>Now, you have a fully-connected remote development environment that reads the git configuration for whatever directory you&#8217;re looking at in VS Code&#8217;s file browser or open files. It provides a full user interface for git, but you can also run the commands directly on the shell.</p>
<h3>VS Code Remote Settings and Commands</h3>
<p>The VS Code remote development tool chain is under constant development. If you can connect to SSH, that&#8217;s a majority of the battle. The rest can be achieved through manipulating the settings and using VS Code Command Palette.</p>
<p>Open up command palette with <strong>Cntl+Shift+P</strong></p>
<p>Run<strong> Remote-SSH Settings<br />
</strong></p>
<p>Also open command palette and <strong>Preferences: Open Settings (JSON)<br />
</strong></p>
<p>Remote-SSH Settings is a GUI view of many different options that change the way the Remote Development server gets deployed. If you run into issues, this is the first place to look.</p>
<p>If your server dies, it might because of stale ssh processes or problems with the cached version on the server.</p>
<p>If you open up command palette with <strong>Cntl+Shift+P</strong>.</p>
<p>You will see <strong>Remote-SSH: Kill VSCode Server &#8230; </strong>which attempts to kill any related thread.</p>
<p><strong>Remote-SSH: Kill VSCode Server &#8230;</strong> is a good step if the server refuses to behave. The VS Code Remote Development tools installs a tiny node server and does a bunch of things based on the latest build of the extension. This command should stop everything and delete any cached files. The next time you connect, it will do a clean install.</p>
<p>That&#8217;s it! Getting SSH running, especially for public key authentication, can be a chore. However, Microsoft is seriously moving the needle in terms of playing nice with opensource tech. The pandemic might have us all searching for new ways to work, but at least we can do it securely like we were sitting at our development boxes back in the office.</p>
<p><em>Brian Hatchet is a Senior BI Consultant at DesignMind.</em></p>
<p>The post <a rel="nofollow" href="https://www.designmind.com/cloud-computing/setting-up-vs-code-for-remote-development-source-control-is-easy/">Setting up VS Code for Remote Development with Source Control (Part 3)</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Setting up VS Code for Remote Development with Source Control (Part 2)</title>
		<link>https://www.designmind.com/cloud-computing/setting-vs-code-remote-development-source-control/</link>
		
		<dc:creator><![CDATA[Brian Hatchet]]></dc:creator>
		<pubDate>Mon, 28 Sep 2020 17:47:54 +0000</pubDate>
				<category><![CDATA[AppDev]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[BI consultant]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[OpenSSH]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[public key]]></category>
		<category><![CDATA[SSH Server]]></category>
		<category><![CDATA[VS Code]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows OpenSSH Server]]></category>
		<category><![CDATA[WSL Ubuntu]]></category>
		<guid isPermaLink="false">https://www.designmind.com/?p=8862</guid>

					<description><![CDATA[<p>Configuring SSH for Public Key Authentication In part one of this series, we showed you how to configure a Windows 2019 EC2 instance to run an OpenSSH Server to pave the way for secure, remote development. This post walks through the setup of pre-shared keys for password-less login. Part three covers installing and configured VS...</p>
<div class="read-more"><a class="more-link" href="https://www.designmind.com/cloud-computing/setting-vs-code-remote-development-source-control/" rel="nofollow">Read more</a></div>
<p>The post <a rel="nofollow" href="https://www.designmind.com/cloud-computing/setting-vs-code-remote-development-source-control/">Setting up VS Code for Remote Development with Source Control (Part 2)</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Configuring SSH for Public Key Authentication</h2>
<p>In part one of this series, we showed you <a href="https://www.designmind.com/cloud-computing/setting-up-a-remote-development-environment/" target="_blank" rel="noopener noreferrer"><strong>how to configure a Windows 2019 EC2 instance to run an OpenSSH Server</strong></a> to pave the way for secure, remote development. This post walks through the setup of pre-shared keys for password-less login. Part three covers <a href="https://www.designmind.com/cloud-computing/setting-up-vs-code-for-remote-development-source-control-part-3/" target="_blank" rel="noopener noreferrer"><strong>installing and configured VS Code&#8217;s remote development capabilities</strong></a>.</p>
<h3>Setting up Private and Public Keys on the Local Machine</h3>
<p>On your local developer machine, you need to generate a public and private key. Linux and Mac users will have all the tools you need. Windows users, you&#8217;ll need to install the ssh client on your local development machine. The remote development server needs to have the line below in its sshd_config and to be restarted like we did in Part 1.</p>
<p><code>PubkeyAuthentication yes</code></p>
<p>On the local development machine, we need to make sure we have a client.<br />
In an<strong> elevated Powershell,</strong> run:</p>
<p><code># Make sure that OpenSSH is available for your Windows</code></p>
<p><code>Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'</code></p>
<p><code># Install the OpenSSH Client</code></p>
<p><code>Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0</code></p>
<p>Open up your favorite command line:</p>
<p><code>ssh-keygen</code></p>
<p>We&#8217;re going to go through the defaults without a password using RSA. Best practices recommend generating a key with a password. <strong><a href="https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement" target="_blank" rel="noopener noreferrer">You&#8217;ll be prompted to provide the password whenever you try to use the key unless you load it into an agent as detailed here</a></strong>.</p>
<p>Once you have your key loaded, copy the contents of the <code>id-rsa.pub</code> and get ready to install it on the server. It will be located in the user&#8217;s <code>~/.ssh/id_rsa.pub</code> file.</p>
<p>The last step is to load the ssh key into the local development machine&#8217;s key agent. The steps are different for Windows, Mac and Linux. <a href="https://docs.github.com/en/enterprise/2.15/user/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent" target="_blank" rel="noopener noreferrer"><strong>Github provides an exhaustive guide here</strong></a>.</p>
<h3>Installing the Public Key</h3>
<p>For WSL Ubuntu from a Linux or Mac, you can install the key onto the OpenSSH Server with one command. You will need the destination user created and configured on the development server. You will need to password-based authentication enabled to use this command, because you must login as that user. Windows users, unfortunately, are out of luck on both sides. There&#8217;s no ssh-copy-id for Windows local machines and the OpenSSH Server for Windows lacks the Linux utilities that copy the key once it gets to the server.</p>
<p>For the WSL Ubuntu, you can run:</p>
<p><code>ssh-copy-id demo@{your ec2 dns name or ip address}</code></p>
<p>When prompted, provide the password we created in part 1.</p>
<p>You should see output like:</p>
<p><code>demo@ec2-3-101-29-193.us-west-1.compute.amazonaws.com's password:</code></p>
<p><code>Number of key(s) added: 1</code></p>
<p><code>Now try logging into the machine, with: "ssh 'demo@ec2-3-101-29-193.us-west-1.compute.amazonaws.com'"</code><br />
<code>and check to make sure that only the key(s) you wanted were added.<br />
</code></p>
<p>What this utility is doing is SCPing the specified public key to the users /home/demo/.ssh/authorized_keys file and setting that appropriate permission. If you&#8217;re running a windows client or have a windows server, you won&#8217;t have the convenience of ssh-copy-id.</p>
<p>You can however either WSL or SSH into the WSL Ubuntu shell and do everything there. This is all done from the user&#8217;s perspective, so the files need to be created in their home directory and they need to own it.</p>
<p>#Create the directory if it doesn&#8217;t exist</p>
<p><code>mkdir -p /home/demo/.ssh</code></p>
<p><code>touch /home/demo/.ssh/authorized_keys</code></p>
<p><code>sudo chown -R demo:dmemo /home/user/.ssh<br />
</code><br />
Now, copy the contents of your id_rsa.pub file into <code>/home/demo/.ssh/authorized_keys<br />
</code><br />
And you&#8217;re done.</p>
<h3>Installing the Key by Hand (Windows Administrator)</h3>
<p>By default, OpenSSH Server for Windows comes with a special configuration for Windows Administrators. This is where things get kind of confusing.</p>
<p>If your user is an administrator, you need to create a special authorized key file.</p>
<p><code>%PROGRAMDATA%\ssh\administrators_authorized_keys</code></p>
<p>Log into RDP, create and edit that file. Then save the contents of your client machine&#8217;s id_rsa.pub key to that file for administrators.</p>
<p>We&#8217;re not quite done yet. The Microsoft OpenSSH team has been very helpful with answers. They are going to fix a permissions gotcha that exists at the time of this writing. If you install the key and can&#8217;t connect, it&#8217;s probably a permissions issue.</p>
<p><strong>Be sure:</strong></p>
<ul>
<li>The user on the development server is an administrator</li>
<li>You have PubKeyAuthentication set to yes in the sshd_conf</li>
<li>That the permissions are correct on the authorized_administrator_keys.</li>
</ul>
<h4>To fix the file permissions</h4>
<p>Open up Windows Explorer</p>
<p>Go to <code>%PROGRAMDATA%\ssh</code></p>
<p>Open up the Properties dialog for <code>administrators_authorized_keys</code></p>
<p>Under Security &gt; Advanced</p>
<p>Disable inheritance.</p>
<p>Remove any Permission Entry other than the <strong>Administrators</strong> group and <strong>SYSTEM.</strong></p>
<p><img loading="lazy" class="alignnone wp-image-8879 size-full" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-authorized-keys-permissions.jpg" alt="Setting up vs code" width="761" height="521" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-authorized-keys-permissions.jpg 761w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-authorized-keys-permissions-300x205.jpg 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-authorized-keys-permissions-56x38.jpg 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-authorized-keys-permissions-150x103.jpg 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-authorized-keys-permissions-58x40.jpg 58w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-authorized-keys-permissions-121x83.jpg 121w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-authorized-keys-permissions-250x171.jpg 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-authorized-keys-permissions-102x70.jpg 102w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-authorized-keys-permissions-240x164.jpg 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-authorized-keys-permissions-260x178.jpg 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-authorized-keys-permissions-434x297.jpg 434w" sizes="(max-width: 761px) 100vw, 761px" /></p>
<p>If you&#8217;re looking for the OpenSSH Utils powershell cmdlets to fix this problem, don&#8217;t. Those have been de-listed from the nuget package repository and powershell gallery in favor of the OpenSSH Server handling the permissions themselves.</p>
<h3>Installing the Key by Hand (Windows Regular User)</h3>
<p>Regular users use the standard .ssh file in their user directory at <code>HOMEPATH\.ssh\authorized_keys</code></p>
<p>Log into RDP, create and edit that file. Then save the contents of your client machine&#8217;s id_rsa.pub key to that file for administrators.</p>
<h3>Troubleshooting Windows OpenSSH Server</h3>
<p>If you&#8217;re reading this, welcome to the &#8220;SSH Server Administrator Bootcamp.&#8221; SSH is rock solid, but it likes a very specific kind of setup and tends to silently deny you access.</p>
<p>If the keys continue to fail, it&#8217;s time to get some diagnostic logging. <a href="https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_server_configuration" target="_blank" rel="noopener noreferrer"><strong>You can turn on the SysLogFacility as detailed here</strong></a>. There&#8217;s an easier and more temporary way too.</p>
<p>Stop your OpenSSH server in services.</p>
<p>Open a terminal and go to <code>%PROGRAMDATA%\ssh<br />
</code><br />
Here, you can run the OpenSSH Server from the command line and see all of its output with <code>sshd -ddd</code><br />
The <code>-d</code> flag specifies levels of diagnostic output. You need three to get to &#8220;debug3&#8221;.</p>
<p>There will be a lot of chatter as it tries to authenticate.</p>
<p>If you see:</p>
<p><code>debug3: Bad permissions. Try removing permissions for user: S-1-5-11 on file C:/ProgramData/ssh/administrators_authorized_keys.</code></p>
<p><code></code><code>Authentication refused.</code></p>
<p>That&#8217;s SSH complaining about permissions on that file. It&#8217;s very strict about who can access it.</p>
<p>Once you have the OpenSSH Server accepting your key, kill the command line and restart the service. There&#8217;s many ways your key can fail. Some common pitfalls are permissions, character encoding and trying to install an administrator key in their regular .ssh authorized keys file. Fortunately, it&#8217;s a very chatty log file once you get used to its unique brand of diagnostic gibberish.</p>
<p>Another good technique is the <strong>-v &#8220;verbose&#8221;</strong> flag on the ssh client itself. On the local development machine, you can log verbose connection information with:</p>
<p><code></code><code>ssh -vvv {your ec2 dns name or ip address}</code></p>
<h3>Turn off Password Based Authentication</h3>
<p>SSH best practice recommends turning of password-based authentication. It&#8217;s a balancing act based on your security needs. If you have your SSH server configured to only allow certain connections through AWS&#8217; Inbound Security rules, you won&#8217;t really need to worry about brute force attacks and the ease of ssh-copy-id will make it easy for you to upload keys if you know that user&#8217;s username and password.</p>
<p>If you do want to turn them off, then edit your sshd_config on the OpenSSH Server and restart it.</p>
<h3>Agent Forwarding for WSL Ubuntu</h3>
<p>One major advantage of running OpenSSH Server through WSL Ubuntu is that you get key-agent forwarding. By enabling it on the server, loading it into the developer&#8217;s local machine key agent and registering the public key with the repository, you will have one private / public key to access all the resources.</p>
<h3>Setting up another key for Windows Development Servers</h3>
<p>Until OpenSSH Server for Windows supports key agent forwarding, you are going to have to manage two sets of SSH keys. The first key we setup will handle the connection from the developer&#8217;s local machine to the development server. If you create a second set of keys on the development server and install that second public key on the repository, you will be able to have password-less authentication on the server.</p>
<h3>Adding the Public Key to your Repository</h3>
<p>With the public key of the client configured, it&#8217;s time to add it to the repository. We&#8217;re using Bitbucket in this example, but the process is the same for Github or Gitlab. Copy the public key for your user and paste it into the repository settings. Then, the user will be able to pull and push without ever having to worry about user keys.</p>
<p><strong>Important</strong>: Be sure to clone your repository using the ssh url and not the user-specific https one.</p>
<p>You can confirm your remote url with:</p>
<pre class="lang-sh prettyprint prettyprinted"><code><span class="pln">git remote </span><span class="pun">-</span><span class="pln">v</span></code></pre>
<p>And change it to the ssh version with:</p>
<p><span class="comment-copy"><code>git remote set-url --push origin git@github.com/demo/master<br />
</code></span></p>
<p>You will want to make sure you are using the correct url for logging into your repository. If you can clone and pull without providing a username and password, you can move on to part <a href="https://www.designmind.com/uncategorized/setting-vs-code-remote-development-source-control-part-3/">three</a> and have a repository-aware remote development environment.</p>
<p><em>Brian Hatchet is a Senior BI Consultant at DesignMind. </em></p>
<p>The post <a rel="nofollow" href="https://www.designmind.com/cloud-computing/setting-vs-code-remote-development-source-control/">Setting up VS Code for Remote Development with Source Control (Part 2)</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Setting up VS Code for Remote Development with Source Control (Part 1)</title>
		<link>https://www.designmind.com/cloud-computing/setting-up-a-remote-development-environment/</link>
		
		<dc:creator><![CDATA[Brian Hatchet]]></dc:creator>
		<pubDate>Mon, 24 Aug 2020 19:30:13 +0000</pubDate>
				<category><![CDATA[AppDev]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Amazon EC2]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[BI consultant]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[EC2 instance]]></category>
		<category><![CDATA[OpenSSH]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[remote]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[VSCode]]></category>
		<guid isPermaLink="false">https://www.designmind.com/?p=8848</guid>

					<description><![CDATA[<p>Setting up a Remote Development Environment with OpenSSH Server (sshd or daemon for you Linux Folks) COVID has revolutionized the way we think about work. Setting up a remote development environment is suddenly high on your list. While the sudden uptick in remote work is new, the tools necessary to setup a secure remote workflow...</p>
<div class="read-more"><a class="more-link" href="https://www.designmind.com/cloud-computing/setting-up-a-remote-development-environment/" rel="nofollow">Read more</a></div>
<p>The post <a rel="nofollow" href="https://www.designmind.com/cloud-computing/setting-up-a-remote-development-environment/">Setting up VS Code for Remote Development with Source Control (Part 1)</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Setting up a Remote Development Environment with OpenSSH Server</h2>
<p><em>(sshd or daemon for you Linux Folks)</em></p>
<p>COVID has revolutionized the way we think about work. Setting up a remote development environment is suddenly high on your list. While the sudden uptick in remote work is new, the tools necessary to setup a secure remote workflow have been getting easier and more powerful over the years. Now, there are many free tools available that will free your developers to work as they wish and Microsoft playing along with features in Windows and new IDE tools.</p>
<p>Gone are the days of clunky terminals and inelegant RDP. Visual Studio Code’s new remote code extensions and reliable old SSH allows the big three operating systems to play nicely together over a secure tunnel. The result can a blended environment where not even a single line of code needs to live on your local machine, regardless if you prefer Mac, Windows or Linux.</p>
<p>If you have a project that prohibits running things locally, you can setup a powerful stack. Using the power of SSH’s tunneling and key sharing, you’ll have a remote development environment with single sign on and only one key to worry about. The beauty of this setup is that you can run it on any server running SSH. We’re demonstrating a mix of Mac, Linux and Windows to highlight the portability of this setup and some of the hurdles that you might encounter. As long as your server can run SSH, you can use this setup. Windows Open SSH Server doesn&#8217;t support everything, but it&#8217;s very usable.</p>
<p>In this three part series, we’ll show you the ins and outs of setting up a remote development environment, and point out some caveats and gotchas along the way. We will walk you through the steps necessary to get things running from a local machine, connecting to a development server and access a git repository – all without a line of code running on the developer machine. Add in SSH&#8217;s local proxy, and you can access server resources without running them locally or even worrying about ports. Windows-based development servers don&#8217;t get key sharing because of a limitation in SSH, but there is a slightly inelegant workaround for that too.</p>
<h2>Setting up your Server</h2>
<p>By the end of this guide, you will have a fully configured Windows Server 2019 instance running an SSH Daemon through Windows or WSL Ubuntu. In part two of this series <a href="https://www.designmind.com/cloud-computing/setting-vs-code-remote-development-source-control/" target="_blank" rel="noopener noreferrer"><strong>we walk through the setup of pre-shared keys for password-less login</strong></a>, and in part three you will learn how to <a href="https://www.designmind.com/cloud-computing/setting-up-vs-code-for-remote-development-source-control-part-3/" target="_blank" rel="noopener noreferrer"><strong>connect VS Code to the server, code like you were sitting at the machine, and interact with the repository</strong></a>.</p>
<p>This guide assumes you know how to:</p>
<ul>
<li>Create EC2 Instances on AWS</li>
<li>Administer Windows 2019</li>
<li>Basic Ubuntu terminal knowledge</li>
</ul>
<p>To show how we can have Mac, Windows and Linux playing nicely together. We’ll be using:</p>
<ul>
<li>A Windows 2019 Server running WSL (Windows Subsystem for Linux) and the Ubuntu Terminal environment running on an AWS free tier EC2 instance (Development Server)</li>
<li>VS Code on Mac with the Remote Development and SSH extension (Local machine)</li>
<li>A Git Repository</li>
</ul>
<h3>Create and start your new Free AWS Instance</h3>
<p>VSCode&#8217;s remote development tools provide SSH access along with Containers and WSL access. While we can run it on a Linux server directly, folks using IIS and other Windows software are no longer out in the cold. We&#8217;ll demonstrate setting up a Windows server from the ground up to show how easy it is to get to work. We&#8217;ll be using RDP to configure the server, but it won&#8217;t be necessary by the time we&#8217;re done.</p>
<p>From your AWS console, set up your development server:</p>
<ul>
<li>Create a default instance in the free tier running Windows Server 2019 using the official AWS AMIs.</li>
<li>Attach a security group to the EC2 instance that allows communication over <strong>RDP (TCP 3389)</strong> and <strong>SSH (TCP 22)</strong></li>
<li>Select a <strong>key pair</strong> you have access to so you can retrieve the administrator password.</li>
</ul>
<h3></h3>
<h3>Connect to your instance over RDP</h3>
<p>With your instance create and ports opened, you should be able to find your EC2 Instance and connect.</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/find-your-EC2-Instance.jpg"><img loading="lazy" class="alignnone wp-image-8939" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/find-your-EC2-Instance.jpg" alt="find your EC2 instance" width="871" height="283" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/find-your-EC2-Instance.jpg 971w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/find-your-EC2-Instance-300x97.jpg 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/find-your-EC2-Instance-768x249.jpg 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/find-your-EC2-Instance-56x18.jpg 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/find-your-EC2-Instance-150x49.jpg 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/find-your-EC2-Instance-120x40.jpg 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/find-your-EC2-Instance-125x41.jpg 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/find-your-EC2-Instance-250x81.jpg 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/find-your-EC2-Instance-216x70.jpg 216w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/find-your-EC2-Instance-240x78.jpg 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/find-your-EC2-Instance-260x84.jpg 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/find-your-EC2-Instance-462x150.jpg 462w" sizes="(max-width: 871px) 100vw, 871px" /></a></p>
<p>Now, you can download the RDP connection file and retrieve the password by uploading the PEM key you chose when you created the instance.</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/connect-to-your-instance.jpg"><img loading="lazy" class="size-full wp-image-8938 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/connect-to-your-instance.jpg" alt="connect to your instance" width="797" height="750" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/connect-to-your-instance.jpg 797w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/connect-to-your-instance-300x282.jpg 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/connect-to-your-instance-768x723.jpg 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/connect-to-your-instance-56x53.jpg 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/connect-to-your-instance-150x141.jpg 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/connect-to-your-instance-43x40.jpg 43w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/connect-to-your-instance-88x83.jpg 88w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/connect-to-your-instance-250x235.jpg 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/connect-to-your-instance-74x70.jpg 74w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/connect-to-your-instance-240x226.jpg 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/connect-to-your-instance-260x245.jpg 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/connect-to-your-instance-316x297.jpg 316w" sizes="(max-width: 797px) 100vw, 797px" /></a></p>
<h3>Install OpenSSH for Windows (Option 1)</h3>
<p>If you don&#8217;t want WSL, you can install OpenSSH directly on the server. This setup has a few things to consider:</p>
<ol>
<li><strong>No SSH Key Agent forwarding</strong>. The windows version of OpenSSH server does not support the forwarding of pre-shared keys from the local machine to the dev server to the downstream repository. It&#8217;s a very subtle limitation. The only indication of the problem is a line in the server logs. This can be hard to figure out considering how picky and prone to failing the OpenSSH server is regarding key security. You can, however, create and load an ssh key on the development server and configure the SSH agent to use that. We&#8217;ll be covering all of this in part 3. Now, you just need to decide if you want to be purely windows or if you want the power of Windows and WSL with a fully functional SSH Server.</li>
<li><strong>Administrator Keys are weird</strong>. Administrator users have their public keys stored in a different file that the standard authorized_keys file in the user&#8217;s ssh directory.</li>
<li><strong>Native Windows Shell. </strong>One major advantage of using the Windows version of the OpenSSH server is that it&#8217;s all Windows. Your SSH terminals will be in CMD. While this is easy to arrange in WSL, it&#8217;s out of the box functionality for the purists.</li>
</ol>
<p>In an<strong> elevated Powershell,</strong> run:</p>
<p><code># Make sure that OpenSSH is available for your Windows</code></p>
<p><code>Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'</code></p>
<p><code># Install the OpenSSH Client</code></p>
<p><code>Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0</code></p>
<p><code># Install the OpenSSH Server</code></p>
<p><code>Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.</code></p>
<p><code># Enable OpenSSH Server to always start</code></p>
<p><code>Start-Service sshd  </code></p>
<p><code>Set-Service -Name sshd -StartupType 'Automatic'</code></p>
<p>You can read about the finer points of configuring the OpenSSH Server on windows <a href="https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_server_configuration">here</a>.</p>
<h3>Install OpenSSH for WSL Ubuntu (Option 2)</h3>
<p>If you do  all of the OpenSSH features and the power of Linux running along Windows on the server, you can WSL. This setup also has a few things to consider:</p>
<ol>
<li>SSH Key Agent forwarding. We still must configure it, but it&#8217;s supported.</li>
<li>WSL needs to be run as a user. There&#8217;s no way to run WSL Linux services directly. Some scripts or a Scheduled Task configured to run as a Windows user at boot are required.</li>
<li>You&#8217;ll need to create users in Ubuntu as well as windows. SSH requires users to connect to on the development server. Windows OpenSSH server can just use Windows users, but you will need to create users inside Ubuntu for them to connect.</li>
<li>All windows files are available under <code>/mnt/{drive letter}</code></li>
<li>You can write from Linux to Windows, but not the other way around.</li>
<li>You can run a mix of windows and bash commands, but Powershell takes precedence.</li>
<li>Windows executables require the full name including the extension.</li>
<li>If you start a WSL session from the desktop, you get access to the windows path variables. When you SSH in, you don&#8217;t unless you expressly set them up.</li>
<li>The WSL application is specific to that user. Fortunately, it can be exported and shared with other users.</li>
</ol>
<p>In an <strong>elevated Powershell</strong>, run:</p>
<pre class="has-inner-focus"><code>dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
</code></pre>
<pre class="has-inner-focus"><code class="lang-powershell" data-author-content="dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart ">dism.exe /online /<span class="hljs-pscommand">enable-feature</span> /featurename:VirtualMachinePlatform /all /norestart
</code></pre>
<pre class="has-inner-focus"><code class="lang-powershell" data-author-content="wsl --set-default-version 2 ">wsl<span class="hljs-parameter"> --set-default-version</span> <span class="hljs-number">2</span></code></pre>
<p>Now, you can install the Linux distribution of your choice. You can install multiple flavors at the same time too. This guide will be using Ubuntu 20.04.  <a href="https://docs.microsoft.com/en-us/windows/wsl/install-manual" target="_blank" rel="noopener noreferrer"><strong>The official Microsoft guide is here</strong></a>. Downloading and installing will take a few minutes.</p>
<p class="has-inner-focus">In an <strong>elevated Powershell</strong>, run:</p>
<p><code>Invoke-WebRequest -Uri https://aka.ms/wslubuntu2004 -OutFile Ubuntu.appx -UseBasicParsing</code></p>
<p><code>Rename-Item .\Ubuntu.appx .\Ubuntu.zip</code></p>
<p><code>Expand-Archive .\Ubuntu.zip .\Ubuntu</code></p>
<p><code>cd Ubuntu</code></p>
<p><code>ubuntu2004.exe</code></p>
<p><code>$userenv = [System.Environment]::GetEnvironmentVariable("Path", "User")</code></p>
<p><code># Make sure this concatenated path matches the ubuntu2004.exe location<br />
[System.Environment]::SetEnvironmentVariable("PATH", $userenv + ";C:\Users\Administrator\Ubuntu", "User")</code></p>
<p>This will download and extract Ubuntu2004 as a exe in the administrator&#8217;s home directory.  When you run it for the first time, you will configure a user and password. It will also become the default distribution when you run <code>wsl.exe</code>. We&#8217;ll be creating and using a user called <strong>demo</strong> with a password<strong> demo</strong>.</p>
<p><img loading="lazy" class="alignnone wp-image-8858 size-full" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/ubuntu2004-wsl.jpg" alt="creating a user in wsl" width="856" height="734" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/ubuntu2004-wsl.jpg 856w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/ubuntu2004-wsl-300x257.jpg 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/ubuntu2004-wsl-768x659.jpg 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/ubuntu2004-wsl-56x48.jpg 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/ubuntu2004-wsl-150x129.jpg 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/ubuntu2004-wsl-47x40.jpg 47w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/ubuntu2004-wsl-97x83.jpg 97w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/ubuntu2004-wsl-250x214.jpg 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/ubuntu2004-wsl-82x70.jpg 82w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/ubuntu2004-wsl-240x206.jpg 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/ubuntu2004-wsl-260x223.jpg 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/ubuntu2004-wsl-346x297.jpg 346w" sizes="(max-width: 856px) 100vw, 856px" /></p>
<p>&nbsp;</p>
<h3>Install OpenSSH Server in WSL Ubuntu</h3>
<p>Log into <strong>wsl</strong> as the user you created.</p>
<p><code>ubuntu2004.exe</code></p>
<p><code><em># Inside Ubuntu Shell</em></code></p>
<p><code>sudo apt install ssh</code></p>
<p><code>[sudo] password for demo: {the password you created}</code></p>
<p><code>sudo ssh-keygen -A <em># Generate the ssh keys for the server</em></code></p>
<p><code>sudo service ssh start</code></p>
<h3>Run OpenSSH Server in WSL Ubuntu when Windows starts</h3>
<p>One downside of this setup is that there is no way to run WSL as a service. We’ll need to configure Windows to login and start WSL as a user via a Scheduled Task.</p>
<p>First, we need to allow the OpenSSH Server to start without authentication inside WSL Ubuntu</p>
<p>Log into wsl as the user you created.</p>
<p><code><em># Enable starting sshd without password</em></code></p>
<p><code>sudo visudo</code></p>
<p><code>[sudo] password for demo: {the password you entered}</code></p>
<p><code><em>#Add this line below %sudo ALL=(ALL:ALL) ALL</em></code></p>
<p><code>%sudo ALL=NOPASSWD: /etc/init.d/ssh</code></p>
<p><code><em># Exit and save</em></code></p>
<p>On the development server, open Windows Task Scheduler and add our command as a startup task.</p>
<p>Click on <strong>Create Basic Task</strong></p>
<p>Name it <strong>Start WSL sshd</strong></p>
<p>Move to Next &gt; Trigger</p>
<p>Select <strong>When the Computer Starts</strong></p>
<p>Move to Next &gt; Action</p>
<p>Select <strong>Start a program</strong></p>
<p>Move to Next &gt; Program.script</p>
<p>Enter <strong>C:\Windows\System32\wsl.exe</strong></p>
<p>Add arguments (optional): <strong>-u demo sh -c &#8220;sudo /etc/init.d/ssh start&#8221;</strong></p>
<p>Run the task and refresh it. You want it returning 0x0 as a status code.</p>
<p><img loading="lazy" class="alignnone wp-image-8859 size-full" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-scheduled-task-for-OpenSSH-Server.jpg" alt="Scheduled Task for OpenSSH Server" width="690" height="487" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-scheduled-task-for-OpenSSH-Server.jpg 690w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-scheduled-task-for-OpenSSH-Server-300x212.jpg 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-scheduled-task-for-OpenSSH-Server-56x40.jpg 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-scheduled-task-for-OpenSSH-Server-150x106.jpg 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-scheduled-task-for-OpenSSH-Server-57x40.jpg 57w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-scheduled-task-for-OpenSSH-Server-118x83.jpg 118w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-scheduled-task-for-OpenSSH-Server-250x176.jpg 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-scheduled-task-for-OpenSSH-Server-99x70.jpg 99w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-scheduled-task-for-OpenSSH-Server-240x169.jpg 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-scheduled-task-for-OpenSSH-Server-260x184.jpg 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/windows-scheduled-task-for-OpenSSH-Server-421x297.jpg 421w" sizes="(max-width: 690px) 100vw, 690px" /></p>
<p>Select the task that just got created and enable it to always run. You will need to enter the credentials of the windows user, else it just won’t run.<strong><br />
</strong></p>
<p>Restart the server. The SSH server should be listening by default and you can move on to getting SSH access.</p>
<h3>Allow OpenSSH Server traffic through Windows Firewall</h3>
<p>The AWS Security group with the traffic for 22 takes care of our AWS firewall access, but Windows Server 2019 will block the traffic by default.</p>
<p>Whether you installed OpenSSH Servber via Windows or WSL Ubuntu, you need to allow traffic on port 22.</p>
<p>Add a Windows Firewall Rule to allow SSH by running these commands in an elevated Powershell. Note, this will open up 22 for all TCP traffic at the Windows Firewall level.</p>
<p>In an <strong>elevated Powershell</strong>, run:</p>
<p><code>Set-NetFirewallProfile -All -Enabled True</code></p>
<p><code>New-NetFirewallRule -DisplayName 'WSL SSH Inbound' -Direction Inbound -Action Allow -Protocol TCP -LocalPort @('22')<br />
</code></p>
<h3>Let&#8217;s Get Connected</h3>
<p>You should now be able to open an ssh connection to the server. You will not be able to login by default because we must setup our authentication. By default, OpenSSH Server ships with password-based login disabled because it’s insecure. You’ll need to configure an SSH client on your local machine. On mac and linux, you should be able to open up terminal and have <code>ssh</code> dump its command line arguments.<strong><br />
</strong></p>
<p>Windows users, you must have an ssh client installed. If you’re running Windows 2019 or Windows 10, you can install the windows client version. While you can use Putty for now, the SSH keys pageant generates need to be converted to work with OpenSSH Serbver.</p>
<p>You can install the OpenSSH client for Windows on your <strong>local machine</strong> by opening an<strong> elevated powershell</strong> and running:<strong><br />
</strong><code><em># Make sure that OpenSSH is available for</em></code></p>
<p><code>Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'</code></p>
<p><code><em># Install the OpenSSH Client</em></code></p>
<p><code>Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0</code></p>
<p>Configuring SSH keys will be covered in Part Two. For now, let’s try it with our username and password before we go locking things down. Preshared keys are finicky and will fail unless they are in the right place with the right permissions. By validating with a username and password first, we can make sure everything else works.</p>
<h3>Configure OpenSSH Server for Windows</h3>
<p>The first thing we need to do for Windows is copy the default config file to the run time location.</p>
<p>In an <strong>elevated Powershell</strong>, run:<br />
<code>cp C:\Windows\System32\OpenSSH\sshd_config_default 'C:\ProgramData\ssh\sshd_config'</code></p>
<p>Edit <code>C:\ProgramData\ssh\sshd_config</code> in your favorite text editor.</p>
<p>While we are in there, let&#8217;s turn on PublicKey Authentication for later by uncommenting and changing this line to <strong>yes</strong>.</p>
<p><code>PubkeyAuthentication yes</code></p>
<p>And for temporary testing purposes, enable password based authentication by uncommenting and changing this line to <strong>yes</strong>.</p>
<p><code>PasswordAuthentication yes</code></p>
<p>Restart the OpenSSH Server. You should be able to login to your box using your RDP credentials.</p>
<p>On your <strong>local machine</strong>, run <code>ssh -vvv administrator@{your ec2 dns name or ip address}</code></p>
<p>And login with the same password retrieved via the pem key. The <code>-vvv</code> flag puts the Open SSH Client on your local machine into verbose mode and shows all the authentication steps it is trying. That kind of verbosity will aid you in troubleshooting connections and understanding what SSH is trying to do.</p>
<p>You should now be sitting at a remote terminal and can interact with CMD.</p>
<p>When you&#8217;re satisfied, be sure to set PasswordAuthentication to no in the copied <code>C:\ProgramData\ssh\sshd_config</code>.</p>
<p>Restart your server and get ready to configure some OpenSSH keys.</p>
<h3>Configure OpenSSH Server for WSL Ubuntu</h3>
<p>Login to WSL on the Development Server as <strong>demo.</strong></p>
<p>wsl -u demo</p>
<p>In the WSL shell:</p>
<p><code>edit /etc/ssh/sshd_config</code></p>
<p>While we are in there, let&#8217;s turn on PublicKey Authentication for later by uncommenting and changing this line to <strong>yes</strong>.</p>
<p><code>PubkeyAuthentication yes</code></p>
<p>And for temporary testing purposes, enable password based authentication by uncommenting and changing this line to <strong>yes</strong>.</p>
<p><code>PasswordAuthentication yes</code></p>
<p>Find and uncomment the line that allows Agent Forwarding</p>
<p><code>AllowAgentForwarding yes<br />
</code></p>
<p>Exit and save your changes then restart the OpenSSH Server with <code>sudo service ssh restart</code></p>
<p>On your <strong>local machine</strong>, run <code>ssh -vvv demo@{your ec2 dns name or ip address}</code></p>
<p>And login with the same password you created in WSL. The <code>-vvv</code> flag puts the Open SSH Client on your local machine into verbose mode and shows all the authentication steps it is trying. That kind of verbosity will aid you in troubleshooting connections and understanding what SSH is trying to do.</p>
<p>You should now be sitting at a remote terminal and can interact with Bash. While you are in Ubuntu, you can access your windows environment at <code>/mnt/c</code>.</p>
<p>That&#8217;s it! You should be SSHing into your box which the main thing required to setup remote code. Before we get to the really good stuff, Part <a href="https://www.designmind.com/cloud-computing/setting-vs-code-remote-development-source-control-part-2/">two</a> will talk about tweaking your installation to enable Public Key Authentication and other goodies. Part <a href="https://www.designmind.com/uncategorized/setting-vs-code-remote-development-source-control-part-3/">three</a> will go over Visual Studio Code remote development and draw back the curtain on the power of this setup.</p>
<p><i>Brian Hatchet is a Senior BI Consultant at DesignMind.</i></p>
<p>The post <a rel="nofollow" href="https://www.designmind.com/cloud-computing/setting-up-a-remote-development-environment/">Setting up VS Code for Remote Development with Source Control (Part 1)</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Right Sizing Your Power BI Gateway on AWS</title>
		<link>https://www.designmind.com/business-intelligence/right-sizing-your-power-bi-gateway-on-aws/</link>
		
		<dc:creator><![CDATA[Brian Hatchet]]></dc:creator>
		<pubDate>Tue, 26 May 2020 18:11:13 +0000</pubDate>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[Amazon EC2]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[CloudFormation]]></category>
		<category><![CDATA[CloudWatch]]></category>
		<category><![CDATA[ELB]]></category>
		<category><![CDATA[Ops Automator]]></category>
		<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Power BI Desktop]]></category>
		<category><![CDATA[Power BI Gateway]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[PowerShell cmdlets]]></category>
		<category><![CDATA[Redshift Datasource]]></category>
		<guid isPermaLink="false">https://www.designmind.com/?p=8808</guid>

					<description><![CDATA[<p>This guide is about the challenges and obstacles you might run into if you try to scale an Amazon EC2 Instance running Power BI’s OnPremise’s gateway. It all comes down to the current limitations in the installer and the PowerShell cmdlets. Right Sizing Your Power BI Gateway on AWS is possible. Here’s how DesignMind uses...</p>
<div class="read-more"><a class="more-link" href="https://www.designmind.com/business-intelligence/right-sizing-your-power-bi-gateway-on-aws/" rel="nofollow">Read more</a></div>
<p>The post <a rel="nofollow" href="https://www.designmind.com/business-intelligence/right-sizing-your-power-bi-gateway-on-aws/">Right Sizing Your Power BI Gateway on AWS</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This guide is about the challenges and obstacles you might run into if you try to scale an Amazon EC2 Instance running Power BI’s OnPremise’s gateway. It all comes down to the current limitations in the installer and the PowerShell cmdlets. Right Sizing Your Power BI Gateway on AWS is possible. Here’s how DesignMind uses enhanced AWS configurations to anticipate our customer’s data reporting needs.</p>
<p>Why would you even consider right sizing your Power BI Gateway on AWS? While Microsoft provides a Redshift Datasource, that requires pulling things across the wire from AWS to Azure or to your Power BI Desktop. Treating AWS’ data resources like an “on-premise” data lake, allows us to configure Power BI Gateways onto EC2 Instances in the same VPC as the database. We can offload and localize Refreshes and Direct Queries. Now, we just need to right-size our Gateway clusters so we have the capacity we need without breaking the bank.</p>
<h2>Installing the Power BI Gateway using PowerShell cmdlets</h2>
<p>Let’s talk about Power BI Gateway clusters first. Power BI Gateway already provides some basic load balancing, but they require big expensive machines that must be pre-configured and connected.</p>
<p>When you install the gateway, you get a choice after you authenticate. You can either register the gateway as a new cluster or you can connect it to the existing cluster. Here’s the rub. That part cannot be automated as of yet.</p>
<p>The Power BI Gateway installer doesn’t accept any options. We can’t select the gateway. We can’t provide the recovery key. We can’t connect to an existing cluster.</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/on-premises-data-gateway.png"><img loading="lazy" class="aligncenter wp-image-8810 size-full" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/on-premises-data-gateway.png" alt="Right Sizing your Power BI Gateway on AWS using the on-premises data gateway" width="627" height="605" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/on-premises-data-gateway.png 627w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/on-premises-data-gateway-300x289.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/on-premises-data-gateway-56x54.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/on-premises-data-gateway-150x145.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/on-premises-data-gateway-41x40.png 41w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/on-premises-data-gateway-86x83.png 86w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/on-premises-data-gateway-250x241.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/on-premises-data-gateway-73x70.png 73w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/on-premises-data-gateway-240x232.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/on-premises-data-gateway-260x251.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/on-premises-data-gateway-308x297.png 308w" sizes="(max-width: 627px) 100vw, 627px" /></a></p>
<p>If we could automate these settings, we could connect a new instance to an existing gateway cluster.</p>
<p>The Power BI team provides us with some PowerShell cmdlets that lets us do almost everything. <a href="https://docs.microsoft.com/en-us/powershell/gateway/overview?view=datagateway-ps" target="_blank" rel="noopener noreferrer"><strong>With the modules outlined here</strong></a>, we can do almost everything. We can install the gateway, login and create a new gateway. <a href="https://powerbi.microsoft.com/en-us/blog/announcing-automation-of-data-gateway-installationpublic-preview/" target="_blank" rel="noopener noreferrer"><strong>Microsoft’s Power BI team points out this limitation in the public preview</strong></a> of their new cmdlets to automate it.</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cmdlets.png"><img loading="lazy" class="aligncenter wp-image-8811 size-full" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cmdlets.png" alt="Right Sizing your Power BI Gateway on AWS using PowerShell cmdlets" width="856" height="260" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cmdlets.png 856w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cmdlets-300x91.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cmdlets-768x233.png 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cmdlets-56x17.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cmdlets-150x46.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cmdlets-120x36.png 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cmdlets-125x38.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cmdlets-250x76.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cmdlets-220x67.png 220w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cmdlets-240x73.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cmdlets-260x79.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cmdlets-462x140.png 462w" sizes="(max-width: 856px) 100vw, 856px" /></a></p>
<h2>Right sizing your Power BI Gateway on AWS</h2>
<p>That’s it in a nutshell. We can automate installation. We can create NEW gateways. We cannot register a new gateway to a new installer in an automated manner with either the installer or PowerShell.</p>
<p>There goes a pre-cooked AMI with everything installed and a user-data script to configure a gateway and add it to the cluster. Since each node needs to be manually configured, we need to resize pre-existing machines in AWS.</p>
<h2>Enter Ops Automator</h2>
<p>There’s no way to resize and existing EC2 with the tools that AWS provides out of the box. ELB and Autoscaler groups are designed to work with ephemeral instances that auto-configure themselves. <a href="https://aws.amazon.com/solutions/implementations/ops-automator/" target="_blank" rel="noopener noreferrer"><strong>Fortunately, AWS provides an enhanced framework</strong></a><br />
that makes such things possible. They provide a CloudFormation template that installs this impressive stack.</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cloudformation.png"><img loading="lazy" class="aligncenter wp-image-8812 size-large" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cloudformation-1024x703.png" alt="Right Sizing Your Power BI Gateway on AWS with this CloudFormation" width="1024" height="703" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cloudformation-1024x703.png 1024w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cloudformation-300x206.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cloudformation-768x527.png 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cloudformation-56x38.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cloudformation-150x103.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cloudformation-58x40.png 58w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cloudformation-121x83.png 121w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cloudformation-250x172.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cloudformation-102x70.png 102w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cloudformation-240x165.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cloudformation-260x178.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cloudformation-433x297.png 433w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/cloudformation.png 1478w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>
<p>The core of it is Lambda functions that do powerful things not available to us on the Console. Once you install that framework, our AWS configuration is relatively straightforward. We can use the VerticalResize task provided by the framework, attach it to our EC2 instances to RESIZE the installation.</p>
<h2>Bringing it all together</h2>
<p>In order to make this work and ensure maximum uptime while reduced cost, we must configure the Power BI gateway itself to use their own internal load balancing and then use the Vertical Resize task to setup the pre-configured EC2 instances under load and step them down when the load cools off.</p>
<p><a href="https://docs.microsoft.com/en-us/data-integration/gateway/service-gateway-high-availability-clusters" target="_blank" rel="noopener noreferrer"><strong>Microsoft provides some out of the box load balancing with some tweaks to the configuration files on the primary gateway here</strong></a>. By default, load balancing is random. By adjusting the metrics in the config file, we get greater control to start routing traffic to child nodes. If we didn’t care about cost, we’d just have a bunch of machines running and they’d balance the queries and we would be done.</p>
<p>This is AWS we’re talking about here. The recommended configurations for an On-premises gateway get expensive real fast. So, why not have one main gateway running at the specifications and then have child nodes running on Free Micro instances that scale up under load?</p>
<p>That’s where the ops automator comes in. By using the Ops Automator framework, we can tag our child nodes and have them scale up as they come under load. The Power BI Gateway routes the traffic and the child nodes go offline, scale up and then come back online. Getting the responsive, always on cluster is a balancing act of scaling up in time, but this is just the basic configuration.</p>
<p>With CloudWatch and better monitoring, we can get those child nodes scaling up once the Power BI Gateway goes underload. Once the Power BI team delivers the PowerCmd modules planned on their road map, then we should be able to use auto scaling and throw away ephemeral gateways when we are done. This solution for right sizing your Power BI gateway on AWS is a handy trick for those who need to resize EC2 containers that must be configured by hand.</p>
<p><em>Brian Hatchet is a Principal Software Engineer at DesignMind, and specializes in .NET, open source, and team software development processes.</em></p>
<p>The post <a rel="nofollow" href="https://www.designmind.com/business-intelligence/right-sizing-your-power-bi-gateway-on-aws/">Right Sizing Your Power BI Gateway on AWS</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Creating Power BI Custom Visuals</title>
		<link>https://www.designmind.com/business-intelligence/power-bi-custom-visuals/</link>
		
		<dc:creator><![CDATA[Gnanaprakash Rajamanickam]]></dc:creator>
		<pubDate>Tue, 21 Apr 2020 21:58:42 +0000</pubDate>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[custom visuals]]></category>
		<category><![CDATA[DesignMind]]></category>
		<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Power BI custom visuals]]></category>
		<category><![CDATA[Power BI Desktop]]></category>
		<category><![CDATA[Power BI experts]]></category>
		<category><![CDATA[Power BI Service]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[visual studio code]]></category>
		<guid isPermaLink="false">https://www.designmind.com/?p=8770</guid>

					<description><![CDATA[<p>Sometimes dashboard/reporting projects call for data visualizations that are not part of the package. Power BI has a lot of visualizations out of the box (OOB) and in AppSource, but when they aren’t enough, what should you do? In come Power BI Custom Visuals. Power BI Custom Visuals provide a way to extend OOB functionality...</p>
<div class="read-more"><a class="more-link" href="https://www.designmind.com/business-intelligence/power-bi-custom-visuals/" rel="nofollow">Read more</a></div>
<p>The post <a rel="nofollow" href="https://www.designmind.com/business-intelligence/power-bi-custom-visuals/">Creating Power BI Custom Visuals</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Sometimes dashboard/reporting projects call for data visualizations that are not part of the package. Power BI has a lot of visualizations out of the box (OOB) and in <a href="https://appsource.microsoft.com/en-us/marketplace/apps?product=power-bi" target="_blank" rel="noopener noreferrer"><strong>AppSource</strong></a>, but when they aren’t enough, what should you do? In come Power BI Custom Visuals.</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-custom-visuals-example.png"><img loading="lazy" class="aligncenter wp-image-8798" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-custom-visuals-example.png" alt="Power BI custom visuals example of data visualization" width="600" height="377" /></a></p>
<p>Power BI Custom Visuals provide a way to extend OOB functionality with other open source visualization tools like D3, jQuery, and R. This gives you a great deal of flexibility in terms of formatting, visual elements, and capabilities. Microsoft even provides the source code for some of their OOB visualizations for you to make tweaks to if you want to try to self-teach yourself how to do this.</p>
<p>Unfortunately, custom visuals can be a lot of effort. You’ve got to know Java, D3, CSS, HTML, and possibly other languages to complete a custom viz package (PBIVIZ). You’ve also got to be intimately familiar with all the different aspects of a custom visual project to be effective. Field well combinations, Formatting options, drill-through, and tooltips all have different areas of the custom visual project you need to know where they are, how to code, and how to tie it all together.</p>
<p>At DesignMind, we help clients break these Power BI custom visuals down so that we can get you a minimum viable product that you can take over and make subtle tweaks to. Here’s some pointers on how to get one of these projects underway.</p>
<h2>Power BI Custom Visuals Step by Step</h2>
<h3>1. Break down the Design elements</h3>
<p>As with any project, you need to break down the elements of what you want to build. What may seem simple at a moment’s glance can quickly turn complex when you factor in all the variables. Let’s look at an example.</p>
<p>Below is a circle card visual that Microsoft includes in their tutorial on how to build custom visuals. Let’s break it down to its visual elements:</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Circle-with-a-border.png"><img loading="lazy" class=" wp-image-8780 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Circle-with-a-border.png" alt="Circle with a border" width="303" height="248" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Circle-with-a-border.png 369w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Circle-with-a-border-300x245.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Circle-with-a-border-56x46.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Circle-with-a-border-150x122.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Circle-with-a-border-49x40.png 49w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Circle-with-a-border-102x83.png 102w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Circle-with-a-border-250x204.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Circle-with-a-border-86x70.png 86w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Circle-with-a-border-240x196.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Circle-with-a-border-260x212.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Circle-with-a-border-364x297.png 364w" sizes="(max-width: 303px) 100vw, 303px" /></a></p>
<ol>
<li>Circle with a border</li>
<li>White background color in the circle</li>
<li>Value text</li>
<li>Label text</li>
</ol>
<p>Okay, not too bad. So let’s say you install this and get everything working on your laptop. Once you start playing with the visual, you start to ask questions: How does resizing the visual work? Does it auto-scale? Should the data labels be fixed position or allow the user formatting options? How do change the background of the circle based on the data? How can I add more data to this visual? What about tooltips? Drill-though?</p>
<p>So after giving it some thought and talking with your team, now your breakdown starts to grow:</p>
<ol>
<li>Data wells
<ol>
<li>Value</li>
<li>Label</li>
<li>Color</li>
</ol>
</li>
<li>Formatting Options:
<ol>
<li>Border/No Border</li>
<li>Font</li>
<li>Font Size</li>
<li>Font Color</li>
<li>Value Positioning</li>
<li>Label Positioning</li>
</ol>
</li>
<li>Tooltips</li>
<li>Drill-through</li>
</ol>
<p>Now this is just the beginning. After you and your team have the night to sleep about it, you come back with all kinds of ideas: icons, arrows, sparklines, etc.</p>
<p>Like with all projects, narrowing down the scope to get a minimum viable product (MVP) is critical to getting acceptance, feedback, and championing.</p>
<h3>2. Get the Visual Studio Code editor</h3>
<p><strong>Visual Studio Code is probably the hottest code editor out there on the market today.</strong> (At least for Microsoft development). It’s fast to develop, fast to extend, and continually updated every month just like Power BI! If you don’t already have this tool in your development toolbelt, try it out. It’s great for text editing, but you will ultimately need to learn it if you plan to do anything with custom visuals.</p>
<h3>3. Check in your work</h3>
<p>If you don’t already have source control, get some. There are plenty of providers out there that you can use for free like GitHub, Bitbucket, or Azure DevOps. Probably the fastest if you don’t already have a source control provider (SCP) is GitHub. To integrate GitHub with Visual Studio Code, all you need is to download and install Git. Checking your code into GitHub is easy and there’s no excuse not to do it this way.</p>
<h3>4. Learn</h3>
<p><span style="font-size: 16px;">Probably the easiest way to learn how to build Power BI custom visuals is to start with a basic visualization package like D3. There are many examples out there on the web that look fantastic! Try them out and impress</span> your friends.</p>
<h3>5. Test live or test in Power BI Desktop</h3>
<p>If you go through the Microsoft tutorial online, they walk you through how to setup a development environment which is very helpful if you&#8217;re making small incremental changes to your code. In the end though, be sure you can package your custom visual with the pbiviz package command. That produces the magical pbiviz file that you can then import into Power BI Desktop, tie to your data, and publish to the Power BI Service and see your work in all its grandeur.</p>
<h3>We’d love to hear from you.</h3>
<p>If this task seems daunting, talk to us! We’d love to hear about what custom visual you have in mind and how we might be able to help. Our team at DesignMind has years of experience designing, developing, and architecting Power BI solutions for organizations, large and small. <a href="https://www.designmind.com/power-bi-consultant/"><strong>You can see more tips from our Power BI experts here.</strong></a></p>
<p><em>Gnanaprakash Rajamanickam is a BI Consultant at DesignMind. </em></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The post <a rel="nofollow" href="https://www.designmind.com/business-intelligence/power-bi-custom-visuals/">Creating Power BI Custom Visuals</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>My Power BI report is too slow. What tools and techniques should I use?</title>
		<link>https://www.designmind.com/business-intelligence/power-bi-report-is-too-slow/</link>
		
		<dc:creator><![CDATA[Tomas Santandreu Polanco]]></dc:creator>
		<pubDate>Tue, 03 Mar 2020 06:33:29 +0000</pubDate>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[DAX]]></category>
		<category><![CDATA[DAX query]]></category>
		<category><![CDATA[DAX Studio]]></category>
		<category><![CDATA[Performance Analyzer]]></category>
		<category><![CDATA[Power BI]]></category>
		<category><![CDATA[power bi performance]]></category>
		<category><![CDATA[Power BI Report]]></category>
		<category><![CDATA[Power Pivot]]></category>
		<category><![CDATA[sqlbi]]></category>
		<category><![CDATA[SQLBI tools]]></category>
		<category><![CDATA[The Definitive Guide to DAX]]></category>
		<category><![CDATA[vertipaq]]></category>
		<guid isPermaLink="false">https://www.designmind.com/?p=8687</guid>

					<description><![CDATA[<p>Is your Power BI report too slow? In my last post, I focused on Power BI Report performance problems caused by memory issues, and the tools available to diagnose those issues. In this post, I will show some of the ways you can determine why a Power BI Report is slow during navigation or selecting...</p>
<div class="read-more"><a class="more-link" href="https://www.designmind.com/business-intelligence/power-bi-report-is-too-slow/" rel="nofollow">Read more</a></div>
<p>The post <a rel="nofollow" href="https://www.designmind.com/business-intelligence/power-bi-report-is-too-slow/">My Power BI report is too slow. What tools and techniques should I use?</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Is your Power BI report too slow? In my last post, I focused on Power BI Report performance problems caused by memory issues, and the tools available to diagnose those issues. In this post, I will show some of the ways you can determine why a Power BI Report is slow during navigation or selecting from a slicer or visual.  Some of the tools I will discuss require high-level knowledge of Power BI model design and DAX formulas.</p>
<h2>When your Power Report is too slow</h2>
<p>Throughout my time working with various clients, developing and architecting Power BI reports, our clients continue to ask why some reports seem to render very slowly. Sometimes those Power BI Reports don’t exhibit performance issues until they are fully deployed to the Power BI Service. In this post, I will share the methodology I follow when optimizing Power BI report performance.</p>
<h2>Why should you care that your report is running so slowly?</h2>
<p>When a Power BI report runs slowly, valuable resources are being consumed, and are not available to other reports and users. There can be many causes of performance issues (eg. model design, calculated columns, calculated measures, visuals and/or the amount of data being displayed on the report). One side effect of a slow running Power BI report is the stress on memory consumption (See my earlier post covering Power BI Report Memory Issues). In addition, the more users consuming the reports, the more non-optimized performance will affect your users and your organization.</p>
<h2>How to discover and speed up report performance</h2>
<p>Prior to the introduction of the Power BI Performance Analyzer, the task to assessing performance issues were squarely in the hands of the Power BI developer.<br />
Here is the list of tools that are part of my arsenal when working on any Power BI performance assessment project, along with a few others I will write about in a future post.</p>
<p><strong>A. <a href="https://docs.microsoft.com/en-us/power-bi/desktop-performance-analyzer" target="_blank" rel="noopener noreferrer">Power BI Performance Analyzer</a></strong><br />
This tool allows the Power BI developer to review the performance of each report element, such as visuals and DAX formulas.<br />
<strong>B. <a href="https://www.sqlbi.com/tools/dax-studio/" target="_blank" rel="noopener noreferrer">DAX Studio</a></strong><br />
This is a third-party tool from SQLBI developed to write, execute, and analyze DAX queries against Power BI reports, Excel Power Pivot, and Analysis Service Tabular models.<br />
<strong>C. <a href="https://www.sqlbi.com/tools/vertipaq-analyzer/" target="_blank" rel="noopener noreferrer">VertiPaq Analyzer</a></strong><br />
This is another SQLBI tool that allows you to analyze VertiPaq storage structures for a data model in Analysis Services Tabular, and also for Power BI Documents<br />
<strong>D. Memory consumption Footprint</strong> learn more in <a href="https://www.designmind.com/business-intelligence/power-bi-performance-issues/" target="_blank" rel="noopener noreferrer"><strong>“Are Your Power BI Performance Issues due to High Memory Consumption?”</strong></a></p>
<h2><strong>Performance tuning cycle</strong></h2>
<p>Sometimes Power BI Report performance issues do not come to light during development; instead, it becomes a performance issue when users start consuming the Power BI report on the Power BI Service. The performance issue might come up in a conversation in which a user mentions a report has been running too slow or a visual is taking too long to render.<br />
During a performance tuning project, I like to break down the computing effort, as shown here.</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/VertiPaq-Model-Review.png"><img loading="lazy" class="wp-image-8698 size-full alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/VertiPaq-Model-Review.png" alt="VertiPaq model Review" width="581" height="122" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/VertiPaq-Model-Review.png 581w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/VertiPaq-Model-Review-300x63.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/VertiPaq-Model-Review-56x12.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/VertiPaq-Model-Review-150x31.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/VertiPaq-Model-Review-120x25.png 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/VertiPaq-Model-Review-125x26.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/VertiPaq-Model-Review-250x52.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/VertiPaq-Model-Review-220x46.png 220w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/VertiPaq-Model-Review-240x50.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/VertiPaq-Model-Review-260x55.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/VertiPaq-Model-Review-462x97.png 462w" sizes="(max-width: 581px) 100vw, 581px" /></a></p>
<p>The flow of the task is not always linear or left to right, since there might be times where we have to review the analytic model due to calculation or report requirements.</p>
<h2>Performance Scenario</h2>
<p>Our client has informed us that there is a Power BI Report that contains ten pages with a set of visuals per page and a compressed size of 300 MB. The report is suffering from performance issues.</p>
<h2>Let’s try to resolve this problem</h2>
<p>To work with slow performance, we need to download a copy of the report to our local computer and open it using Power BI Desktop. Next we need to get some insight into the report model without having to go through each table and inventory everything by hand. <a href="https://www.sqlbi.com/tools/vertipaq-analyzer/" target="_blank" rel="noopener noreferrer"><strong>VertiPaq Analyzer</strong> </a>provides a schema plus inventory of a Power BI or tabular model with other information such as cardinality information, compression, hierarchy, calculated columns, calculated measures and more in one Excel document.</p>
<p>Here are the steps needed to connect to the Vertipaq Analyzer document.</p>
<p><strong>A. Install DAX Studio</strong></p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Connect.png"><img loading="lazy" class="size-full wp-image-8699 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Connect.png" alt="Connect" width="473" height="257" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Connect.png 473w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Connect-300x163.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Connect-56x30.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Connect-150x82.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Connect-74x40.png 74w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Connect-125x68.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Connect-250x136.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Connect-129x70.png 129w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Connect-240x130.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Connect-260x141.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Connect-462x251.png 462w" sizes="(max-width: 473px) 100vw, 473px" /></a></p>
<p><strong>B. Download VertiPaq Analyzer</strong><br />
The ZIP file includes various version of the Vertipaq Analyzer excel document. Please review the readme file found on the zip file to determine which excel document. Once you determine which excel document to use, make sure that you enable Power Pivot for excel.</p>
<p><strong>C. Open the Power BI Report using Power BI Desktop</strong></p>
<p><strong>D. Open DAX Studio</strong></p>
<ul>
<li>Click on Connect, in order to connect to open Power BI Report from step C and press Connect button</li>
<li>You should be able to see the Power BI Data Model on your screen as shown below</li>
</ul>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query1.dax_.png"><img loading="lazy" class="size-full wp-image-8702 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query1.dax_.png" alt="Query1.dax" width="300" height="565" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query1.dax_.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query1.dax_-159x300.png 159w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query1.dax_-30x56.png 30w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query1.dax_-80x150.png 80w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query1.dax_-21x40.png 21w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query1.dax_-44x83.png 44w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query1.dax_-133x250.png 133w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query1.dax_-37x70.png 37w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query1.dax_-127x240.png 127w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query1.dax_-138x260.png 138w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query1.dax_-158x297.png 158w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<ul>
<li>In order to connect the Vertipaq Analyzer you will use the connection string to the Power BI Report</li>
<li>In DAX Studio, make a note of the localhost:port found on the botton far right, as shown in the figure below</li>
</ul>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/localhost.png"><img loading="lazy" class="size-full wp-image-8703 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/localhost.png" alt="" width="350" height="25" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/localhost.png 350w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/localhost-300x21.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/localhost-56x4.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/localhost-150x11.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/localhost-120x9.png 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/localhost-125x9.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/localhost-250x18.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/localhost-220x16.png 220w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/localhost-240x17.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/localhost-260x19.png 260w" sizes="(max-width: 350px) 100vw, 350px" /></a></p>
<ul>
<li>Open the Vertipaq Analyzer version according to the readme describe in step B</li>
<li>Once the excel document is open, click on Power Pivot and Select as shown below</li>
</ul>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-Pivot-Manage.png"><img loading="lazy" class="size-full wp-image-8705 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-Pivot-Manage.png" alt="Power Pivot Manage" width="988" height="156" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-Pivot-Manage.png 988w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-Pivot-Manage-300x47.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-Pivot-Manage-768x121.png 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-Pivot-Manage-56x9.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-Pivot-Manage-150x24.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-Pivot-Manage-120x19.png 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-Pivot-Manage-125x20.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-Pivot-Manage-250x39.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-Pivot-Manage-220x35.png 220w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-Pivot-Manage-240x38.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-Pivot-Manage-260x41.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-Pivot-Manage-462x73.png 462w" sizes="(max-width: 988px) 100vw, 988px" /></a></p>
<ul>
<li>This will open the Power BI Manage Screen, where you will click on the Existing Connections in order to change the current Vertipaq Engine connection to your current Power BI Report</li>
</ul>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-Report.png"><img loading="lazy" class="size-full wp-image-8706 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-Report.png" alt="Power BI Report" width="680" height="145" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-Report.png 680w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-Report-300x64.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-Report-56x12.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-Report-150x32.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-Report-120x26.png 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-Report-125x27.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-Report-250x53.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-Report-220x47.png 220w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-Report-240x51.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-Report-260x55.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-Report-462x99.png 462w" sizes="(max-width: 680px) 100vw, 680px" /></a></p>
<ul>
<li>When you click on Existing Connections, select SSAS and press the edit button to change the connection information</li>
</ul>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Existing-connections.png"><img loading="lazy" class="size-full wp-image-8708 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Existing-connections.png" alt="" width="522" height="213" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Existing-connections.png 522w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Existing-connections-300x122.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Existing-connections-56x23.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Existing-connections-150x61.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Existing-connections-98x40.png 98w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Existing-connections-125x51.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Existing-connections-250x102.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Existing-connections-172x70.png 172w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Existing-connections-240x98.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Existing-connections-260x106.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Existing-connections-462x189.png 462w" sizes="(max-width: 522px) 100vw, 522px" /></a></p>
<ul>
<li>In the connection screen you will select Build, which will open the Data Link Properties window</li>
</ul>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Link-Properties.png"><img loading="lazy" class="size-full wp-image-8709 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Link-Properties.png" alt="Data Link Properties" width="362" height="465" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Link-Properties.png 362w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Link-Properties-234x300.png 234w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Link-Properties-44x56.png 44w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Link-Properties-117x150.png 117w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Link-Properties-31x40.png 31w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Link-Properties-65x83.png 65w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Link-Properties-195x250.png 195w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Link-Properties-54x70.png 54w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Link-Properties-187x240.png 187w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Link-Properties-202x260.png 202w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Link-Properties-231x297.png 231w" sizes="(max-width: 362px) 100vw, 362px" /></a></p>
<ul>
<li>In the Data Link Properties window under the Data Source, enter the information you retrieve from the DAX Studio i.e Localhost:XXXXX</li>
<li>Once you enter the Data Source, click the dropdown for “Enter the initial Catalog to use” in order to select the actual Power BI Model database</li>
<li>Press the “Test Connection” to make sure you can connect to the Power BI Model</li>
<li>Press OK, then SAVE, and finally Close</li>
<li>If everything went well, click on the Save button and then on the Excel button to return to the Excel report</li>
</ul>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Excel-report.png"><img loading="lazy" class="size-full wp-image-8710 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Excel-report.png" alt="Excel report" width="516" height="57" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Excel-report.png 516w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Excel-report-300x33.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Excel-report-56x6.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Excel-report-150x17.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Excel-report-120x13.png 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Excel-report-125x14.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Excel-report-250x28.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Excel-report-220x24.png 220w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Excel-report-240x27.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Excel-report-260x29.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Excel-report-462x51.png 462w" sizes="(max-width: 516px) 100vw, 516px" /></a></p>
<ul>
<li>Once in the Excel report, Click under the Data Menu -&gt; Refresh All</li>
</ul>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Menu.png"><img loading="lazy" class="size-full wp-image-8711 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Menu.png" alt="Data Menu" width="576" height="128" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Menu.png 576w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Menu-300x67.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Menu-56x12.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Menu-150x33.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Menu-120x27.png 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Menu-125x28.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Menu-250x56.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Menu-220x49.png 220w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Menu-240x53.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Menu-260x58.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Data-Menu-462x103.png 462w" sizes="(max-width: 576px) 100vw, 576px" /></a></p>
<p>This shows a sanitized version of the report we are going to be working with:</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Report.png"><img loading="lazy" class="size-full wp-image-8713 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Report.png" alt="Report" width="1314" height="464" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Report.png 1314w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Report-300x106.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Report-1024x362.png 1024w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Report-768x271.png 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Report-56x20.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Report-150x53.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Report-113x40.png 113w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Report-125x44.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Report-250x88.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Report-198x70.png 198w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Report-240x85.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Report-260x92.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Report-462x163.png 462w" sizes="(max-width: 1314px) 100vw, 1314px" /></a></p>
<p>The image above shows one of the many information tabs that the Vertipaq Analyzer tool creates related to the number of tables, compression before, compression after, and other information.<br />
One of the key pieces of information from this tool is column cardinality, the count of unique values in a column. This information is important when looking at how well a column compresses. If it is an identity column with unique values for each row, the Vertipaq engine will not compress. When compression is not optimal, the memory usage can get very large.</p>
<h2>Data Ingestion</h2>
<p>I recommend that data ingestion be carefully reviewed with respect to how much memory is allocated during the data refresh. You may be depriving your Power BI environment of much-needed resources. Since this data ingestion performance is not the focus of this blog post, we will leave this topic for a future post.</p>
<h2>Model Design</h2>
<p>Although Power BI is a self-service model that allows the data to be modeled with few restrictions, careful design consideration should be implemented to optimize the Vertipaq engine. A model can consist of a single table, or multiple tables with relationships (Many to One, One to Many, Many to Many, etc.). In this blog, we will use the model shown here:</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Model.png"><img loading="lazy" class=" wp-image-8714 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Model-300x184.png" alt="Model" width="497" height="306" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Model-300x184.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Model-768x471.png 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Model-56x34.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Model-150x92.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Model-65x40.png 65w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Model-125x77.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Model-250x153.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Model-114x70.png 114w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Model-240x147.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Model-260x159.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Model-462x283.png 462w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Model.png 946w" sizes="(max-width: 497px) 100vw, 497px" /></a></p>
<p>The model above shows the usage of bi-directional relationships, support parameter tables, and hidden tables.</p>
<h2>DAX Measures</h2>
<p>As the client or consumer reported, the Power BI Report in question performs poorly. Using Power BI Performance Analyzer, we can get a first-hand look into each page(tab) performance.<br />
Steps to get baseline performance on each report tab:<br />
A. Open the report in question using Power BI Desktop<br />
B. Create a blank page for this report and save it.<br />
C. While on the blank page, close the report.<br />
Close the Power Bi Report while in the blank page. This will allow the report to open directly on the blank page and not run any other report page prior to running the Performance Analyzer.<br />
D. If possible, close any other open applications<br />
E. Open Power BI Desktop<br />
F. Open the Power BI Report in question, making sure that it opens on the blank page</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Blank-page.png"><img loading="lazy" class="size-medium wp-image-8717 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Blank-page-300x83.png" alt="blank page" width="300" height="83" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Blank-page-300x83.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Blank-page-1024x283.png 1024w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Blank-page-768x212.png 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Blank-page-1536x424.png 1536w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Blank-page-56x15.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Blank-page-150x41.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Blank-page-120x33.png 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Blank-page-125x34.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Blank-page-250x69.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Blank-page-220x61.png 220w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Blank-page-240x66.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Blank-page-260x72.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Blank-page-462x127.png 462w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Blank-page.png 1917w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>&nbsp;</p>
<p>G. While on the blank page, click on Menu-&gt;View-&gt;Performance Analyzer to enable performance capture</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer.png"><img loading="lazy" class="size-full wp-image-8718 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer.png" alt="performance analyzer" width="650" height="172" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer.png 650w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-300x79.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-56x15.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-150x40.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-120x32.png 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-125x33.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-250x66.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-220x58.png 220w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-240x64.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-260x69.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-462x122.png 462w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>H. With the Performance Analyzer enabled</p>
<p>Click on “Start Recording”<br />
Click on the desired report page to record the performance log</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-log.png"><img loading="lazy" class="size-full wp-image-8719 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-log.png" alt="Performance analyzer log" width="413" height="532" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-log.png 413w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-log-233x300.png 233w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-log-43x56.png 43w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-log-116x150.png 116w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-log-31x40.png 31w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-log-64x83.png 64w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-log-194x250.png 194w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-log-54x70.png 54w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-log-186x240.png 186w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-log-202x260.png 202w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-analyzer-log-231x297.png 231w" sizes="(max-width: 413px) 100vw, 413px" /></a></p>
<p>I. Since we are interested in the query time, click on the arrow pointing down and select Descending and Sort by DAX Query to display the worst performing queries, according to the business predefined time to render threshold (3-5 second max)</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query.png"><img loading="lazy" class="size-full wp-image-8721 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query.png" alt="DAX query" width="423" height="280" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query.png 423w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-300x199.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-56x37.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-150x99.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-60x40.png 60w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-125x83.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-250x165.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-106x70.png 106w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-240x159.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-260x172.png 260w" sizes="(max-width: 423px) 100vw, 423px" /></a></p>
<p>J. Here are some of the worst performing DAX queries, expressed in milliseconds</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/worst-performing-DAX-queries.png"><img loading="lazy" class="size-full wp-image-8722 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/worst-performing-DAX-queries.png" alt="worst performing DAX queries" width="408" height="552" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/worst-performing-DAX-queries.png 408w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/worst-performing-DAX-queries-222x300.png 222w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/worst-performing-DAX-queries-41x56.png 41w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/worst-performing-DAX-queries-111x150.png 111w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/worst-performing-DAX-queries-30x40.png 30w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/worst-performing-DAX-queries-61x83.png 61w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/worst-performing-DAX-queries-185x250.png 185w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/worst-performing-DAX-queries-52x70.png 52w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/worst-performing-DAX-queries-177x240.png 177w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/worst-performing-DAX-queries-192x260.png 192w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/worst-performing-DAX-queries-220x297.png 220w" sizes="(max-width: 408px) 100vw, 408px" /></a></p>
<p>K. Once the performance capture is completed, click on Stop and select Export to save the performance log file for later review as a JSON file</p>
<p>L. Once you have saved the performance file for the current page, click on Clear, then click on Start recording and move to the next page, and iterate from step H to K as needed</p>
<h2>Performance Analyzer log review</h2>
<p>Once the Performance Analyzer logs have been created, the process to review and fix poorly performing queries begins. In our case, we will take a single poor performance log and try to find a solution. The DAX Studio tool allows us to not only write a DAX formula, but also to check what is happening in the Formula Engine and Storage Engine.<br />
To investigate a Power BI report using DAX Studio, we will first need to open the Power BI Report using Power BI Desktop. Once the report has been opened in Power BI Desktop, we will start the DAX Studio tool and connect to the Power BI Report. Once connected, we will then click on “Load Perf Data” to load any of the captured Performance Analyzer log files, as shown in Fig 5.</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-Analyzer-log-files.png"><img loading="lazy" class="size-large wp-image-8726 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-Analyzer-log-files-1024x178.png" alt="Performance Analyzer log files" width="1024" height="178" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-Analyzer-log-files-1024x178.png 1024w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-Analyzer-log-files-300x52.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-Analyzer-log-files-768x134.png 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-Analyzer-log-files-56x10.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-Analyzer-log-files-150x26.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-Analyzer-log-files-120x21.png 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-Analyzer-log-files-125x22.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-Analyzer-log-files-250x44.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-Analyzer-log-files-220x38.png 220w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-Analyzer-log-files-240x42.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-Analyzer-log-files-260x45.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-Analyzer-log-files-462x81.png 462w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Performance-Analyzer-log-files.png 1297w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>
<p>Once the Performance Analyzer log has been open, we should be able to see all of the query’s issues against the model for the Power BI Report page in question, as shown in Fig 6. This figure shows a query that is taking 190,894 milliseconds(3.18 minutes) to complete (WOOO).</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-report-page.png"><img loading="lazy" class="size-large wp-image-8727 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-report-page-1024x334.png" alt="Power BI report page" width="1024" height="334" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-report-page-1024x334.png 1024w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-report-page-300x98.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-report-page-768x251.png 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-report-page-56x18.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-report-page-150x49.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-report-page-120x40.png 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-report-page-125x41.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-report-page-250x82.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-report-page-214x70.png 214w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-report-page-240x78.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-report-page-260x85.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-report-page-462x151.png 462w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-report-page.png 1347w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>
<p>While in DAX Studio, we will click on the query in question to display the code in the empty window, as shown in figure 7.</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-Studio.png"><img loading="lazy" class="size-large wp-image-8728 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-Studio-1024x390.png" alt="DAX studio" width="1024" height="390" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-Studio-1024x390.png 1024w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-Studio-300x114.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-Studio-768x292.png 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-Studio-56x21.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-Studio-150x57.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-Studio-105x40.png 105w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-Studio-125x48.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-Studio-250x95.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-Studio-184x70.png 184w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-Studio-240x91.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-Studio-260x99.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-Studio-462x176.png 462w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-Studio.png 1347w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>
<p>It’s great that we can see the performance issue, but how can we see what is happening behind the scenes? We want to see the actual performance and the break-down of the query execution. On this screen we will click on the “Query Plan” and “Server Timing” to provide the query time profile and query plan.</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query-Plan.png"><img loading="lazy" class="size-large wp-image-8729 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query-Plan-1024x103.png" alt="Query plan" width="1024" height="103" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query-Plan-1024x103.png 1024w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query-Plan-300x30.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query-Plan-768x77.png 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query-Plan-56x6.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query-Plan-150x15.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query-Plan-120x12.png 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query-Plan-125x13.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query-Plan-250x25.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query-Plan-220x22.png 220w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query-Plan-240x24.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query-Plan-260x26.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query-Plan-462x47.png 462w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Query-Plan.png 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>
<p>To get a baseline for the poor performance visual query, we will run this query as follows:<br />
A. Click on the clear cache<br />
B. Click on the Run<br />
C. Once the run has completed, make a note of the following items:<br />
a. Server Timing<br />
i. Formula Engine<br />
ii. Storage Engine<br />
iii. CPU</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/CPU.png"><img loading="lazy" class="size-full wp-image-8730 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/CPU.png" alt="CPU" width="707" height="221" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/CPU.png 707w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/CPU-300x94.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/CPU-56x18.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/CPU-150x47.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/CPU-120x38.png 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/CPU-125x39.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/CPU-250x78.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/CPU-220x70.png 220w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/CPU-240x75.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/CPU-260x81.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/CPU-462x144.png 462w" sizes="(max-width: 707px) 100vw, 707px" /></a></p>
<p>b. Review the Query Plan<br />
i. Number of records that it is iterating against<br />
ii. Number of lines</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Number-of-lines.png"><img loading="lazy" class="size-full wp-image-8731 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Number-of-lines.png" alt="number of lines" width="991" height="294" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Number-of-lines.png 991w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Number-of-lines-300x89.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Number-of-lines-768x228.png 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Number-of-lines-56x17.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Number-of-lines-150x45.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Number-of-lines-120x36.png 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Number-of-lines-125x37.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Number-of-lines-250x74.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Number-of-lines-220x65.png 220w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Number-of-lines-240x71.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Number-of-lines-260x77.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Number-of-lines-462x137.png 462w" sizes="(max-width: 991px) 100vw, 991px" /></a></p>
<p>Once we have completed our baseline, we need to review the actual DAX query to determine what is making our query perform so poorly. Below is a copy of the original poorly performing DAX Query:</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Poorly-performing-DAX-query.jpg"><img loading="lazy" class="alignnone wp-image-8732 size-full" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Poorly-performing-DAX-query.jpg" alt="Poorly performing DAX query when the Power BI report is too slow" width="643" height="798" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Poorly-performing-DAX-query.jpg 643w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Poorly-performing-DAX-query-242x300.jpg 242w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Poorly-performing-DAX-query-45x56.jpg 45w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Poorly-performing-DAX-query-121x150.jpg 121w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Poorly-performing-DAX-query-32x40.jpg 32w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Poorly-performing-DAX-query-67x83.jpg 67w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Poorly-performing-DAX-query-201x250.jpg 201w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Poorly-performing-DAX-query-56x70.jpg 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Poorly-performing-DAX-query-193x240.jpg 193w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Poorly-performing-DAX-query-209x260.jpg 209w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Poorly-performing-DAX-query-239x297.jpg 239w" sizes="(max-width: 643px) 100vw, 643px" /></a></p>
<p>The DAX query in question contains seven calculated measures, so we executed each measure individually by commenting the other six one by one to get their performance metrics. The table below shows each DAX measure time to complete performance and Server Timing metrics.</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Original-DAX-and-time-to-complete.jpg"><img loading="lazy" class="alignnone wp-image-8738 size-full" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Original-DAX-and-time-to-complete.jpg" alt="Original DAX and time to complete if your Power BI report is too slow" width="650" height="842" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Original-DAX-and-time-to-complete.jpg 650w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Original-DAX-and-time-to-complete-232x300.jpg 232w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Original-DAX-and-time-to-complete-43x56.jpg 43w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Original-DAX-and-time-to-complete-116x150.jpg 116w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Original-DAX-and-time-to-complete-31x40.jpg 31w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Original-DAX-and-time-to-complete-64x83.jpg 64w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Original-DAX-and-time-to-complete-193x250.jpg 193w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Original-DAX-and-time-to-complete-54x70.jpg 54w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Original-DAX-and-time-to-complete-185x240.jpg 185w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Original-DAX-and-time-to-complete-201x260.jpg 201w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Original-DAX-and-time-to-complete-229x297.jpg 229w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>As we can see from our performance inventory, query number 2 is the one that is taking the longest amount of time to complete, so we are going to review the actual DAX code and see how it can be improved.</p>
<p>While still in DAX Studio, we will use the search capability to look for the DAX measure plus its dependents, and see what is making this DAX formula run so slowly. When searching for the DAX measure in question, we want to select the ‘Define Dependent Measure” to retrieve all of the in-between DAX measures used by the final DAX measure shown below.</p>
<p>The table below shows the before DAX query and the modified version:</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-original-and-modified.jpg"><img loading="lazy" class="size-full wp-image-8734 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-original-and-modified.jpg" alt="DAX query original and modified" width="649" height="200" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-original-and-modified.jpg 649w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-original-and-modified-300x92.jpg 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-original-and-modified-56x17.jpg 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-original-and-modified-150x46.jpg 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-original-and-modified-120x37.jpg 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-original-and-modified-125x39.jpg 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-original-and-modified-250x77.jpg 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-original-and-modified-220x68.jpg 220w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-original-and-modified-240x74.jpg 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-original-and-modified-260x80.jpg 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-original-and-modified-462x142.jpg 462w" sizes="(max-width: 649px) 100vw, 649px" /></a></p>
<p>The query performance issues in our case were related to the usage of a Table Filter instead of a column filter. The original formula was iterating through the 4 million-plus records by using a Filter, which once replaced with a column filter, the actual size of the number of records we needed to iterate is reduced.</p>
<p>The table shows the performance profile before and after modifications:</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-profile.jpg"><img loading="lazy" class="alignnone wp-image-8735" style="margin-bottom: 0px;" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-profile.jpg" alt="DAX query profile" width="415" height="281" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-profile.jpg 338w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-profile-300x203.jpg 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-profile-56x38.jpg 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-profile-150x102.jpg 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-profile-59x40.jpg 59w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-profile-123x83.jpg 123w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-profile-250x169.jpg 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-profile-103x70.jpg 103w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-profile-240x163.jpg 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/DAX-query-profile-260x176.jpg 260w" sizes="(max-width: 415px) 100vw, 415px" /></a></p>
<h2>Resources when your Power BI Report is too slow</h2>
<p>By going through the performance review cycle of VertiPaq Model, Data Ingestion, Model Design, DAX, and the various tools, you should be able to understand and fix almost any Power BI Report performance issues. Our Power BI team at DesignMind can help you as you implement Power BI in your organization.</p>
<p>Here are resources that might be of help when development or troubleshooting Power BI reports.</p>
<ul>
<li><a href="https://www.sqlbi.com/tools/" target="_blank" rel="noopener noreferrer"><strong>SQLBI Tools</strong></a> such as “DAX Studio,” VertiPaq Analyzer,” “DAX Editor,”BISM Normalizer” and many more</li>
<li><a href="https://www.sqlbi.com/articles/the-importance-of-star-schemas-in-power-bi/" target="_blank" rel="noopener noreferrer"><strong>The Importance of Star Schemas in Power BI</strong></a></li>
<li><a href="https://www.sqlbi.com/articles/comparing-dax-calculated-columns-with-power-query-computed-columns/" target="_blank" rel="noopener noreferrer"><strong>Comparing DAX calculated columns with Power Query computed columns</strong></a></li>
<li><a href="https://www.sqlbi.com/blog/marco/2019/08/15/the-definitive-guide-to-dax-second-edition-now-available-worldwide/" target="_blank" rel="noopener noreferrer"><strong>The Definitive Guide to DAX</strong></a> book Second Edition</li>
</ul>
<p><em>Tomas</em> <em>Santandreu Polanco is a Senior BI Consultant at DesignMind.</em></p>
<p>The post <a rel="nofollow" href="https://www.designmind.com/business-intelligence/power-bi-report-is-too-slow/">My Power BI report is too slow. What tools and techniques should I use?</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Are Your Power BI Performance Issues Due To High Memory Consumption?</title>
		<link>https://www.designmind.com/business-intelligence/power-bi-performance-issues/</link>
		
		<dc:creator><![CDATA[Tomas Santandreu Polanco]]></dc:creator>
		<pubDate>Fri, 17 Jan 2020 09:37:08 +0000</pubDate>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[DAX]]></category>
		<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Power BI Desktop]]></category>
		<category><![CDATA[Power BI Service]]></category>
		<category><![CDATA[Power Platform]]></category>
		<category><![CDATA[Power Query]]></category>
		<category><![CDATA[SQL Server Analysis Services]]></category>
		<guid isPermaLink="false">https://www.designmind.com/?p=8646</guid>

					<description><![CDATA[<p>Could your Power BI Document be consuming too much Memory? Power BI performance is one of the key factors affecting satisfaction by business users.  We&#8217;ll examine memory consumption by Power BI Reports, how it can be measured, and how you can use this information to improve report performance. We’ll look at a report memory footprint,...</p>
<div class="read-more"><a class="more-link" href="https://www.designmind.com/business-intelligence/power-bi-performance-issues/" rel="nofollow">Read more</a></div>
<p>The post <a rel="nofollow" href="https://www.designmind.com/business-intelligence/power-bi-performance-issues/">Are Your Power BI Performance Issues Due To High Memory Consumption?</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Could your Power BI Document be consuming too much Memory?</h2>
<p>Power BI performance is one of the key factors affecting satisfaction by business users.  We&#8217;ll examine memory consumption by Power BI Reports, how it can be measured, and how you can use this information to improve report performance. We’ll look at a report memory footprint, and how that affects report performance. We&#8217;ll also look at which Power BI-related Windows processes are running on your machine, and how measuring memory consumption can provide a path to fixing poorly performing reports.</p>
<p>In my time working on Power BI projects for our largest clients, I&#8217;ve often been asked why a Power BI report is consuming so much memory as our users navigate through their reports. I also get asked about the need to move to a more expensive tier when using Premium Capacity, even when there are just a few reports.</p>
<h2>Why should you care about your Power BI report memory footprint?</h2>
<p>For Power BI Premium capacity, each tier has predefined computing resources assigned to it. These resources relate to how much memory and CPU are available on that Premium node. Having the ability to assess a Power BI report’s memory requirements allows you to ensure good performance for all reports, and adequate memory capacity is available when you need it. This allows you to be at the lowest cost Premium Capacity tier and still maintain healthy Power BI performance.</p>
<h2>Measuring Power BI document memory consumption</h2>
<p>While using Power BI desktop to create a Power BI report, you can use the Windows Task Manager to review the current memory footprint of the report. To do this:</p>
<p>A. Open the report in Power BI Desktop</p>
<p>B. Insert a blank page</p>
<p>C. While in the blank page, save and close the report</p>
<p>D. If possible, close all open applications</p>
<p>E. Launch Power BI Desktop again, and open the previously saved report</p>
<p>F. Once the report is open, you should be in the blank page that you had added (the report should open to the blank page added in Step B, above)</p>
<p>G. Open Windows Task Manager by pressing Ctrl-Alt-Del, and selecting Task Manager from the list provided. Expand the Power BI Desktop Group under the process tab<br />
(Detailed information about these processes can be found at the end of this post.)</p>
<p>H. Wait for the report CPU % to approach zero, which means that it has completed loading it into memory. See this sample report on the blank page.</p>
<p><img loading="lazy" class="size-full wp-image-8653 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX.png" alt="" width="493" height="437" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX.png 493w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-300x266.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-56x50.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-150x133.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-45x40.png 45w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-94x83.png 94w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-250x222.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-79x70.png 79w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-240x213.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-260x230.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-335x297.png 335w" sizes="(max-width: 493px) 100vw, 493px" /></p>
<p>I. Next, navigate to one of the pages where memory consumption is very high due to an underperforming DAX formula.</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX.png"><img loading="lazy" class="wp-image-8653 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX.png" alt="Power BI performance DAX" width="480" height="426" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX.png 493w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-300x266.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-56x50.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-150x133.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-45x40.png 45w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-94x83.png 94w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-250x222.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-79x70.png 79w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-240x213.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-260x230.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-performance-DAX-335x297.png 335w" sizes="(max-width: 480px) 100vw, 480px" /></a></p>
<p>J. Once you&#8217;ve optimized DAX formulas that were causing the memory spike, you can do a side by side memory comparison between the initial version and the optimized version.</p>
<p><a href="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-reports.jpg"><img loading="lazy" class="wp-image-8652 alignnone" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-reports.jpg" alt="power bi reports" width="655" height="389" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-reports.jpg 594w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-reports-300x178.jpg 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-reports-56x33.jpg 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-reports-150x89.jpg 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-reports-67x40.jpg 67w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-reports-125x74.jpg 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-reports-250x149.jpg 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-reports-118x70.jpg 118w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-reports-240x143.jpg 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-reports-260x155.jpg 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-reports-462x275.jpg 462w" sizes="(max-width: 655px) 100vw, 655px" /></a></p>
<p>Repeating the process as you build new reports or rework slow reports will allow you to minimize memory usage and get the most out of your premium capacity.</p>
<p>The associated processes are defined below:</p>
<h3>CefSharp.BrowserSubprocess</h3>
<ul>
<li>This process allows Power BI Desktop to simulate the Power BI Service</li>
</ul>
<h3>Console Windows Host</h3>
<ul>
<li>Microsoft internal process</li>
</ul>
<h3>Microsoft Mashup Evaluation Container</h3>
<ul>
<li>The Power Query Engine</li>
<li>It is responsible for processing all the steps in the Power Query Editor, which gets data from my sources, transforms it and then loads it into my data model</li>
</ul>
<h3>Microsoft Power BI Desktop</h3>
<ul>
<li>This is the starting point executable and container for all the processes run within Power BI Desktop</li>
</ul>
<h3>Microsoft SQL Server Analysis Services</h3>
<ul>
<li>The analytical data engine</li>
<li>This is where all the data gets loaded from Power Query into the data model.</li>
<li>This process can have the highest memory usage</li>
<li>An expensive DAX measure that must get most of its data from the storage engine will see an increase in memory utilization and CPU during the evaluation and running of the DAX measure</li>
</ul>
<h2>Power BI performance improvements are attainable</h2>
<p>Now you know how to gain insight into Power BI Report memory consumption to avoid problems once the reports are run within the Power BI Service. Our team at DesignMind has years of experience designing, developing, and architecting Power BI solutions for organizations, both large and small. <a href="https://www.designmind.com/power-bi-consultant/" target="_blank" rel="noopener noreferrer">You can see more tips from our Power BI experts here</a>.</p>
<p><em>Tomas Santandreu Polanco is a Senior BI Consultant at DesignMind.</em></p>
<p>The post <a rel="nofollow" href="https://www.designmind.com/business-intelligence/power-bi-performance-issues/">Are Your Power BI Performance Issues Due To High Memory Consumption?</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Power BI Parameters – How to Use &#038; Update Parameters in the Power BI Service</title>
		<link>https://www.designmind.com/business-intelligence/power-bi-parameters-how-to-use-parameters/</link>
		
		<dc:creator><![CDATA[Sarada Karlaputi]]></dc:creator>
		<pubDate>Mon, 09 Dec 2019 18:15:51 +0000</pubDate>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[BI consultant]]></category>
		<category><![CDATA[DesignMind]]></category>
		<category><![CDATA[Microsoft Power BI]]></category>
		<category><![CDATA[PBI]]></category>
		<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Power BI Desktop]]></category>
		<category><![CDATA[Power BI parameters]]></category>
		<category><![CDATA[Power BI Service]]></category>
		<category><![CDATA[RestAPI]]></category>
		<category><![CDATA[San Francisco]]></category>
		<guid isPermaLink="false">https://www.designmind.com/?p=8586</guid>

					<description><![CDATA[<p>Power BI parameters are one of the most requested features in Power BI. Parameters are generally used in reports and dashboards to make them more dynamic. Creative report developers can use parameters for any purposes, allowing the same to fulfill many purposes. This saves development and maintenance efforts, and allows users consuming the reports the...</p>
<div class="read-more"><a class="more-link" href="https://www.designmind.com/business-intelligence/power-bi-parameters-how-to-use-parameters/" rel="nofollow">Read more</a></div>
<p>The post <a rel="nofollow" href="https://www.designmind.com/business-intelligence/power-bi-parameters-how-to-use-parameters/">Power BI Parameters – How to Use &#038; Update Parameters in the Power BI Service</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Power BI parameters are one of the most requested features in Power BI. Parameters are generally used in reports and dashboards to make them more dynamic. Creative report developers can use parameters for any purposes, allowing the same to fulfill many purposes. This saves development and maintenance efforts, and allows users consuming the reports the ability to view data in many different ways, from a single powerful, dynamic report!</p>
<p><img loading="lazy" class="alignright wp-image-8592" style="border: 4px solid #000000; margin-top: 12px;" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-connect-to-a-data-source.png" alt="Power BI parameters connect to a data source" width="441" height="471" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-connect-to-a-data-source.png 892w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-connect-to-a-data-source-281x300.png 281w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-connect-to-a-data-source-768x821.png 768w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-connect-to-a-data-source-52x56.png 52w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-connect-to-a-data-source-140x150.png 140w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-connect-to-a-data-source-37x40.png 37w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-connect-to-a-data-source-78x83.png 78w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-connect-to-a-data-source-234x250.png 234w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-connect-to-a-data-source-65x70.png 65w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-connect-to-a-data-source-224x240.png 224w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-connect-to-a-data-source-243x260.png 243w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-connect-to-a-data-source-278x297.png 278w" sizes="(max-width: 441px) 100vw, 441px" /></p>
<p>Dynamic reports are important to both report developers and users, as we can greatly reduce the number of reports required. By using Power BI parameters, a single report can be used for multiple purposes. For instance, Power BI provides the following capabilities in the backend data modelling through the use of parameters.</p>
<p>• Changing the data source<span style="color: #0000ee;"><br /></span>• Modifying query filters/values</p>
<p><strong>Changing the data source:</strong></p>
<p style="text-align: left;">You can create a multivalued parameter per source system, so the same report can be used with Dev/QA/Prod server names or SharePoint locations. All the M queries can then be modified by pointing the “Source” property to respective server parameter.</p>
<p style="text-align: left;">The developer develops the reports on the Dev server. After publishing the reports to workspace in the Power BI service the reports can be pointed to QA or Production via the parameter. This way developers do not need to access production data during reports development and thus reduce the workload on production servers.</p>
<p style="text-align: left;"><strong>Modifying query filters/values:</strong></p>
<p style="text-align: left;">This can be implemented when there is a use case of limiting the data set to certain date or value. Start and end date parameters can be created in the model. A custom filter can then be created in the table for the field for which the dates need to be filtered.</p>
<p style="text-align: left;">Example: Connection string parameters can be created and modified in Power BI as follows:<br />1. Connect to a data source and import the required table from the source system.<br />2. Create a parameter, name it “ConnectStr”, and provide multiple server names as per your environment.<br />3. Modify the M query of the table to point the source name to the parameter created.<img loading="lazy" class="alignright wp-image-8608" style="border: 4px solid #000000; margin-top: 12px;" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-modify-query.png" alt="Power BI parameters modify M query" width="490" height="95" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-modify-query.png 500w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-modify-query-300x58.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-modify-query-56x11.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-modify-query-150x29.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-modify-query-120x23.png 120w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-modify-query-125x24.png 125w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-modify-query-250x49.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-modify-query-220x43.png 220w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-modify-query-240x47.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-modify-query-260x50.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-modify-query-462x90.png 462w" sizes="(max-width: 490px) 100vw, 490px" /></p>
<p style="text-align: left;">4. Publish the report to the Power BI service from the Power BI desktop.<br />5. Once you publish the report to the service, go to dataset and click on the ellipsis to see the properties of the dataset.</p>
<p style="text-align: left;">6. In the dataset properties, click on parameters and type in the source server that the report should point to and hit apply. </p>
<p><img loading="lazy" class="wp-image-8605 alignright" style="border: 4px solid #000000;" src="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-datasets.png" alt="Power BI parameters datasets" width="491" height="414" srcset="https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-datasets.png 747w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-datasets-300x253.png 300w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-datasets-56x47.png 56w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-datasets-150x127.png 150w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-datasets-47x40.png 47w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-datasets-98x83.png 98w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-datasets-250x211.png 250w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-datasets-83x70.png 83w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-datasets-240x203.png 240w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-datasets-260x220.png 260w, https://c8zyre51kh-flywheel.netdna-ssl.com/wp-content/uploads/Power-BI-parameters-datasets-352x297.png 352w" sizes="(max-width: 491px) 100vw, 491px" /></p>
<p style="text-align: left;">a. Please note that the list of values defined in Power BI Desktop will not be listed here. The person publishing the report needs to enter the connection string manually.<br />b. This is a Power BI Service limitation.</p>
<p>Conclusion: the report can be pointed to the appropriate source system without the need to re-publish for each environment!</p>
<p><strong>Limitation of parameters in PBI:</strong><br />• Reports can only be published from Power BI desktop, other publishing processes, such as SharePoint/One Drive will not work.<br />• If you are using the RestAPI to publish your reports, you can manage parameters in the Power BI Service.<br />• Even though the parameters are multivalued in Power BI desktop, once you publish to the Power BI service, the value of the parameter needs to be typed in by the developer.<br />• Power BI Parameters will only work in import mode, irrespective of data source type.<br />• To modify the parameters in the service, the developer will need admin rights to the gateway on which the source system resides.</p>
<p>Power BI Parameters save time for report developers and users. And the above example shows how easy it can be to develop the dynamic reports that will get your users excited about their improved ability to understand their data.</p>
<p><em>Sarada Karlaputi is a Senior BI Consultant at DesignMind in San Francisco.</em> She has been delivering powerful, complex Power BI, Analysis Services, and other database solutions to many of DesignMind’s key clients. You can learn more about editing parameter settings in the Power BI service <a href="https://docs.microsoft.com/en-us/power-bi/service-parameters" target="_blank" rel="noopener noreferrer"><strong>here</strong></a>.  And you can <strong><a href="https://www.designmind.com/power-bi-consultant/">read more articles by the DesignMind Power BI team here</a></strong>.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p></p><p>The post <a rel="nofollow" href="https://www.designmind.com/business-intelligence/power-bi-parameters-how-to-use-parameters/">Power BI Parameters – How to Use &#038; Update Parameters in the Power BI Service</a> appeared first on <a rel="nofollow" href="https://www.designmind.com">DesignMind</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
