Forum Discussion

EddieE's avatar
EddieE
Regular Visitor
3 years ago
Solved

PowerBIIntegration.Refresh() PowerApp workaround??

Hi,
Does anyone know of a workaround for the PowerBIIntegration.Refresh() function inside a PA Visual using an Existing PowerApp?? I've just finished a PowerApp - built separately, not using 'Create New', to leverage the Tablet format - and find I cannot use the PowerBIIntegration.Refresh() function, which I need to 😞 

 

We are using Direct Query to SQL so any data adds/edits update in the data source but without the PowerBIIntegration.Refresh() option, users need to reload their page in the Service to see their new data. Such a stupid and finicky feature ...

 

Thanks

  • EddieE's avatar
    EddieE
    3 years ago

    lbendlin 

    Thanks mate. I was hoping for a better outcome - not to be.

     

    Seems this should be something that MS could look at fixing though, it's been an idea for 4+ years now. My current 'workaround' is for users to reload their browser to see their new data, ie

     

    1. user clicks company logo, triggers a bookmark that displays the app

    2. user makes edits / adds new data and submit form/s

    3. user clicks bookmark icon to 'go back to report' / hide app

    4. user reloads their browser to see new data

     

    Not ideal but works.

     

    Thanks again.

9 Replies

  • I identified this topic today after encountering a similar issue. I successfully resolved it by manually editing one of the control JSON files. As a result, my application can now utilise PowerBIIntegration.Refresh() with Tablet layout.

    1. Download a copy of your App
    2. Change file extention from ".msapp" to ".zip"
    3. Open the zip file, find & copy "1.json" (in Controls folder) to your local pc 
    4. Open your local 1.json and locate section similar to below

     

            "Type": "ControlInfo",
            "Name": "PowerBIIntegration",
            "HasDynamicProperties": false,
            "Template": {
              "Id": "http://microsoft.com/appmagic/hostcontrol",
              "Version": "1.6.0",
              "LastModifiedTimestamp": "0",
              "Name": "hostControl",
              "FirstParty": true,
              "IsPremiumPcfControl": false,
              "IsCustomGroupControlTemplate": false,
              "CustomGroupControlTemplateName": "",
              "IsComponentDefinition": false,
              "HostType": "Dynamic",​

     

    • Add HostService section below

     

              "HostService": {
                "Type": "ServiceInfo",
                "Name": "PowerBIIntegration",
                "ServiceKind": "HostWadl",
                "WadlMetadata": {
                  "WadlXml": "<application xmlns:xml=\"http://www.w3.org/XML/1998/namespace\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:service=\"https://powerbi.com\" xmlns:siena=\"http://schemas.microsoft.com/MicrosoftProjectSiena/WADL/2014/11\" siena:serviceId=\"PowerBI\" xmlns=\"http://wadl.dev.java.net/2009/02\">\n                    <doc title=\"PowerApps integration\" />\n                    <resources base=\"https://powerbi.com\">\n                        <resource path=\"/triggers/refresh\">\n                            <method siena:requiresAuthentication=\"false\" name=\"POST\" id=\"Refresh\" siena:isHostFunction=\"true\">\n                                <doc title=\"Triggers a refresh of the PowerBI Report.\" />\n                                <request>\n                                    <param style=\"query\" name=\"api-version\" type=\"xs:string\" required=\"true\" fixed=\"2015-02-01-preview\">\n                                        <doc title=\"The api version\" />\n                                    </param>\n                                    <representation mediaType=\"application/json\" />\n                                </request>\n                            </method>\n                        </resource>\n                    </resources>\n                </application>"
                }
              },​

     

    • Replace original "1.json" with editied 1.json using 7-Zip or WinRAR
    • Change extension back to ".msapp"
    • Import App
    • liamf90's avatar
      liamf90
      Regular Visitor

      You Sir, are a hero.


      I found that changing the .msapp file to .zip then back again breaks the file and it cannot be imported back again. What worked for me was opening the .msapp file with WinRAR, then opening and editing the 1.json file from WINRAR

  • There is no workaround, you need to start over.

    • EddieE's avatar
      EddieE
      Regular Visitor

      lbendlin 

      Thanks mate. I was hoping for a better outcome - not to be.

       

      Seems this should be something that MS could look at fixing though, it's been an idea for 4+ years now. My current 'workaround' is for users to reload their browser to see their new data, ie

       

      1. user clicks company logo, triggers a bookmark that displays the app

      2. user makes edits / adds new data and submit form/s

      3. user clicks bookmark icon to 'go back to report' / hide app

      4. user reloads their browser to see new data

       

      Not ideal but works.

       

      Thanks again.

      • lbendlin's avatar
        lbendlin
        Super User

        If it's any consolation - once you started over and connect to a SQL server table in Direct Query mode you can make this a nearly seemless experience for your users. Push the PowerApps button which writes the user comments to the SQL table and then issues a Powr BI refresh which surprisingly works despite fact that the data source is direct query, and a couple seconds later the user has visual confirmation of the changes they just made.

         

        What we really need is CDC  - the ability to write into the dataset that is currently in memory, and at the same time to write back into the data source. It can be done - other BI vendors have shown that.