Delen via


Referenties programmatisch configureren voor Power BI

VAN TOEPASSING OP: App is eigenaar van gegevens die gebruiker eigenaar is van gegevens

Als u referenties programmatisch wilt configureren voor Power BI, volgt u de stappen in dit artikel. Als u referenties programmatisch configureert, kunt u ook referenties versleutelen.

Notitie

  • De aanroepende gebruiker moet een semantische modeleigenaar of een gatewaybeheerder zijn. U kunt ook een service-principal gebruiken. De service-principal kan bijvoorbeeld de semantische modeleigenaar zijn.
  • Cloudgegevensbronnen en de bijbehorende referenties worden beheerd op gebruikersniveau.

De referentiestroom voor gegevensbronnen bijwerken

  1. Ontdek de gegevensbronnen van het semantische model door Get Datasources aan te roepen. De hoofdtekst van het antwoord voor elke gegevensbron bevat het type, de verbindingsgegevens, de gateway en de gegevensbron-id.

    // Select a datasource
    var datasources = pbiClient.Datasets.GetDatasources(datasetId).Value;
    var datasource = datasources.First();
    
  2. Bouw de referentietekenreeks op basis van de voorbeelden van updategegevensbronnen. De inhoud van de referentietekenreeks is afhankelijk van het type referenties.

    var credentials =  new BasicCredentials(username: "username", password :"*****");
    

    Notitie

    Als u cloudgegevensbronnen gebruikt, volgt u de volgende stappen in deze sectie niet. Roep De gegevensbron bijwerken aan om de referenties in te stellen met behulp van de gateway-id en de gegevensbron-id die u in stap 1 hebt verkregen.

  3. Haal de openbare sleutel van de gateway op door Get Gateway aan te roepen.

    var gateway = pbiClient.Gateways.GetGatewayById(datasource.GatewayId);
    
  4. Versleutel de referenties.

    var credentialsEncryptor = new AsymmetricKeyEncryptor(gateway.publicKey);
    
  5. Bouw de referentiegegevens met versleutelde referenties.

    Gebruik de klasse AsymetricKeyEncryptor met de openbare sleutel die u in stap 3 hebt opgehaald.

    var credentialDetails = new CredentialDetails(
            credentials,
            PrivacyLevel.Private,
            EncryptedConnection.Encrypted,
            credentialsEncryptor);
    
  6. Stel referenties in door Update Datasource aan te roepen.

    pbiClient.Gateways.UpdateDatasource(datasource.GatewayId.Value, datasource.DatasourceId.Value, new UpdateDatasourceRequest(credentialDetails));
    

Een nieuwe gegevensbron configureren voor een gegevensgateway

  1. Installeer de on-premises gegevensgateway op uw computer.

  2. Haal de gateway-id en de openbare sleutel op door Gateways ophalen aan te roepen.

    // Select a gateway
    var gateways = pbiClient.Gateways.GetGateways().Value;
    var gateway = gateways.First();
    
  3. Bouw referentiedetails door de procedure te volgen die wordt beschreven in de stroom referenties bijwerken voor gegevensbronnen met behulp van de openbare gatewaysleutel die u in stap 2 hebt opgehaald.

  4. Bouw de hoofdtekst van de aanvraag.

    var request = new PublishDatasourceToGatewayRequest(
            dataSourceType: "SQL",
            connectionDetails: "{\"server\":\"myServer\",\"database\":\"myDatabase\"}",
            credentialDetails: credentialDetails,
            dataSourceName: "my sql datasource");
    
  5. Roep de Datasource-API maken aan.

    pbiClient.Gateways.CreateDatasource(gateway.Id, request);
    

Referentietypen

Wanneer u Gegevensbron maken aanroept of Gegevensbron bijwerkt vanuit de Power BI REST API op een on-premises bedrijfsgateway, versleutelt u de waarde van de referenties met behulp van de openbare sleutel van de gateway.

Notitie

.NET SDK v3 kan ook de volgende .NET SDK v2-voorbeelden uitvoeren.

Windows en basisreferenties

// Windows credentials
var credentials = new WindowsCredentials(username: "john", password: "*****");

// Or

// Basic credentials
var credentials = new BasicCredentials(username: "john", password: "*****");

var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);

Sleutelreferenties

var credentials = new KeyCredentials("TestKey");
var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);

OAuth2-referenties

var credentials = new OAuth2Credentials("TestToken");
var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);

Anonieme referenties

var credentials = new AnonymousCredentials();
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.NotEncrypted);

Probleemoplossing

Er worden geen gateway- en gegevensbron-id gevonden bij het aanroepen van gegevensbronnen

Dit probleem betekent dat het semantische model niet is gebonden aan een gateway. Wanneer u een nieuw semantisch model maakt, wordt er automatisch een gegevensbron zonder referenties gemaakt op de cloudgateway van de gebruiker voor elke cloudverbinding. De cloudgateway wordt gebruikt om de referenties voor cloudverbindingen op te slaan.

Nadat u het semantische model hebt gemaakt, wordt er een automatische binding gemaakt tussen het semantische model en een geschikte gateway, die overeenkomende gegevensbronnen voor alle verbindingen bevat. De automatische binding mislukt als er geen geschikte gateway of gateways zijn.

Als u on-premises semantische modellen gebruikt, maakt u de ontbrekende on-premises gegevensbronnen en verbindt u het semantische model handmatig aan een gateway met behulp van Bind To Gateway.

Als u gateways wilt detecteren die kunnen worden verbonden, gebruikt u Discover Gateways.