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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

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
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

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

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.