<?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>Power BI Embedded &#8211; Prologika</title>
	<atom:link href="https://prologika.com/tag/power-bi-embedded/feed/" rel="self" type="application/rss+xml" />
	<link>https://prologika.com</link>
	<description>Business Intelligence Consulting and Training in Atlanta</description>
	<lastBuildDate>Tue, 24 Jan 2023 16:42:46 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Solving iPad Issues with Power BI Secure Embed</title>
		<link>https://prologika.com/solving-ipad-issues-with-power-bi-secure-embed/</link>
					<comments>https://prologika.com/solving-ipad-issues-with-power-bi-secure-embed/#respond</comments>
		
		<dc:creator><![CDATA[Prologika - Teo Lachev]]></dc:creator>
		<pubDate>Tue, 24 Jan 2023 16:41:36 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Power BI Embedded]]></category>
		<guid isPermaLink="false">https://prologika.com/?p=8743</guid>

					<description><![CDATA[Scenario: You have an intranet web portal and use the Power BI secure embed feature (from the report menu, File-&#62;Embed report-&#62;Website or portal) to embed a report. However, the report [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>Scenario</strong>: You have an intranet web portal and use the Power BI <a href="https://learn.microsoft.com/en-us/power-bi/collaborate-share/service-embed-secure">secure embed feature</a> (from the report menu, File-&gt;Embed report-&gt;Website or portal) to embed a report. However, the report doesn&#8217;t render on iPad and iPhone devices. Instead, the user is perpetually asked to authenticate  with Power BI.</p>
<p><strong>Solution</strong>: Apple has started preventing cross-site cookies to tighten up security. To resolve this horrible issue, each user must turn off this feature. On their iPad or iPhone device, go to Settings &gt; your browser app, such as Safari or Chrome, and set Present Cross-Site Tracking to Off (assuming you are using Safari to render the web page).</p>
<p><img decoding="async" src="https://prologika.com/wp-content/uploads/2023/01/012423_1639_SolvingiPad1.jpg" alt="" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://prologika.com/solving-ipad-issues-with-power-bi-secure-embed/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Report-enable Internal Portals with Power BI Reports</title>
		<link>https://prologika.com/report-enable-internal-portals-with-power-bi-reports/</link>
					<comments>https://prologika.com/report-enable-internal-portals-with-power-bi-reports/#respond</comments>
		
		<dc:creator><![CDATA[Prologika - Teo Lachev]]></dc:creator>
		<pubDate>Thu, 15 Dec 2022 23:09:33 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Power BI Embedded]]></category>
		<guid isPermaLink="false">https://prologika.com/?p=8733</guid>

					<description><![CDATA[Expanding on my previous blog on this subject, there are three options to report-enable your Intranet portals with Power BI reports: Report link – This is the link to the [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Expanding on my <a href="https://prologika.com/embedding-power-bi-reports-in-internal-portals/">previous blog</a> on this subject, there are three options to report-enable your Intranet portals with Power BI reports:</p>
<ul>
<li>Report link – This is the link to the report that you obtain from the browser address bar. If you want to report in full screen viewing mode (hiding the Power BI chrome), you can append the chromeless=1 query parameter to the URL, such as <a href="https://app.powerbi.com/groups/689c8ae3-0e22-44d1-9803-b6afdba4e583/reports/b60eaab4-9a85-47c3-8cde-e3a17e8f3dae/ReportSection?chromeless=1">https://app.powerbi.com/groups/689c8ae3-0e22-44d1-9803-b6afdba4e583/reports/b60eaab4-9a85-47c3-8cde-e3a17e8f3dae/ReportSection<strong>?chromeless=1</strong></a><strong>. </strong>If the &#8220;Display report pages as tabs along the bottom of the report&#8221; report setting is <strong>disabled</strong>, the report will be rendered with a few buttons at the bottom. Clicking &#8220;Go back&#8221; or exiting the full-screen view, will &#8220;restore&#8221; the Power BI portal chrome, allowing the user to gain access to the report action bar, such as to get report insights. This is the only option to have access to all commands in the report action bar. In addition, the users can store the link in the browser favorites and potentially customize it. However, a report link doesn&#8217;t allow the report to be &#8220;embedded&#8221; in a page. Attempting to put the link on an iframe won&#8217;t work because of content security policy (specifically Microsoft sets the Content-Security-Policy tag to frame-ancestors &#8216;self&#8217; in the response payload, I guess to prevent organizations from circumventing the Power BI portal).<br />
<img decoding="async" src="https://prologika.com/wp-content/uploads/2022/12/121522_2304_Reportenabl1.png" alt="" /></li>
<li>Embed for Website or Portal – This is the iframe code you get from the report&#8217;s File -&gt; Embed for Website or Portal. This is your easiest option to provide an embedded experience for your coworkers, but it doesn&#8217;t currently support the report action bar. There isn&#8217;t a way to customize the report link.</li>
<li>Power BI Embedded REST API – This option includes server-side and client-side APIs to let you customize the embedding experience, such as to replace the default Filter pane with your own implementation. This is the option most organizations take to provide embedded experience for external customers, but it could be used if you want full control over embedding reports internally. Microsoft added recently an <a href="https://learn.microsoft.com/en-us/javascript/api/overview/powerbi/embed-for-organization">option</a> to show the action bar, however, only a subset of commands are available. This is the only option for single sign-on (SSO) experience, but it&#8217;s the most difficult to implement, as it requires extending your app with custom code.</li>
</ul>
<p>This table summarizes the three options discussed in this blog.</p>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 240px;" />
<col style="width: 226px;" />
<col style="width: 231px;" />
<col style="width: 239px;" /></colgroup>
<tbody valign="top">
<tr>
<td style="padding-left: 11px; padding-right: 11px; border: solid #bfbfbf 0.5pt;"><strong>Feature</strong></td>
<td style="padding-left: 11px; padding-right: 11px; border-top: solid #bfbfbf 0.5pt; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;"><strong>Report link</strong></td>
<td style="padding-left: 11px; padding-right: 11px; border-top: solid #bfbfbf 0.5pt; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;"><strong>Embed for Website or Portal</strong></td>
<td style="padding-left: 11px; padding-right: 11px; border-top: solid #bfbfbf 0.5pt; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;"><strong>Power BI Embedded REST API</strong></td>
</tr>
<tr style="background: #f2f2f2;">
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: solid #bfbfbf 0.5pt; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">Embedded content experience</td>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">No</td>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">Yes</td>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">Yes</td>
</tr>
<tr>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: solid #bfbfbf 0.5pt; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">Single sign-on</td>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">No</td>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">No</td>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">Yes</td>
</tr>
<tr style="background: #f2f2f2;">
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: solid #bfbfbf 0.5pt; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">Action bar</td>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">No</td>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">No</td>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">Partially</td>
</tr>
<tr>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: solid #bfbfbf 0.5pt; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">Shortcut</td>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">Yes</td>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">No</td>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">No</td>
</tr>
<tr style="background: #f2f2f2;">
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: solid #bfbfbf 0.5pt; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">Developer API</td>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">No</td>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">No</td>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">Yes</td>
</tr>
<tr>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: solid #bfbfbf 0.5pt; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">Integration effort</td>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">Low</td>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">Low</td>
<td style="padding-left: 11px; padding-right: 11px; border-top: none; border-left: none; border-bottom: solid #bfbfbf 0.5pt; border-right: solid #bfbfbf 0.5pt;">Medium to High</td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://prologika.com/report-enable-internal-portals-with-power-bi-reports/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Embedding Power BI Reports in Internal Portals</title>
		<link>https://prologika.com/embedding-power-bi-reports-in-internal-portals/</link>
					<comments>https://prologika.com/embedding-power-bi-reports-in-internal-portals/#respond</comments>
		
		<dc:creator><![CDATA[Prologika - Teo Lachev]]></dc:creator>
		<pubDate>Wed, 12 Oct 2022 16:18:31 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Power BI Embedded]]></category>
		<guid isPermaLink="false">https://prologika.com/?p=8626</guid>

					<description><![CDATA[This question pops up over and over. What&#8217;s the easiest way to embed a Power BI or paginated report hosted in Power BI Service in an internal portal, such as [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>This question pops up over and over. What&#8217;s the easiest way to embed a Power BI or paginated report hosted in Power BI Service in an <strong>internal</strong> portal, such as a custom site developed by your team or on-prem SharePoint Server, so internal users can see all reports in one place? Use the &#8220;Embed report&#8221; feature that will give you a link or iframe code that you can readily add to the portal without any coding (notice that there is a SharePoint Online option because SharePoint Online has a special webpart for this purpose).</p>
<p><img decoding="async" src="https://prologika.com/wp-content/uploads/2022/10/101222_1612_EmbeddingPo1.png" alt="" /></p>
<p>Will you get a single sign-on (SSO) so that the interactive user credentials automatically flow to Power BI? Nope. To the best of my knowledge, Power BI doesn&#8217;t support single sign-on even if your organization has extended its active directory to Azure, but let me know if you have found a workaround. The first time the user opens a Power BI report in the browser session, the user will get prompted to enter credentials. Then the user won&#8217;t be asked to authenticate when viewing subsequent reports in the browser session because the authentication token will be cashed in the browser session. The browser can also mitigate the issue by saving the user credentials until the password changes.</p>
<blockquote><p>What if you want to avoid the prompt under any circumstance? Write code and use Power BI Embedded. Down the custom code rabbit hole we go… The upside is that you&#8217;ll get more control over the embedded reports thanks to the Power BI JavaScript library, such as if you want to replace the Filter Pane with your filtering mechanism.</p></blockquote>
]]></content:encoded>
					
					<wfw:commentRss>https://prologika.com/embedding-power-bi-reports-in-internal-portals/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Atlanta MS BI and Power BI Group Meeting on October 3rd (Auto-provision embedded report delivery for your customers)</title>
		<link>https://prologika.com/atlanta-ms-bi-and-power-bi-group-meeting-202210/</link>
					<comments>https://prologika.com/atlanta-ms-bi-and-power-bi-group-meeting-202210/#respond</comments>
		
		<dc:creator><![CDATA[Prologika - Teo Lachev]]></dc:creator>
		<pubDate>Thu, 29 Sep 2022 15:59:15 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Atlanta.MBI]]></category>
		<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Power BI Embedded]]></category>
		<guid isPermaLink="false">https://prologika.com/?p=8619</guid>

					<description><![CDATA[Please join us online for the next Atlanta MS BI and Power BI Group meeting on Monday, October 3rd, at 6:30 PM ET.  Tom Huguelet (Lucient) will present a real-world [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Please join us online for the next Atlanta MS BI and Power BI Group meeting on Monday, October 3rd, at 6:30 PM ET.  Tom Huguelet (Lucient) will present a real-world case study and the challenges involved in bringing a Power BI application from initial Excel-based POC to an ISV platform that auto-provisions for new clients, using Power BI Embedded Azure Premium Capacity.  For more details and sign up, visit our <a href="https://www.meetup.com/Atlanta-Microsoft-Business-Intelligence-Users/">group page</a>.</p>
<table width="100%">
<tbody>
<tr>
<td width="132"><strong>Presentation:</strong></td>
<td width="491">Auto-provision embedded report delivery for your customers</td>
</tr>
<tr>
<td width="132"><strong>Date:</strong></td>
<td width="491">October 3rd</td>
</tr>
<tr>
<td width="132"><strong>Time:</strong></td>
<td width="491">6:30 – 8:30 PM ET</td>
</tr>
<tr>
<td width="132"><strong>Place:</strong></td>
<td width="491"><a href="https://teams.microsoft.com/l/meetup-join/19%3ameeting_ZThmMGFlMjctOGI5ZS00MWI0LWExNTItYmM5MWFmOGY0ZTY4%40thread.v2/0?context=%7b%22Tid%22%3a%22e7b81d0a-a949-4103-83dc-feff6277c109%22%2c%22Oid%22%3a%228b6a39f9-03a0-4118-b057-cfd26416a35c%22%7d">Click here to join the meeting</a></td>
</tr>
<tr>
<td width="132"><strong>Overview:</strong></td>
<td width="491">In this session we’ll look at a real-world case study and the challenges involved in bringing a Power BI application from initial Excel-based POC to an ISV platform that auto-provisions for new clients, using Power BI Embedded Azure Premium Capacity.</p>
<p>We will cover:</p>
<p>•            Initial Business Case and Project Team</p>
<p>•            Testing Embedded in a Sandbox Environment (Authentication)</p>
<p>•            Enabling User-Customized Experiences in Embedded</p>
<p>•            Using REST APIs for automatic Provisioning</p>
<p>•            Lessons learned and challenges encountered</td>
</tr>
<tr>
<td width="132"><strong>Speaker:</strong></td>
<td width="491">Tom Huguelet has been engaged in using Business Intelligence, and Dashboards &amp; Analytics to enable Corporate Performance Management since 1999. While coming from a technological background, Tom has always focused on the people and process aspects of how Business Intelligence can create positive changes within an organization. In his role as a Practice Director, he leads and mentors technical teams as well as advises business stakeholders on how to build the cross-disciplinary teams necessary to be successful with Business Intelligence. Tom holds several Microsoft certifications including Microsoft Certified Trainer, is a frequent speaker at industry events, has co-authored 3 books on SQL Server and Data Warehousing, and helped start a BI Roundtable group in Chicago.</td>
</tr>
<tr>
<td width="132"><strong>Prototypes without Pizza</strong></td>
<td width="491">Power BI Latest</td>
</tr>
</tbody>
</table>
<p><a href="https://prologika.com/wp-content/uploads/2019/10/PowerBILogo.png" rel="attachment wp-att-6368"><img decoding="async" class="alignnone size-full wp-image-6368" src="https://prologika.com/wp-content/uploads/2019/10/PowerBILogo.png" alt="PowerBILogo" width="410" height="109" srcset="https://prologika.com/wp-content/uploads/2019/10/PowerBILogo.png 410w, https://prologika.com/wp-content/uploads/2019/10/PowerBILogo-300x80.png 300w" sizes="(max-width: 410px) 100vw, 410px" /></a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://prologika.com/atlanta-ms-bi-and-power-bi-group-meeting-202210/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Power BI Embedded, Service Principals, and AAS</title>
		<link>https://prologika.com/power-bi-embedded-service-principals-and-aas/</link>
					<comments>https://prologika.com/power-bi-embedded-service-principals-and-aas/#respond</comments>
		
		<dc:creator><![CDATA[Prologika - Teo Lachev]]></dc:creator>
		<pubDate>Sun, 15 Mar 2020 00:04:54 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Analysis Services]]></category>
		<category><![CDATA[Power BI Embedded]]></category>
		<guid isPermaLink="false">https://prologika.com/?p=6720</guid>

					<description><![CDATA[In my previous post &#8220;Power BI Embedded, Service Principals, and SSAS&#8220;, I discussed how you can integrate Power BI Embedded (App Owns Data) configured for service principal authentication with SSAS [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>In my previous post &#8220;<a href="https://prologika.com/power-bi-embedded-service-principals-and-ssas/">Power BI Embedded, Service Principals, and SSAS</a>&#8220;, I discussed how you can integrate Power BI Embedded (App Owns Data) configured for service principal authentication with SSAS to pass the effective user identity. One important observation is that you can use this approach with both internal and external users. For internal users, the Power BI gateway (running under an account that has admin rights to the SSAS instance) passes the effective user identity under the EffectiveUserName connection string setting. For internal users, the effective user identity maps to the user UPN, such as john.doe@prologika.com, so that AAS can map it to the corresponding AAS account. For external users, you can configure the gateway for CustomData, and pass whatever you want as an effective user identity.</p>
<p>Suppose that one day you migrate your code to Azure Analysis Services (AAS)? AAS. Will it work? Unfortunately, not. Since there is no gateway between Power BI and AAS, there isn&#8217;t a layer to authenticate using a trusted account. So, the Power BI team has decided to go only with CustomData instead and Power BI Embedded supports a special parameter which only works for AAS . Although the <a href="https://docs.microsoft.com/en-us/power-bi/developer/embedded-row-level-security">documentation</a> doesn&#8217;t emphasize this difference, it has an important paragraph &#8220;The <strong>only way</strong> to have dynamic RLS (which uses dynamic values for filter evaluation) in Azure Analysis Services, is using the <strong>CUSTOMDATA</strong>() function&#8221;. Let&#8217;s break this down.</p>
<ol>
<li>You must use the Object ID of the service principal account when you construct your effective identity. See my previous blog of how to obtain that identifier. Attempting to pass anything other than the Object ID will result in a Forbidden error when the code attempts to obtain the embed token by calling client.Reports.GenerateTokenInGroup().<br />
<span style="color: blue; font-family: Consolas; font-size: 9pt;">var<span style="color: black;"> identity = <span style="color: blue;">new<span style="color: black;"> EffectiveIdentity(<span style="color: #a31515;">&#8220;&lt;Object ID GUID&gt;&#8221;<span style="color: black;">, <span style="color: blue;">new<span style="color: black;"> List&lt;<span style="color: blue;">string<span style="color: black;">&gt; { report.DatasetId }, customData:<span style="color: #a31515;">&#8220;someuser@acme.com&#8221;<span style="color: black;">);<br />
</span></span></span></span></span></span></span></span></span></span></span></span></li>
<li>You must use the customData parameter to pass whatever identifier your AAS row-level security will use to authorize the interactive user. DAX can obtain this identifier from the CUSTOMDATA() function.</li>
<li>You must add the service principal Object ID to each AAS security role in which the user needs to be evaluated.</li>
</ol>
<p><span style="font-size: 19.76px;">Your Power BI Embedded App Owns Data implementation will need different code for SSAS and AAS. The AAS version relies on CUSTOMDATA for handling row-level security.</span></p>
<p>Although this implementation path is fundamentally different from SSAS, it will work with external users that are not part of your Azure AD. But users registered in Azure AD cannot be just added to AAS roles. This will be pointless because you won&#8217;t be able to pass their identity under EffectiveUserName and AAS won&#8217;t be able to evaluate them as AAD users. So, both internal and external users must go somehow through CUSTOMDATA.</p>
<p><img decoding="async" class="alignnone size-full wp-image-6719" src="https://prologika.com/wp-content/uploads/2020/03/031520_0001_PowerBIEmbe1.jpg" alt="" width="214" height="160" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://prologika.com/power-bi-embedded-service-principals-and-aas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Power BI Embedded, Service Principals, and SSAS</title>
		<link>https://prologika.com/power-bi-embedded-service-principals-and-ssas/</link>
					<comments>https://prologika.com/power-bi-embedded-service-principals-and-ssas/#respond</comments>
		
		<dc:creator><![CDATA[Prologika - Teo Lachev]]></dc:creator>
		<pubDate>Fri, 31 Jan 2020 22:45:36 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Analysis Services]]></category>
		<category><![CDATA[Power BI Embedded]]></category>
		<guid isPermaLink="false">https://prologika.com/?p=6470</guid>

					<description><![CDATA[Power BI Embedded supports two ways that your custom app can authenticate to Power BI using a trusted account: master account (the original option) and more recently service principle. Service [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Power BI Embedded supports two ways that your custom app can authenticate to Power BI using a trusted account: <strong>master account</strong> (the original option) and more recently <a href="https://docs.microsoft.com/en-us/power-bi/developer/embed-service-principal">service principle</a>. Service principal authentication is preferred because it doesn&#8217;t require storing and using credentials of a Power BI Pro account. Configuring the service principal and embedding reports with imported data is easy. Not so much with embedding reports connected to on-prem Analysis Services models, mainly because of documentation gaps. Here are some notes you might find useful that I harvested from a recent engagement.</p>
<ol>
<li>
<div>Unlike what the <a href="https://docs.microsoft.com/en-us/power-bi/developer/embedded-row-level-security">documentation</a> states that only SSAS models with RLS requires it, you must grant the service principal <strong>ReadOverrideEffectiveIdentity</strong> permission. Otherwise, the service principal can&#8217;t delegate the user identity to the gateway. So, the gateway admin must call the <a href="https://docs.microsoft.com/en-us/rest/api/power-bi/gateways/adddatasourceuser">Gateways &#8211; Add Datasource User API</a>.</div>
<p><strong>TIP</strong>: Don&#8217;t write code but use the documentation page to call the API (isn&#8217;t this nice!). Construct the body to look like this:<br />
{</li>
</ol>
<p>&#8220;identifier&#8221;: &#8220;<strong>3d9b93c6-7b6d-4801-a491-1738910904fd</strong>&#8220;,</p>
<p>&#8220;datasourceAccessRight&#8221;: &#8220;ReadOverrideEffectiveIdentity&#8221;,</p>
<p>&#8220;principalType&#8221;: &#8220;App&#8221;</p>
<p>}</p>
<p style="margin-left: 36pt;">What the API page doesn&#8217;t tell you is what you need to use for the identifier in the request body. Your first attempt might be to use ApplicationID, but you&#8217;ll get greeted with error &#8221; DMTS_PrincipalsAreInvalidError&#8221;. Instead, you must use the object id (in Azure portal, go to the app registration, and then click the app name in the &#8220;Managed Application in local directory&#8221; property).</p>
<p style="margin-left: 36pt;"><img decoding="async" src="https://prologika.com/wp-content/uploads/2020/01/013120_2241_PowerBIEmbe1.png" alt="" /></p>
<p style="margin-left: 36pt;">Then, on the next page, copy Object ID.</p>
<p style="margin-left: 36pt;"><img decoding="async" src="https://prologika.com/wp-content/uploads/2020/01/013120_2241_PowerBIEmbe2.png" alt="" /></p>
<ol>
<li>Once the permission is granted, your custom app must construct an effective identity, such as by using this code. Notice you need to get to the report dataset to check how it&#8217;s configured. The GetDatasetByIdInGroup API requires the workspace identifier. The code assumes that the dataset is in the report&#8217;s workspace. If you need to embed reports connected to shared datasets which reside in other workspaces, you have a problem because the workspace id is not available in the report object. The best way your app can address this might be to maintain a reference map for these reports (reportId, workspaceId). I hope Microsoft changes the GetDatasetByIdInGroup to not require a workspace (not sure why is needed at all with guids).</li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;">var dataset = client.Datasets.GetDatasetByIdInGroup(WorkspaceId, report.DatasetId);<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;">var IsEffectiveIdentityRequired = dataset.IsEffectiveIdentityRequired;<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;">var IsEffectiveIdentityRolesRequired = dataset.IsEffectiveIdentityRolesRequired;<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;">GenerateTokenRequest generateTokenRequestParameters = null;<br />
</span></li>
<li></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;">if (!(bool)IsEffectiveIdentityRequired)<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> // reports with imported data that don&#8217;t require RLS<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> {<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> // Generate Embed Token for reports without effective identities.<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: &#8220;view&#8221;);<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> }<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> else<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> // reports connecting to RLS datasets and Analysis Services<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> {<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> var identity = new EffectiveIdentity(&#8220;&lt;replace with the interactive user email, e.g. john@acme.com&gt;&#8221;,<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;">     new List&lt;string&gt; { report.DatasetId });<br />
</span></li>
<li></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> var roles = &#8220;&#8221;; // if you want the user to evaluated as a member of a certain RLS role, replace with a comma-delimited list of roles<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> if (!string.IsNullOrWhiteSpace(roles))<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> {<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> var rolesList = new List&lt;string&gt;();<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> rolesList.AddRange(roles.Split(&#8216;,&#8217;));<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> identity.Roles = rolesList;<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> }<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> // Generate Embed Token with effective identities.<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: &#8220;view&#8221;,<br />
</span></li>
<li><span style="color: black; font-family: Arial Narrow; font-size: 9pt;">     identities: new List&lt;EffectiveIdentity&gt; { identity });<br />
</span></li>
<li>
<div><span style="color: black; font-family: Arial Narrow; font-size: 9pt;"> }<br />
</span></div>
<p>Notice that in line 16, your app must pass a valid Windows login to Analysis Services because behind the scenes the gateway will be append EffectiveUserName to the connection string.</li>
</ol>
]]></content:encoded>
					
					<wfw:commentRss>https://prologika.com/power-bi-embedded-service-principals-and-ssas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Embedding Power BI Reports in JavaScript</title>
		<link>https://prologika.com/embedding-power-bi-reports-in-javascript/</link>
					<comments>https://prologika.com/embedding-power-bi-reports-in-javascript/#respond</comments>
		
		<dc:creator><![CDATA[Prologika - Teo Lachev]]></dc:creator>
		<pubDate>Sat, 27 Jul 2019 21:38:29 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Power BI Embedded]]></category>
		<category><![CDATA[SharePoint]]></category>
		<guid isPermaLink="false">https://prologika.com/?p=6303</guid>

					<description><![CDATA[A recent engagement brought an interesting dilemma. An ISV wanted to embed Power BI reports in a SharePoint Online portal accessible by their customers. The app handles user authentication and [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>A recent engagement brought an interesting dilemma. An ISV wanted to embed Power BI reports in a SharePoint Online portal accessible by their customers. The app handles user authentication and authorization by following the &#8220;<a href="https://docs.microsoft.com/en-us/power-bi/developer/embed-sample-for-customers">App owns data</a>&#8221; pattern. However, apparently inspired by the Stalin&#8217;s &#8220;No man, no problem&#8221; motto, SharePoint has decided to throw away custom server-side code, so we couldn&#8217;t add an ASP.NET page to obtain the embed token. This left us with two choices:</p>
<ul>
<li>A pure JavaScript implementation – The main advantage of this option is that we could simply write a SharePoint client web part that handles the entire Power BI Embedded integration in JavaScript only. The major downside is that any JavaScript code is not secure, and this approach has a security vulnerability because you must store passwords in client-side code.</li>
<li>Implement a separate app – You can implement a separate service, such as an Azure Function app to handle tokens. Eventually, we ended up going this path because it&#8217;s more secure.</li>
</ul>
<p>I <a href="https://prologika.com/wp-content/uploads/2019/07/app_servicecredentials1.zip">attach </a>the Node.js code if you need a pure JavaScript solution. The code uses a service principal authentication (follow the steps in the &#8220;<a href="https://docs.microsoft.com/en-us/power-bi/developer/embed-service-principal">Service principal with Power BI</a>&#8221; document to configure it).</p>
<blockquote><p><strong>Important</strong>: <strong>If you decide to follow this path, please do your best to obfuscate the client secret because if the hacker gets access to the client-side code, the hacker can obtain that secret.</strong></p></blockquote>
<p>One could argue that if a hacker gets access to the user&#8217;s computer, you have a much bigger issue than going through JavaScript files to get the secret, but there is a security vulnerability, nonetheless.</p>
<p><img decoding="async" src="https://prologika.com/wp-content/uploads/2019/07/072719_2132_EmbeddingPo1.png" alt="" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://prologika.com/embedding-power-bi-reports-in-javascript/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Editing and Creating Reports in Power BI Embedded</title>
		<link>https://prologika.com/editing-and-creating-reports-in-power-bi-embedded/</link>
					<comments>https://prologika.com/editing-and-creating-reports-in-power-bi-embedded/#respond</comments>
		
		<dc:creator><![CDATA[Prologika - Teo Lachev]]></dc:creator>
		<pubDate>Wed, 15 Mar 2017 21:09:10 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Power BI Embedded]]></category>
		<guid isPermaLink="false">https://prologika.com/?p=4804</guid>

					<description><![CDATA[I was doing a Power BI Embedded demo for a customer and lo and behold, being an ever-changing cloud technology, Power BI Embedded surprised me in a great way. When [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I was doing a Power BI Embedded demo for a customer and lo and behold, being an ever-changing cloud technology, Power BI Embedded surprised me in a great way. When you install and run the Embedded <a href="https://docs.microsoft.com/en-us/azure/power-bi-embedded/power-bi-embedded-get-started-sample">Sample</a>, it adds a nice &#8220;Embed and play with current report using Embedded Live Sample&#8221; link to the Page Navigation section.</p>
<p><img decoding="async" src="https://prologika.com/wp-content/uploads/2017/03/031517_2102_EditingandC1.png" alt="" /></p>
<p>This brings you to the Power BI Embedded live sample with your Power BI Embedded report loaded. You can access the Live Sample from <a href="https://microsoft.github.io/PowerBI-JavaScript/demo/code-demo/">here</a> if you don&#8217;t want to configure and install Power BI Embedded sample. In this case, it uses sample reports. Not only does the sample show you Power BI Embedded in action but it also shows you the relevant code.</p>
<blockquote><p>The surprise is that Power BI Embedded now supports Edit and Create modes!</p></blockquote>
<p>Similar to Power BI Services, users can now edit existing reports and create their own reports from scratch. For more details of how to do this programmatically, read the documentation.</p>
<p><a href="https://prologika.com/wp-content/uploads/2017/03/pbiembedded.png" rel="attachment wp-att-4806"><img fetchpriority="high" decoding="async" class="alignnone wp-image-4806" src="https://prologika.com/wp-content/uploads/2017/03/pbiembedded.png" alt="pbiembedded" width="1166" height="555" srcset="https://prologika.com/wp-content/uploads/2017/03/pbiembedded.png 1799w, https://prologika.com/wp-content/uploads/2017/03/pbiembedded-450x214.png 450w, https://prologika.com/wp-content/uploads/2017/03/pbiembedded-300x143.png 300w, https://prologika.com/wp-content/uploads/2017/03/pbiembedded-768x365.png 768w, https://prologika.com/wp-content/uploads/2017/03/pbiembedded-1030x490.png 1030w, https://prologika.com/wp-content/uploads/2017/03/pbiembedded-1500x714.png 1500w, https://prologika.com/wp-content/uploads/2017/03/pbiembedded-705x335.png 705w" sizes="(max-width: 1166px) 100vw, 1166px" /></a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://prologika.com/editing-and-creating-reports-in-power-bi-embedded/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Prologika Newsletter Winter 2016</title>
		<link>https://prologika.com/prologika-newsletter-winter-2016/</link>
					<comments>https://prologika.com/prologika-newsletter-winter-2016/#respond</comments>
		
		<dc:creator><![CDATA[Prologika - Teo Lachev]]></dc:creator>
		<pubDate>Sat, 24 Dec 2016 20:00:30 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Newsletter]]></category>
		<category><![CDATA[Data Warehousing]]></category>
		<category><![CDATA[Power BI Embedded]]></category>
		<guid isPermaLink="false">https://prologika.com/?p=4654</guid>

					<description><![CDATA[Designing an Operational Data Store (ODS) I hope you&#8217;re enjoying the holiday season. I wish you all the best in 2017! The subject of this newsletter came from a Planning [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2>Designing an Operational Data Store (ODS)</h2>
<hr />
<p><a href="https://prologika.com/wp-content/uploads/2016/12/ods.jpg" rel="attachment wp-att-4656"><img loading="lazy" decoding="async" class="alignleft wp-image-4656" src="https://prologika.com/wp-content/uploads/2016/12/ods.jpg" alt="ods" width="209" height="93" srcset="https://prologika.com/wp-content/uploads/2016/12/ods.jpg 324w, https://prologika.com/wp-content/uploads/2016/12/ods-300x133.jpg 300w" sizes="auto, (max-width: 209px) 100vw, 209px" /></a>I hope you&#8217;re enjoying the holiday season. I wish you all the best in 2017! The subject of this newsletter came from a Planning and Strategy assessment for a large organization. Before I get to it and speaking of planning, don&#8217;t forget to use your Microsoft planning days as they will expire at the end of your fiscal year. This is free money that Microsoft gives you to engage Microsoft Gold partners, such as Prologika, to help you plan your SQL Server and BI initiatives. Learn how the process works <a href="https://prologika.com/wp-content/uploads/about/Have%20Software%20Assurance.pdf">here</a>.</p>
<hr />
<p>Just like a data warehouse, Operational Data Store (ODS) can mean different things for different people. Do you remember the time when ODS and DW were conflicting methodologies and each one claimed to be superior than the other? Since then the scholars buried the hatchet and reached a consensus that you need both. I agree.</p>
<blockquote><p>To me, ODS is nothing more than a staging database on steroids that sits between the source systems and DW in the BI architectural stack.</p></blockquote>
<h3>What&#8217;s Operational Data Store?</h3>
<p>According to Wikipedia &#8220;an operational data store (or &#8220;ODS&#8221;) is a database designed to integrate data from multiple sources for additional operations on the data…The general purpose of an ODS is to integrate data from disparate source systems in a single structure, using data integration technologies like data virtualization, data federation, or extract, transform, and load. This will allow operational access to the data for operational reporting, master data or reference data management. An ODS is not a replacement or substitute for a data warehouse but in turn could become a source.&#8221;</p>
<p>OK, this is a good starting point. See also the &#8220;Operational Data Source (ODS) Defined&#8221; <a href="http://www.jamesserra.com/archive/2015/02/operational-data-store-ods-defined/" target="_blank">blog</a> by James Serra. But how do you design an ODS? In general, I&#8217;ve seen two implementation patterns but the design approach you take would really depends on how you plan to use the data in the ODS and what downstream systems would need that data.</p>
<h3>One to One Pull</h3>
<p>ODS is typically implemented as 1:1 data pull from the source systems, where ETL stages all source tables required for operational reporting and downstream systems, such loading the data warehouse. ETL typically runs daily but it could run more often to meet low-latency reporting needs.  The ETL process is typically just Extract and Load (it doesn&#8217;t do any transformations), except for keeping a history of changes (more on this in a moment). This results in a highly normalized schema that&#8217;s the same is the original source schema. Then when data is loaded in DW, it’s denormalized to conform to the star schema. Let&#8217;s summarize the pros and cons of the One:one Data Pull design pattern.</p>
<table style="height: 236px;" width="1330">
<tbody>
<tr>
<td width="162"><strong> </strong></td>
<td width="330"><strong>Pros</strong></td>
<td width="312"><strong>Cons</strong></td>
</tr>
<tr>
<td width="162">Table schema</td>
<td width="330">Highly normalized and identical to the source system</td>
<td width="312">The number of tables increase</td>
</tr>
<tr>
<td width="162">Operational reporting</td>
<td width="330">Users can query the source data as it&#8217;s stored in the original source. This offloads reporting from the source systems</td>
<td width="312">No consolidated reporting if multiple source systems process same information, e.g. multiple systems to process claims</td>
</tr>
<tr>
<td width="162">Changes to source schema</td>
<td width="330">Source schema is preserved</td>
<td width="312">Additional ETL is required to transform to star schema</td>
</tr>
<tr>
<td width="162">ETL</td>
<td width="330">Extraction and load from source systems (no transformations)</td>
<td width="312">As source systems change, ETL needs to change</td>
</tr>
</tbody>
</table>
<h3>Common Format</h3>
<p>This design is preferred when the same business data is sourced from multiple source systems, such as when the source systems might change or be replaced over time. For example, an insurance company might have several systems to process claims. Instead of ending up with three sets of tables (one for each source system), the ODS schema is standardized and the feeds from the source systems are loaded into a shared table. For example, a common Claim table stores claim &#8220;feeds&#8221; from the three systems. As long as the source endpoint (table, view, or stored procedure) returns the data according to an agreed &#8220;contract&#8221; for the feed, ODS is abstracted from source system changes. This design is much less normalized. In fact, for the most part it should mimic the DW schema so that DW tables can piggy back on the ODS tables with no or minimum ETL.</p>
<table style="height: 249px;" width="1333">
<tbody>
<tr>
<td width="156"><strong> </strong></td>
<td width="336"><strong>Pros</strong></td>
<td width="312"><strong>Cons</strong></td>
</tr>
<tr>
<td width="156">Table schema</td>
<td width="336">Denormalized and suitable for reporting</td>
<td width="312">The original schema is lost</td>
</tr>
<tr>
<td width="156">Operational reporting</td>
<td width="336">Relevant information is consolidated and stored in one table</td>
<td width="312">Schema is denormalized and reports might not reflect how the data is stored in the source systems</td>
</tr>
<tr>
<td width="156">Schema changes to source systems</td>
<td width="336">As long as the source endpoints adhere to the contract, ODS is abstracted from schema changes</td>
<td width="312">A design contract needs to be prepared and sources systems need to provide the data in the agreed format</td>
</tr>
<tr>
<td width="156">ETL</td>
<td width="336">Less, or even no ETL to transform data from ODS to DW</td>
<td width="312">ETL needs to follow the contract specification so upfront design effort is required</td>
</tr>
</tbody>
</table>
<h3>Further Recommendations</h3>
<p>Despite which design pattern you choose, here are some additional recommendations to take the most of your ODS:</p>
<ul>
<li>Store data at its most atomic level – No aggregations and summaries. Your DW would need the data at its lowest level anyway.</li>
<li>Keep all the historical data or as long as required by your retention policy – This is great for auditing and allows you to reload the DW from ODS since it&#8217;s unlikely that source systems will keep historical data.</li>
<li>Apply minimum to no ETL transformations in ODS – You would want the staged data to keep the same parity with the source data so that you can apply data quality and auditing checks.</li>
<li>Avoid business calculations in ODS – Business calculations, such as YTD, QTD, variances, etc., have no place in ODS. They should be defined in the semantic layer, e.g. Analysis Services model. If you attempt to do so in ODS, it will surely impact performance, forcing to you to pre-aggregate data. The only permissible type of reporting in ODS is operational reporting, such as to produce the same reports as the original systems (without giving users access to the source) or to validate that the DW results match the source systems.</li>
<li>Maintain column changes to most columns – I kept the best for last. Treat most columns as Type 2 so that you now when a given row was changed in the source. This is great for auditing.</li>
</ul>
<p>Here is a hypothetical Policy table that keeps Type 2 changes. In this example, the policy rate has changed on 5/8/2010. If you follow this design, you don&#8217;t have to maintain Type 2 in your DW (if you follow the Common Format pattern) and you don&#8217;t have to pick which columns are Type 2 (all of them are). It might be extreme but it&#8217;s good for auditing. Tip: use SQL Server 2016 temporal tables to simplify Type 2 date tracking.</p>
<table style="height: 141px;" width="1348">
<tbody>
<tr>
<td width="105"><strong>RowStartDate</strong></td>
<td width="105"><strong>RowEndDate</strong></td>
<td width="66"><strong>SourceID</strong></td>
<td width="100"><strong>RowIsCurrent</strong></td>
<td width="100"><strong>RowIsDeleted</strong></td>
<td width="145"><strong>ETLExecutionID</strong></td>
<td width="69"><strong>PolicyKey</strong></td>
<td width="78"><strong>PolicyID</strong></td>
<td width="84"><strong>PremiumRate</strong></td>
<td width="30"><strong>…</strong></td>
</tr>
<tr>
<td width="105">5/2/2010</td>
<td width="105">5/8/2010</td>
<td width="66">1</td>
<td width="100">0</td>
<td width="100">0</td>
<td width="145">0BB76521-AA63-&#8230;</td>
<td width="69">1</td>
<td width="78">496961</td>
<td width="84">0.45</td>
<td width="30"></td>
</tr>
<tr>
<td width="105">5/9/2010</td>
<td width="105">12/31/9999</td>
<td width="66">1</td>
<td width="100">1</td>
<td width="100">0</td>
<td width="145">CD348258-42ED-..</td>
<td width="69">2</td>
<td width="78">496961</td>
<td width="84">0.50</td>
<td width="30"></td>
</tr>
</tbody>
</table>
<h3>MS BI Events in Atlanta</h3>
<ul>
<li>Atlanta MS BI Group: <a href="http://atlantabi.sqlpass.org/">&#8220;Master Data Management with SQL Server 2016 MDS&#8221; </a><a href="http://atlantabi.sqlpass.org/">presentation</a> by Neal Waterstreet on 1/31</li>
<li>Atlanta MS BI Group: Presentation and sponsorship by SolidQ on 2/27.</li>
</ul>
<div></div>
<div>As you&#8217;d probably agree, the BI landscape is fast-moving and it might be overwhelming. If you need any help with planning and implementing your next-generation BI solution, don&#8217;t hesitate to <a href="https://prologika.com/contact/" target="_blank">contact me</a>. As a Microsoft Gold Partner and premier BI firm, you can trust us to help you plan and implement your data analytics projects, and rest assured that you&#8217;ll get the best service.</div>
<p>Regards,</p>
<p><a href="https://prologika.com/wp-content/uploads/about/sig-1.jpg" rel="attachment wp-att-3702"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3702" src="https://prologika.com/wp-content/uploads/about/sig-1.jpg" alt="sig-1" width="136" height="31" /></a></p>
<p>Teo Lachev<br />
Prologika, LLC | Making Sense of Data<br />
Microsoft Partner | Gold Data Analytics</p>
]]></content:encoded>
					
					<wfw:commentRss>https://prologika.com/prologika-newsletter-winter-2016/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Embed Interactive Reports in Your Apps</title>
		<link>https://prologika.com/download/embed-interactive-reports-in-your-apps/</link>
					<comments>https://prologika.com/download/embed-interactive-reports-in-your-apps/#respond</comments>
		
		<dc:creator><![CDATA[Prologika - Teo Lachev]]></dc:creator>
		<pubDate>Sat, 15 Oct 2016 22:00:13 +0000</pubDate>
				<category><![CDATA[Power BI Embedded]]></category>
		<guid isPermaLink="false">https://prologika.com/?post_type=wpdmpro&#038;p=4587</guid>

					<description><![CDATA[Slides from my presentation for Atlanta Code Camp 2016 on Power BI Embedded. You have the app. You have the data. What if your app could put the power of [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Slides from my presentation for Atlanta Code Camp 2016 on Power BI Embedded.</p>
<p>You have the app. You have the data. What if your app could put the power of analytics everywhere decisions are made and allow your customers to gain insights? Modern apps with data visualizations built-in have the power to inform decisions in context—for any user and on any device. Thanks to Power BI Embedded, you can now embed data analytics in any app and on one device.</p>
]]></content:encoded>
					
					<wfw:commentRss></wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
