Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Grow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.

Reply
devkeydet
Regular Visitor

"Operation is not supported for selector" when using "Update datasources" REST API

I am trying to automate the publishing of a .pbix file, then change the "url" value of the OData datasource, in order to have a way to automation deployment from dev->test->prod.  When I make an http post to:

https://api.powerbi.com/v1.0/myorg/groups/{valid-group-id}/datasets/{valid-dataset-id}/updatedatasou...
...with the following body:
{
  "updateDetails":[
    {
      "connectionDetails":
      {
        "url": "https://new-value.api.crm.dynamics.com/api/data/v8.2"
      },
      "datasourceSelector":
      {        
        "datasourceType": "OData",
        "connectionDetails": 
        {
          "url":"https://old-value.api.crm.dynamics.com/api/data/v8.2"
        }
      }
    }
  ]
}
...the status is 400 with an "Operation is not supported for selector".  However, according to my interpretation of https://msdn.microsoft.com/en-us/library/mt814715.aspx this should be supported.  Any thoughts on why I am getting this error?

5 REPLIES 5
v-ljerr-msft
Employee
Employee

Hi @devkeydet,

 

According to the documentation, we will get status 400 when:

  • Body contains multiple requests with the same datasource selector. 
  • Missing or empty updateDetails in body. 
  • Attempting to update a datasource with invalid connection details. 
  • Datasource type doesn't support update operation. 
  • Attempting to update a connection from cloud to on-premises or on-premises to cloud.

In addition, could you try the solution below to see if it works in your scenario?

 

1. Use Query Parameter in Data Source dialogs(url) to create a the dataset, so that you can change the data source by just modifying the corresponding Parameter.

 

2. Use the the  Set parameters operation(Power BI REST API) to dynamically change the Parameters in your code, which will also change the actual connection (url).

 

3. Use the  Patch data source operation to update the credentials for the changed data source. Reference: https://community.powerbi.com/t5/Developer/Patching-an-Online-DirectQuery-datasource/m-p/351230

 

Regards

Hi,

 

After looking around quite intensely, I believe there isn't an actual answer to the problem posed in this thread. At the moment I'm facing the same issue and am getting especially frustrated with the lack of more in depth information from the REST API.

I have a report that works just fine and for which the datasource can be changed when using the Power BI Desktop app. However trying to accomplish the same using the REST API's is failing.

I'm switching between practically identical databases, both cloud and both authenticated using Basic auth.
The body is (a bit redacted):

{
  "updateDetails": [
    {
      "datasourceSelector": {
        "datasourceType": "Sql",
            "connectionDetails": {
                "server": "server-one.database.windows.net",
                "database": "server-one-database-db"
            }
      },
      "connectionDetails": {
        "server": "server-two.database.windows.net",
        "database": "server-two-database-db"
      }
    }
  ]
}


The response I'm receiving is as follows:

{
    "error": {
        "code": "InvalidRequest",
        "message": "Operation is not supported for selector #23"
    }
}

And... well, that's it actually.

 

From the datasources fetch from the gateway they are listed as, from which I concluded they are authenticated just fine.

{
            "id": "<uuid>",
            "gatewayId": "<uuid of cloud gw>",
            "datasourceType": "Sql",
            "connectionDetails": "{\"server\":\"server-two.database.windows.net\",\"database\":\"server-two-database-db\"}",
            "credentialType": "Basic",
            "credentialDetails": {
                "useEndUserOAuth2Credentials": false
            }
        },{
            "id": "<uuid>",
            "gatewayId": "<uuid of cloud gw>",
            "datasourceType": "Sql",
            "connectionDetails": "{\"server\":\"server-one.database.windows.net\",\"database\":\"server-one-database-db\"}",
            "credentialType": "Basic",
            "credentialDetails": {
                "useEndUserOAuth2Credentials": false
            }
        }

 

Why would it be possible to switch datasources using the desktop app, but fail to do so using the REST API?
Is there a way to get a little bit more information from the API?

 

Regards,

 

Peter

I am facing the same exact issue right now. Did you get any traction?? @v-ljerr-msft  @petermoolenaar 

Hi @TexasBI ,

 

Eventually, support (after some escallation) was able to provide more details and (if memory serves me right) it turned out to be a column which combined (joined) information from tables. The documentation tells that combining information from different sources might be a problem, but apparantly any join could prove to be giving issues.

 

Regards,

 

Peter

Anonymous
Not applicable

I am geeting the same error when I select Update all datasources in workspace.

Helpful resources

Announcements
Europe Fabric Conference

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

Power BI Carousel June 2024

Power BI Carousel June 2024

Check out the June 2024 Power BI update to learn about new features.

2
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.