{"id":5884,"date":"2019-09-09T12:50:37","date_gmt":"2019-09-09T19:50:37","guid":{"rendered":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/power-apps\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/"},"modified":"2025-06-11T08:02:11","modified_gmt":"2025-06-11T15:02:11","slug":"creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis","status":"publish","type":"post","link":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/power-apps\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/","title":{"rendered":"Creating Updateable Power BI Reports with PowerApps by Ike Ellis"},"content":{"rendered":"<p>When asked what content our blog readers and video viewers would like to see more of, the most requested topic is: \u201cIndustry Best Practices\u201d. With that in mind we will be starting a series of Blog posts and Webinars by PowerApps MVPs highlighting work they have done.<\/p>\n<p>The first in this series by Ike Ellis (see bottom of post for more about Ike) and in this post he highlights how you can create a solution that enables a mobile sales force to update their own Power BI reports.<\/p>\n<p>Webinar on this topic: September 12<sup>th<\/sup> 10AM PST<\/p>\n<p>Where: <a href=\"https:\/\/powerusers.microsoft.com\/t5\/Video-Gallery\/Creating-Update-able-Power-BI-Reports-with-PowerApps\/td-p\/358466\">Community Gallery<\/a><\/p>\n<h2>Combining PowerApps with Power BI to create powerful and compelling solutions<\/h2>\n<p>By Ike Ellis<\/p>\n<p>One of my customers is a very large RV dealer with multiple locations. They allow sales people to set their own monthly goals. They wanted a Power BI report that would update when sales came into the database and when salespeople updated their particular goals for each month. Creating an updateable report is a very common request from customers.<\/p>\n<p>Each RV dealership is humongous. RVs are individually large, so when you\u2019re selling a lot of them, the lots have to be pretty large to accommodate them. It is very difficult to cover a lot that size in WIFI. Additionally, sales people often engage with customers away from the dealership. This made Microsoft PowerApps an ideal solution for updating their goals and sales. PowerApps for mobile devices can use the mobile network, in addition to WIFI. PowerApps can use the PowerApps gateway to query and update records in databases that are behind firewalls.<\/p>\n<p>Combining PowerApps with Power BI, along with all the Azure services, really makes each individual product so much more powerful and compelling to the customer. If we\u2019re comparing Power BI with its competitors, emphasizing how easy it is to integrate with these other products is a major competitive advantage. After we showed a demo of the solution to the customer, it was an easy sell. There really is no competition.<\/p>\n<p>This blog post is a simplified version of the app I created for the customer. It will show how a Salesperson can update their goal for the month, while decision makers can see the Power BI report update as the data refreshes.<\/p>\n<p>For our demo, we\u2019ll be using three Microsoft products together: Power BI, PowerApps, and Azure SQL Database.<\/p>\n<div>Directions:<\/div>\n<div>Sign up for Power BI, Power Apps, and a free trial of Microsoft Azure<\/div>\n<ul>\n<li>Download Power BI Desktop from either the Windows Store or from here: <a href=\"https:\/\/powerbi.microsoft.com\/en-us\/downloads\/\">https:\/\/powerbi.microsoft.com\/en-us\/downloads\/<\/a>.<\/li>\n<li>We would normally publish our report to the Power BI portal, but that\u2019s beyond the scope of this demo.\u00a0 Please see:\u00a0<a href=\"https:\/\/docs.microsoft.com\/en-us\/power-bi\/service-publish-to-web\">https:\/\/docs.microsoft.com\/en-us\/power-bi\/service-publish-to-web<\/a> for more information on that topic<\/li>\n<li>Microsoft Azure free trial instructions: <a href=\"https:\/\/azure.microsoft.com\/en-us\/free\/\">https:\/\/azure.microsoft.com\/en-us\/free\/<\/a><\/li>\n<\/ul>\n<p>Microsoft PowerApps signup: <a href=\"https:\/\/powerapps.microsoft.com\/en-us\/signup\/\">https:\/\/powerapps.microsoft.com\/en-us\/signup\/<\/a><\/p>\n<p>We will use Azure Data Studio to create two tables in Azure SQL DB and seed them with data. Download and install Azure Data Studio here: <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/azure-data-studio\/download?view=sql-server-2017\">https:\/\/docs.microsoft.com\/en-us\/sql\/azure-data-studio\/download?view=sql-server-2017<\/a><\/p>\n<p>\u00a0<\/p>\n<div>Create and seed a new Microsoft Azure SQL Database.<\/div>\n<ul>\n<li>Sign in to <a href=\"https:\/\/portal.azure.com\/\">https:\/\/portal.azure.com<\/a><\/li>\n<li>Click the \u201cCreate a Resource\u201d button in the upper left of the portal.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd1.png?w=1000\"\/><\/p>\n<ul>\n<li>Search for \u201cSQL Database\u201d and click on the first result<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd2.png?w=1000\"\/><\/p>\n<ul>\n<li>On the welcome screen, click \u201cCreate\u201d.<\/li>\n<li>Choose your subscription and location. Try to pick a datacenter that\u2019s close to you. I chose \u201cWest US\u201d, since I live in San Diego, California.<\/li>\n<li>Type \u201cSalesDB\u201d as the name of the database.<\/li>\n<li>\n<div>Create a new server or choose an existing server.<\/div>\n<ul>\n<li>Choose a name for the server. It needs to be globally unique. When you connect to the database from PowerApps and Power BI, you\u2019ll use the full name, which will include the unique name you just entered with a prefix of \u201c.database.windows.net.\u201d<\/li>\n<\/ul>\n<\/li>\n<li>Click \u201cConfigure database\u201d. This is where we will choose how much money we will spend on our database. For a real production application, we would obviously try to predict our load and size the database accordingly. For our demonstration, we can just use the cheapest solution possible. I chose a Basic tier database. I slid the slider bar for the amount of space I need down to 100MB. At the time of this writing, this database will cost about $5 per month. Not bad. Click \u201cApply\u201d.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd3.png?w=1000\"\/><\/p>\n<p>My filled out form looks like this:<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd4.png?w=1000\"\/><\/p>\n<ul>\n<li>Click \u201cReview + create\u201d and then \u201cCreate\u201d.<\/li>\n<li>One of the things that amazes me most about Azure is how quickly resources come online and are available to use. As a developer, I\u2019ve put in requests with IT departments for my entire career. When I ask them to create a SQL Server with a new database for me, it usually takes between two weeks and two months. In Azure, it\u2019s done in less than five minutes!<\/li>\n<li>When it says the deployment is complete, click \u201cGo to resource\u201d.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd5.png?w=1000\"\/><\/p>\n<ul>\n<li>Azure SQL DB has a built-in firewall. Three things need access to your new Azure SQL Database: your workstation, PowerApps, and Power BI. Click on \u201cSet Server Firewall\u201d to configure the firewall.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd6.png?w=1000\"\/><\/p>\n<ul>\n<li>Make sure you click \u201cAdd Client IP\u201d and verify that the button for \u201cAllow access to Azure Services\u201d is selected. Then click \u201cSave\u201d.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd7.png?w=1000\"\/><\/p>\n<ul>\n<li>In the next few steps, we\u2019re going to use Azure Data Studio to create a login account and password, assign permissions, create two tables, and seed those tables so that we can use your new Azure SQL Database.<\/li>\n<li>On the connections window, click \u201cNew Connection\u201d<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd8.png?w=1000\"\/><\/p>\n<ul>\n<li>Under Connection Details, type in your unique servername that you choose earlier. Remember it ends with \u201c.database.windows.net\u201d.<\/li>\n<li>Under authentication type, click \u201cAzure Active Directory \u2013 Universal with MFA Support\u201d<\/li>\n<li>Under account, click \u201cAdd New Account\u201d.<\/li>\n<li>\n<div>This screen will direct you to go to a URL and enter in a code while helping you login to your Azure Account. This will authorize your Azure Data Studio to connect to your Azure SQL Server.<\/div>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd9.png?w=1000\"\/><\/li>\n<li>Under Database, type \u201cSalesDB\u201d.<\/li>\n<li>Your Connection Details should look like this with the correct account selected:<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd10.png?w=1000\"\/><\/p>\n<ul>\n<li>Now in the connection window, right-click on your new server and click \u201cNew Query\u201d<\/li>\n<li>Paste the following code in the window and run it.<\/li>\n<\/ul>\n<blockquote><p>drop<br \/>\ntable<br \/>\nif<br \/>\nexists SalesPeople;<\/p>\n<p>drop<br \/>\ntable<br \/>\nif<br \/>\nexists goals;<\/p>\n<p>drop<br \/>\ntable<br \/>\nif<br \/>\nexists Sales;<\/p>\n<p>go<\/p>\n<p>create<br \/>\ntable SalesPeople<\/p>\n<p>(SysID int<br \/>\nnot<br \/>\nnull<br \/>\nidentity(1,1) PRIMARY<br \/>\nKEY<\/p>\n<p>, SalesPersonFullName varchar(100))<\/p>\n<p>GO<\/p>\n<p>insert<br \/>\ninto SalesPeople<\/p>\n<p>(SalesPersonFullName)<\/p>\n<p>VALUES<\/p>\n<p>(\u2018Sterling Sanchez\u2019)<\/p>\n<p>, (\u2018Rick Archer\u2019)<\/p>\n<p>, (\u2018Morty Figgis\u2019)<\/p>\n<p>, (\u2018Lana Smith\u2019)<\/p>\n<p>go<\/p>\n<p>create<br \/>\ntable Sales<\/p>\n<p>(SysID int<br \/>\nnot<br \/>\nnull<br \/>\nidentity(1,1) PRIMARY<br \/>\nKEY<\/p>\n<p>, CustomerName varchar(100)<\/p>\n<p>, OrderDate datetime<\/p>\n<p>, SalesPersonID int<\/p>\n<p>, SaleAmount decimal(14,2))<\/p>\n<p>go<\/p>\n<p>create<br \/>\ntable Goals<\/p>\n<p>(SysID int<br \/>\nnot<br \/>\nnull<br \/>\nidentity(1,1) PRIMARY<br \/>\nKEY<\/p>\n<p>, SalesPersonID int<\/p>\n<p>, GoalMonth int<\/p>\n<p>, GoalYear int<\/p>\n<p>, GoalAmount decimal(14,2))<\/p>\n<p>go<\/p>\n<p>insert<br \/>\ninto Sales<\/p>\n<p>(CustomerName, OrderDate, SalesPersonID, SaleAmount)<\/p>\n<p>VALUES<\/p>\n<p>(\u2018Arch Burgers\u2019, \u20187\/1\/2019\u2019, 1, \u2018520.00\u2019)<\/p>\n<p>, (\u2018Bob\u201ds Investigative Service\u2019, \u20187\/3\/2019\u2019, 1, \u2018139.00\u2019)<\/p>\n<p>, (\u2018Arch Burgers\u2019, \u20187\/13\/2019\u2019, 1, \u2018272.00\u2019)<\/p>\n<p>, (\u2018Southland Laundry\u2019, \u20187\/21\/2019\u2019, 1, \u2018499.00\u2019)<\/p>\n<p>, (\u2018Smith Consulting\u2019, \u20187\/2\/2019\u2019, 2, \u2018296.00\u2019)<\/p>\n<p>, (\u2018Reed Gardening Services\u2019, \u20187\/13\/2019\u2019, 2, \u2018321.00\u2019)<\/p>\n<p>, (\u2018Fashion Design By Gilbert\u2019, \u20187\/25\/2019\u2019, 2, \u2018673.00\u2019)<\/p>\n<p>, (\u2018Sterling Bar and Grille\u2019, \u20187\/30\/2019\u2019, 2, \u2018152.00\u2019)<\/p>\n<p>, (\u2018Allington Investment Advisors\u2019, \u20187\/3\/2019\u2019, 3, \u2018210.00\u2019)<\/p>\n<p>, (\u2018Rad Construction Supply\u2019, \u20187\/5\/2019\u2019, 3, \u2018329.00\u2019)<\/p>\n<p>, (\u2018Sterling Bar and Grille\u2019, \u20187\/7\/2019\u2019, 3, \u2018199.00\u2019)<\/p>\n<p>, (\u2018Allington Investment Advisors\u2019, \u20187\/17\/2019\u2019, 3, \u2018195.00\u2019)<\/p>\n<p>, (\u2018Johnson Tool &amp; Die\u2019, \u20187\/22\/2019\u2019, 3, \u201852.00\u2019)<\/p>\n<p>CREATE USER SalesUser WITH<br \/>\nPASSWORD<br \/>\n=<br \/>\n\u2018PowerAppsAreGreat!\u2019<\/p>\n<p>ALTER<br \/>\nROLE db_datareader ADD MEMBER SalesUser;<\/p>\n<p>ALTER<br \/>\nROLE db_datawriter ADD MEMBER SalesUser;<\/p><\/blockquote>\n<div><\/div>\n<ul>\n<li>\n<div>Create a PowerApps application that allows SalesPeople to enter their goals for the month.<\/div>\n<ul>\n<li>Go to <a href=\"https:\/\/make.powerapps.com\/\">https:\/\/make.powerapps.com<\/a><\/li>\n<li>On the left, click \u201cCreate\u201d and the click \u201cCanvas app from blank\u201d<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd11.png?w=1000\"\/><\/p>\n<ul>\n<li>Name the app \u201cSales Goals\u201d and select the phone layout. Click \u201cCreate\u201d.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd12.png?w=1000\"\/><\/p>\n<ul>\n<li>It will take a minute to create the new application.<\/li>\n<li>You may need to skip a welcome screen.<\/li>\n<li>We are going to connect this app to our Azure SQL Database. Click the \u201cView\u201d tab, then click \u201cData sources\u201d. Type in \u201csql server\u201d into the text box and click the red SQL Server icon.<\/li>\n<li>Click \u201cAdd a Connection\u201d.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd13.png?w=1000\"\/><\/p>\n<ul>\n<li>\n<div>Since our database is in Azure, we\u2019ll click the radio button \u201cConnect directly (cloud services)\u201d.<\/div>\n<ul>\n<li>Type in the SQL Server name from earlier that ends in \u201c.database.windows.net\u201d.<\/li>\n<li>Type in SalesDB as the SQL database name.<\/li>\n<li>Type SalesUser as the Username.<\/li>\n<li>Type PowerAppsAreGreat! as the password.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd14.png?w=1000\"\/><\/p>\n<ul>\n<li>For the table, we\u2019ll select \u201cGoals\u201d and \u201cSalespeople\u201d and click \u201cConnect\u201d.<\/li>\n<li>\n<div>Our goal is to create to create a screen that looks like this:<\/div>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd15.png?w=1000\"\/><\/li>\n<li>We are going to create one data entry element at a time and then add the button. Then we\u2019ll test our application.<\/li>\n<li>Let\u2019s start with the label at the top. On the Insert tab at the top bar, click \u201cLabel\u201d. In the Text property, enter \u201cENTER GOAL AMOUNT FOR MONTH (0.00)\u201d. Include the double quotes.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2024\/06\/090919_1758_creatingupd16.png\"\/><\/p>\n<ul>\n<li>On the right side, you\u2019ll see the PowerApps property window. You can use this window to control the behavior of an individual control in PowerApps.<\/li>\n<li>Click on the Advanced tab on the window on the right.<\/li>\n<li>In the search area, type \u201cweight\u201d.<\/li>\n<li>Change the FontWeight to Bold<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd17.png?w=1000\"\/><\/p>\n<ul>\n<li>Change the Align to \u201ccenter\u201d.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd18.png?w=1000\"\/><\/p>\n<ul>\n<li>We will be following that pattern with a lot of these properties without giving accompanying screenshots.<\/li>\n<\/ul>\n<ul>\n<li>\n<div>Now let\u2019s add dropdown list for Goal Month.<\/div>\n<ul>\n<li>Add a label to the control. Change the Text value to \u201cGoal Month:\u201d<\/li>\n<li>Add a Drop Down control. On the left window. You\u2019ll see a new dropdown titled DropDown1. Next to the name, you will see an icon with the ellipsis (\u2026). Click on it and rename it to ddlGoalMonth. You will be renaming many of the controls. The completed Tree view on the left will look like this<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd19.png?w=1000\"\/><\/p>\n<div>Change the Items property to the following:<\/div>\n<blockquote><p>Table(<br \/>\n{<br \/>\nText: \u201cJanuary\u201d,<br \/>\nVal: 1<br \/>\n},<br \/>\n{<br \/>\nText: \u201cFebruary\u201d,<br \/>\nVal: 2<br \/>\n},<br \/>\n{<br \/>\nText: \u201cMarch\u201d,<br \/>\nVal: 3<br \/>\n},<br \/>\n{<br \/>\nText: \u201cApril\u201d,<br \/>\nVal: 4<br \/>\n},<br \/>\n{<br \/>\nText: \u201cMay\u201d,<br \/>\nVal: 5<br \/>\n},<br \/>\n{<br \/>\nText: \u201cJune\u201d,<br \/>\nVal: 6<br \/>\n},<br \/>\n{<br \/>\nText: \u201cJuly\u201d,<br \/>\nVal: 7<br \/>\n},<br \/>\n{<br \/>\nText: \u201cAugust\u201d,<br \/>\nVal: 8<br \/>\n},<br \/>\n{<br \/>\nText: \u201cSeptember\u201d,<br \/>\nVal: 9<br \/>\n},<br \/>\n{<br \/>\nText: \u201cOctober\u201d,<br \/>\nVal: 10<br \/>\n},<br \/>\n{<br \/>\nText: \u201cNovember\u201d,<br \/>\nVal: 11<br \/>\n},<br \/>\n{<br \/>\nText: \u201cDecember\u201d,<br \/>\nVal: 12<br \/>\n}<br \/>\n)<\/p><\/blockquote>\n<ul>\n<li>This makes the dropdown display the individual months in the correct order. It also assigns a value to the month so that it sorts correctly.<\/li>\n<\/ul>\n<ul>\n<li>\n<div>Now let\u2019s create the dropdown for Goal Year.<\/div>\n<ul>\n<li>Add a label and change the Text property to \u201cGoal Year:\u201d.<\/li>\n<li>Add a drop down. Rename it to ddlGoalYear.<\/li>\n<li>Change the Items property to [\u201c2019\u201d, \u201c2018\u201d]. In this case the value and the text are the same thing, so we don\u2019t need to use a Table function in our code like we did for month.<\/li>\n<\/ul>\n<\/li>\n<li>\n<div>Create the dropdown for Salesperson.<\/div>\n<ul>\n<li>Add a label and change the Text property to \u201cSalesperson:\u201d.<\/li>\n<li>Add a drop down. Rename it to ddlSalesperson.<\/li>\n<li>Change the Items property to \u2018[dbo].[SalesPeople]\u2019.<\/li>\n<li>Change the Value property to \u201cSalesPersonFullName\u201d.<\/li>\n<\/ul>\n<\/li>\n<li>\n<div>Create the textbox for Goal Amount.<\/div>\n<ul>\n<li>Add a label and change the Text property to \u201cGoal Amount:\u201d.<\/li>\n<li>Add a text input control. Rename it to txtGoalAmount.<\/li>\n<li>Clear out the Default property.<\/li>\n<\/ul>\n<\/li>\n<li>\n<div>Add the Save button<\/div>\n<ul>\n<li>Add a button control. Rename the control btnSave.<\/li>\n<li>Change the Text property to \u201cSave\u201d.<\/li>\n<li>\n<div>Change the OnSelect property to the following code:<\/div>\n<div><\/div>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div><\/div>\n<div>\n<blockquote><p>RemoveIf(<br \/>\n\u2018[dbo].[Goals]\u2019,<br \/>\nSalesPersonID = ddlSalesperson.SelectedText.SysID,<br \/>\nGoalMonth = ddlGoalMonth.SelectedText.Val,<br \/>\nGoalYear = Value(ddlGoalYear.SelectedText.Value)<br \/>\n);<br \/>\nCollect(<br \/>\n\u2018[dbo].[Goals]\u2019,<br \/>\n{<br \/>\nSalesPersonID: ddlSalesperson.SelectedText.SysID,<br \/>\nGoalMonth: ddlGoalMonth.SelectedText.Val,<br \/>\nGoalYear: Value(ddlGoalYear.SelectedText.Value),<br \/>\nGoalAmount: Value(txtGoalAmount.Text)<br \/>\n}<br \/>\n)<\/p><\/blockquote>\n<\/div>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Each salesperson can only have a single goal for the same month and year. The REMOVEIF function finds a matching record on those three criteria and deletes the record. It then adds a new record based on the inputs<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<div>Let\u2019s add a few goals and then check the database to see if the goals have updated.<\/div>\n<ul>\n<li>Hit F5 to launch the application in your browser.<\/li>\n<li>Add goals for each of the sales people for July 2019.<\/li>\n<li>Make sure the goals are at least over $500, but below $3,000.<\/li>\n<li>Click the save button.<\/li>\n<li>Go back to Azure Data Studio. Open a New Query window for the SalesDB database. Enter \u201cSELECT * FROM GOALS\u201d. Execute that code. You should see records for goals for each of your sales reps.<\/li>\n<\/ul>\n<\/li>\n<li>\n<div>There are a few improvements that we would make to this application before releasing it. I didn\u2019t add these to this post because it would detract from the main solution.<\/div>\n<ul>\n<li>When the user logs on to PowerApps, PowerApps knows the email address that the user used. This is the same email address that was configured when we shared the application to the user. Using this email address, we know who the user is and wouldn\u2019t need them to select their own name in the dropdown.<\/li>\n<li>Give the user the ability to see and search through all of their old goals.<\/li>\n<li>Create an approval process where managers see the goal and approve it or deny it.<\/li>\n<li>Create an audit log where we can see who entered what goal and when for accountability.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Create a status bar that provides feedback to the user so they know a record was successfully inserted.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<div>Now let\u2019s make the Power BI report that the decision makers will see.<\/div>\n<ul>\n<li>Open Power BI Desktop<\/li>\n<li>\n<div>Let\u2019s import all the data we need<\/div>\n<ul>\n<li>Click \u201cGet Data\u201d<\/li>\n<li>Choose \u201cSQL Server\u201d<\/li>\n<li>For the server name, put the same server name you entered into PowerApps.<\/li>\n<li>Enter \u201cSalesDB\u201d as the database.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd20.png?w=1000\"\/><\/p>\n<ul>\n<li>Click OK.<\/li>\n<li>On the next screen, click the \u201cDatabase\u201d tab on the left. Enter your username and password: SalesUser and PowerAppsAreGreat!<\/li>\n<li>Click OK.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd21.png?w=1000\"\/><\/p>\n<ul>\n<li>Choose the Sales, Salespeople, and Goals tables. Click OK.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd22.png?w=1000\"\/><\/p>\n<ul>\n<li>Click OK. This will import all of your data from SalesDB into a Power BI dataset.<\/li>\n<\/ul>\n<ul>\n<li>We need to do a little data preparation before we can create our visuals.<\/li>\n<li>\n<div>Let\u2019s add two columns so we can join the Sales table and the Goals table.<\/div>\n<ul>\n<li>On the navigation pane on the left, click the \u201cData\u201d tab. This is the tab in the middle.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd23.png?w=1000\"\/><\/p>\n<ul>\n<li>On the right, next to the Goals table, click the Elipsis button (\u2026). Click \u201cNew Column\u201d.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd24.png?w=1000\"\/><\/p>\n<ul>\n<li>In the DAX editor, enter the following DAX:<\/li>\n<\/ul>\n<blockquote><p>JoinKey = FORMAT(Month(Sales[OrderDate]), \u201c#\u201d) &amp; \u201c-\u201d &amp; YEAR(Sales[OrderDate]) &amp; \u201c-\u201d &amp; Sales[SalesPersonID]<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd25.png?w=1000\"\/><\/p>\n<ul>\n<li>The table should now look like this:<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd26.png?w=1000\"\/><\/p>\n<ul>\n<li>The JOIN column is month, year, and salespersonID concatenated. We\u2019ll do the same thing for the Sales Table.<\/li>\n<li>Click the ellipsis button for the Sales Table. Add a New Column. Enter the following DAX:<\/li>\n<\/ul>\n<blockquote><p>JoinKey = FORMAT(Month(Sales[OrderDate]), \u201c#\u201d) &amp; \u201c-\u201d &amp; YEAR(Sales[OrderDate]) &amp; \u201c-\u201d &amp; Sales[SalesPersonID]<\/p><\/blockquote>\n<ul>\n<li>Now let\u2019s change the data model a little bit. Click Data Model tab, the bottom tab, on the left. Your screen should look like this:<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd27.png?w=1000\"\/><\/p>\n<ul>\n<li>Double-click on the relationship between the Goals table and the Sales table.<\/li>\n<li>Make the screen look like the following screenshot. Choose the JOINKEY column for both tables. Verify that the cardinality is Many to One. Make sure the Cross filter direction is set to Both:<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd28.png?w=1000\"\/><\/p>\n<ul>\n<li>Change the relationship between the Sales and Salespeople table.<\/li>\n<li>Make sure the relationship is Many to One. Make sure the Cross filter direction is set to Single.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd29.png?w=1000\"\/><\/p>\n<ul>\n<li>Finally, we can add the visuals. We\u2019ll create two simple visuals on the visual pane.<\/li>\n<li>Click the Visual button on the left.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd30.png?w=1000\"\/><\/p>\n<ul>\n<li>Add a slicer visual to the report<\/li>\n<li>From the Sales table, drag OrderDate to the Field property.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd31.png?w=1000\"\/><\/p>\n<ul>\n<li>Add a clustered bar chart to the report.<\/li>\n<li>Add SalesPersonFullName (from the Salespeople table) to the Axis property. Add SaleAmount (from Sales table) and GoalAmount(from Goals table) to the Value property.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd32.png?w=1000\"\/><\/p>\n<ul>\n<li>Your report should look like this:<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd33.png?w=1000\"\/><\/p>\n<ul>\n<li>You can clearly how the team is doing in relationship to their goal. As Salespeople make sales or enter goals into PowerApps, this dashboard will update. You can experiment with this by either inserting sales for Lana in Azure Data Studio and adding a goal for her in PowerApps for July, 2019. Come back to Power BI Desktop and click \u201cRefresh\u201d and see the new data in the report.<\/li>\n<\/ul>\n<p>We have a hidden MVP in this solution in Azure Active Directory. Azure Active Directory users are the sharing mechanism in both PowerApps and Power BI. We can also grant AAD permissions to Azure SQL Database. This allows us to have a single sign-on between these products and easily know what users have access to which resources. This might seem trival and simple to people familiar with the Microsoft ecosystem, but it is very difficult to accomplish in competitive products.<\/p>\n<p>And that\u2019s it! We just created a great tool with PowerApps and Power BI. You can see that integration between these products is frictionless and powerful!<\/p>\n<p><img decoding=\"async\" alt=\"Ike\" class=\"alignnone size-full wp-image-22359\" data-attachment-id=\"22359\" data-comments-opened=\"1\" data-image-description=\"\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Ike\" data-large-file=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/ike.png?w=347\" data-medium-file=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/ike.png?w=246\" data-orig-file=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/ike.png\" data-orig-size=\"347,423\" data-permalink=\"https:\/\/sterlingsdotlife.wordpress.com\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/ike\/\" src=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/ike.png?w=1000\"\/><\/p>\n<p>\u00a0<\/p>\n<p>About the Author Ike Ellis<\/p>\n<p>With over 18 years of experience in databases and a current Microsoft MVP, Ike has been Microsoft certified since the beginning, currently holding an MCDBA, MCSE, MCSD, and MCT.<\/p>\n<p>Ike is the General Manager of Data &amp; AI for Solliance. We have a full team of cloud data engineers and data scientists.\u00a0\u00a0 We specialize in building highly scalable data solutions for any size of organization.<\/p>\n<p>Ike is a partner in Crafting Bytes, a San Diego software studio and Data Engineering group. We build software and BI solutions for companies all around the country.<\/p>\n<p>In 2010, Ike founded the San Diego Tech Immersion Group (SDTIG). It has grown to be the largest user group in San Diego with over 125 active members including three other Microsoft MVPs. It is a technical book club that reads a book on a significant technical topic. Recent topics include Linux on Microsoft Azure, Angular 2\/TypeScript, Data on Azure, Python for Data Scientists, and Docker\/DevOps.\u00a0\u00a0 In July 2018, SDTIG started a track on Docker\/Kubernetes. We will start a new track on Databricks\/Spark in November 2018. You can join virtually and watch the youtube live stream: www.sdtig.com<\/p>\n<p>Ike leads the San Diego Power BI and PowerApps user group that meets monthly. Find out more at <a href=\"https:\/\/www.pbiusergroup.com\/communities\/community-home?CommunityKey=a08275c5-90cb-4ba8-905b-646462aa1044\">https:\/\/www.pbiusergroup.com\/communities\/community-home?CommunityKey=a08275c5-90cb-4ba8-905b-646462aa1044<\/a><\/p>\n<p>For more information, see www.ikeellis.com<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The first of an industry best practices series is by PowerApps MVPs like Ike Ellis where he highlights how you can create a solution that enables a mobile sales force to update their own Power BI reports.<\/p>\n","protected":false},"author":135,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ms_queue_id":[],"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","_alt_title":"","ms-ems-related-posts":[],"footnotes":""},"audience":[3378],"content-type":[],"job-role":[],"product":[3473],"property":[],"topic":[3421],"coauthors":[2097],"class_list":["post-5884","post","type-post","status-publish","format-standard","hentry","audience-it-professional","product-power-apps","topic-application-modernization"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Creating Updateable Power BI Reports with PowerApps by Ike Ellis - Microsoft Power Platform Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Creating Updateable Power BI Reports with PowerApps by Ike Ellis - Microsoft Power Platform Blog\" \/>\n<meta property=\"og:description\" content=\"The first of an industry best practices series is by PowerApps MVPs like Ike Ellis where he highlights how you can create a solution that enables a mobile sales force to update their own Power BI reports.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/power-apps\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Power Platform Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-09-09T19:50:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-11T15:02:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd1.png?w=1000\" \/>\n<meta name=\"author\" content=\"Charles Sterling\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Charles Sterling\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/\"},\"author\":[{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/author\/charles-sterling\/\",\"@type\":\"Person\",\"@name\":\"Charles Sterling\"}],\"headline\":\"Creating Updateable Power BI Reports with PowerApps by Ike Ellis\",\"datePublished\":\"2019-09-09T19:50:37+00:00\",\"dateModified\":\"2025-06-11T15:02:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/\"},\"wordCount\":2948,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd1.png?w=1000\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/\",\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/\",\"name\":\"Creating Updateable Power BI Reports with PowerApps by Ike Ellis - Microsoft Power Platform Blog\",\"isPartOf\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd1.png?w=1000\",\"datePublished\":\"2019-09-09T19:50:37+00:00\",\"dateModified\":\"2025-06-11T15:02:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/#primaryimage\",\"url\":\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd1.png?w=1000\",\"contentUrl\":\"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd1.png?w=1000\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Creating Updateable Power BI Reports with PowerApps by Ike Ellis\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#website\",\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/\",\"name\":\"Microsoft Power Platform Blog\",\"description\":\"Innovate with Business Apps\",\"publisher\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization\",\"name\":\"Microsoft Power Platform Blog\",\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png\",\"contentUrl\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png\",\"width\":194,\"height\":145,\"caption\":\"Microsoft Power Platform Blog\"},\"image\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/person\/f3c7c897b98652deaf3a9e4bbdf1fc68\",\"name\":\"Charles Sterling\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/663b56784373f70133087f6c7349161274ee3d986d29b3259702d42014aa884a?s=96&d=mm&r=g2a733db2d8e56aa3198b343493d086c1\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/663b56784373f70133087f6c7349161274ee3d986d29b3259702d42014aa884a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/663b56784373f70133087f6c7349161274ee3d986d29b3259702d42014aa884a?s=96&d=mm&r=g\",\"caption\":\"Charles Sterling\"},\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/author\/chass\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Creating Updateable Power BI Reports with PowerApps by Ike Ellis - Microsoft Power Platform Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/","og_locale":"en_US","og_type":"article","og_title":"Creating Updateable Power BI Reports with PowerApps by Ike Ellis - Microsoft Power Platform Blog","og_description":"The first of an industry best practices series is by PowerApps MVPs like Ike Ellis where he highlights how you can create a solution that enables a mobile sales force to update their own Power BI reports.","og_url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/power-apps\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/","og_site_name":"Microsoft Power Platform Blog","article_published_time":"2019-09-09T19:50:37+00:00","article_modified_time":"2025-06-11T15:02:11+00:00","og_image":[{"url":"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd1.png?w=1000","type":"","width":"","height":""}],"author":"Charles Sterling","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Charles Sterling","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/#article","isPartOf":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/"},"author":[{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/author\/charles-sterling\/","@type":"Person","@name":"Charles Sterling"}],"headline":"Creating Updateable Power BI Reports with PowerApps by Ike Ellis","datePublished":"2019-09-09T19:50:37+00:00","dateModified":"2025-06-11T15:02:11+00:00","mainEntityOfPage":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/"},"wordCount":2948,"commentCount":0,"publisher":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization"},"image":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/#primaryimage"},"thumbnailUrl":"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd1.png?w=1000","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/","url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/","name":"Creating Updateable Power BI Reports with PowerApps by Ike Ellis - Microsoft Power Platform Blog","isPartOf":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/#primaryimage"},"image":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/#primaryimage"},"thumbnailUrl":"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd1.png?w=1000","datePublished":"2019-09-09T19:50:37+00:00","dateModified":"2025-06-11T15:02:11+00:00","breadcrumb":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/#primaryimage","url":"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd1.png?w=1000","contentUrl":"https:\/\/sterlingsdotlife.files.wordpress.com\/2019\/09\/090919_1758_creatingupd1.png?w=1000"},{"@type":"BreadcrumbList","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/09\/09\/creating-updateable-power-bi-reports-with-powerapps-by-ike-ellis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/"},{"@type":"ListItem","position":2,"name":"Creating Updateable Power BI Reports with PowerApps by Ike Ellis"}]},{"@type":"WebSite","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#website","url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/","name":"Microsoft Power Platform Blog","description":"Innovate with Business Apps","publisher":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization","name":"Microsoft Power Platform Blog","url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png","contentUrl":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png","width":194,"height":145,"caption":"Microsoft Power Platform Blog"},"image":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/person\/f3c7c897b98652deaf3a9e4bbdf1fc68","name":"Charles Sterling","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/663b56784373f70133087f6c7349161274ee3d986d29b3259702d42014aa884a?s=96&d=mm&r=g2a733db2d8e56aa3198b343493d086c1","url":"https:\/\/secure.gravatar.com\/avatar\/663b56784373f70133087f6c7349161274ee3d986d29b3259702d42014aa884a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/663b56784373f70133087f6c7349161274ee3d986d29b3259702d42014aa884a?s=96&d=mm&r=g","caption":"Charles Sterling"},"url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/author\/chass\/"}]}},"bloginabox_animated_featured_image":null,"bloginabox_display_generated_audio":false,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Power Platform Blog","distributor_original_site_url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/5884","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/users\/135"}],"replies":[{"embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/comments?post=5884"}],"version-history":[{"count":1,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/5884\/revisions"}],"predecessor-version":[{"id":130785,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/5884\/revisions\/130785"}],"wp:attachment":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/media?parent=5884"}],"wp:term":[{"taxonomy":"audience","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/audience?post=5884"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/content-type?post=5884"},{"taxonomy":"job-role","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/job-role?post=5884"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/product?post=5884"},{"taxonomy":"property","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/property?post=5884"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/topic?post=5884"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/coauthors?post=5884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}