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

The ultimate Microsoft Fabric, Power BI, Azure AI & SQL learning event! Join us in Las Vegas from March 26-28, 2024. Use code MSCUST for a $100 discount. Register Now

Reply
GunterM
Regular Visitor

Patching an Online DirectQuery datasource

Hi,

 

I can execute a patch request to set the credentials of a online directquery datasource using the HttpClient class with no problem. But now I'm looking for a way to do this using the classes of the Microsoft.PowerBI.Api NuGet Package but I cannot find what method to use. I did find a class named GatewayDatasource which looks like the json payload for a patch. But that is as far as I've come... 

 

Thanks

 

Gunter

1 ACCEPTED SOLUTION
eligr
Power BI Team
Power BI Team

Hi!

 

use:

m_client.Gateways.UpdateDatasource(<gatewayId>, <datasourceId>, <request>);

 

where request is

- request {Microsoft.PowerBI.Api.V2.Models.UpdateDatasourceRequest} Microsoft.PowerBI.Api.V2.Models.UpdateDatasourceRequest
- CredentialDetails {Microsoft.PowerBI.Api.V2.Models.CredentialDetails} Microsoft.PowerBI.Api.V2.Models.CredentialDetails
CredentialType "Basic" string
Credentials "{\"credentialData\":[{\"name\":\"username\",\"value\":\"<username>\"},{\"name\":\"password\",\"value\":\"<password>"}]}" string
EncryptedConnection "Encrypted" string
EncryptionAlgorithm "None" string
PrivacyLevel "None" string

 

Eli.

View solution in original post

4 REPLIES 4
eligr
Power BI Team
Power BI Team

Hi!

 

use:

m_client.Gateways.UpdateDatasource(<gatewayId>, <datasourceId>, <request>);

 

where request is

- request {Microsoft.PowerBI.Api.V2.Models.UpdateDatasourceRequest} Microsoft.PowerBI.Api.V2.Models.UpdateDatasourceRequest
- CredentialDetails {Microsoft.PowerBI.Api.V2.Models.CredentialDetails} Microsoft.PowerBI.Api.V2.Models.CredentialDetails
CredentialType "Basic" string
Credentials "{\"credentialData\":[{\"name\":\"username\",\"value\":\"<username>\"},{\"name\":\"password\",\"value\":\"<password>"}]}" string
EncryptedConnection "Encrypted" string
EncryptionAlgorithm "None" string
PrivacyLevel "None" string

 

Eli.

What should be the values for gatewayId and datasourceId?

 

If you are providing the credentials for an Azure SQL or Azure Table Storage datasource, these things do not require an on-premise gateway to access.

 

The V2 API (at least via Nuget) does not return any datasource objects when you request a dataset - therefore no datasource id can be provided.

 

Gateways.GetGateways (or whatever it is called) returns nothing... as I have no on-prem gateways!

Hi.

For cloud data sources, there is a default gateway created by Power BI.

To find out the gateway and datasource ids, use this call: GetBoundGatewayDatasources (https://msdn.microsoft.com/en-us/library/mt732874.aspx)

The SDK equivalent are Datasets.GetGatewayDatasources or Datasets.GetGatewayDatasourcesInGroup

 

Eli.

 

Can you please elaborate on what values should be provided for gatewayId and datasourceIdv-ljerr-msft responded with the same block of code in my request (https://community.powerbi.com/t5/Developer/How-to-update-credentials-of-a-connection-with-V2-API-in-...) but I think you guys are only providing half the answer here.

 

My datasource is Azure SQL (*NOT* Analysis Services), but I'd also like this to work for Azure Table Storage.

 

I can use the Microsoft.PowerBI.Api.V2 classes to:

 

  1. Enumerate my groups to find the group id I want by name via IPowerBIClient.Groups.GetGroupsAsync
  2. Enumerate the reports in the group to find the id of the report by name via IPowerBIClient.Reports.GetReportsInGroupAsync
  3. Each of these reports has a DataSetId, ok great, maybe that provides the gateway/datasourceId.
  4. I get the Dataset via IPowerBIClient.Datasets.GetDatasetByIdInGroupAsync

 

The Dataset object has a Datasources property. However this is NULL. So I find myself at a dead end!

 

A few other frustrations...

 

  • Calling IPowerBIClient.Datasets.GetDatasetsAsync returns an empty list. What the? Surely this should at least return the dataset that is returned by #4 above, plus any other datasets in any other reports in any other groups, i.e. all datasets accessible to the authenticated user.
  • Your samples keep talking about a gatewayId, ok then lets call IPowerBIClient.Gateways.GetGatewaysAsync... and I get nothing back (which makes sense, since I don't have any on-prem gateways running/configured, but your samples keep referring to gatewayId - which makes me think we are talking at cross-purposes re datasets using on-prem gateways vs cloud datasources).

Helpful resources

Announcements
Fabric Community Conference

Microsoft Fabric Community Conference

Join us at our first-ever Microsoft Fabric Community Conference, March 26-28, 2024 in Las Vegas with 100+ sessions by community experts and Microsoft engineering.

February 2024 Update Carousel

Power BI Monthly Update - February 2024

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

Fabric Career Hub

Microsoft Fabric Career Hub

Explore career paths and learn resources in Fabric.

Fabric Partner Community

Microsoft Fabric Partner Community

Engage with the Fabric engineering team, hear of product updates, business opportunities, and resources in the Fabric Partner Community.