Del via


Opplæring: Aktiver brukerdatafunksjoner fra et Python-konsollprogram

For å påkalle Fabric User-datafunksjonselementer fra et konsollprogram i Python, kan du sende HTTP-forespørsler til funksjonsendepunktet som må utføres. I denne hurtigstarten lærer du hvordan du konfigurerer en Python-app ved hjelp av Visual Studio Code.

Forutsetninger

Opprette en Microsoft Entra-app

Følgende trinn forklarer hvordan du konfigurerer støtte for en ReactJS-applikasjon i Microsoft Entra.

  1. Registrer et program ved hjelp av trinnene som er beskrevet på Hurtigstart: Registrer et program med Microsoft-identitetsplattformen.

  2. Verdiene for Microsoft Entra-appens program-ID (klient) og katalog-ID (leier) vises i Sammendrag-boksen. Registrer disse verdiene fordi de er nødvendige senere.

  3. Under listen Behandle velger du API-tillatelser, og deretter Legg til tillatelse.

  4. Legg til PowerBI-tjenesten, velg Delegerte tillatelser, og velg UserDataFunction.Execute.All eller element. Utfør.Alle tillatelser. Bekreft at administratorsamtykke ikke er nødvendig.

  5. Gå tilbake til Behandle-innstillingen , og velg Godkjenning>Legg til en plattform>Enkeltsideprogram.

  6. For lokale utviklingsformål legger du til http://localhost:3000 under Omadresser URIer og bekrefter at programmet er aktivert for autorisasjonskodeflyten med Proof Key for Code Exchange (PKCE). Velg Konfigurer-knappen for å lagre endringene. Hvis programmet støter på en feil relatert til forespørsler om kryssopprinnelse, legger du til plattformen for mobil- og skrivebordsprogrammer i forrige trinn med samme omdirigerings-URI.

  7. Rull ned til Avanserte innstillinger, og velg Ja for Aktiver følgendeunder Tillat offentlige klientflyter.

Opprett et konsollprogram

  1. Funksjonen må være offentlig tilgjengelig. Hold pekeren over navnet på funksjonen i funksjonsutforskeren, og velg ellipseikonet (...) som vises, og velg deretter Egenskaper. Aktiver offentlig tilgangi Egenskaper-ruten som åpnes. Du bør også notere deg offentlige URL-adressen du kan bruke i Python-programmet.

  2. Opprett en ny mappe for Python-appen, for eksempel min-data-app-. Åpne mappen i Visual Studio Code.

  3. Konfigurer det virtuelle Python-miljøet i Visual Studio Code. Hvis du vil opprette lokale miljøer i Visual Studio Code, åpner du kommandopaletten med Ctrl+Shift+P, og deretter søker du etter og velger kommandoen Python: Opprett miljø.

    • Kommandoen presenterer en liste over miljøtyper og velger venv.
    • Velg Python-tolkeversjonen Python 3.11.
  4. Kjør følgende kommando for å aktivere det virtuelle miljøet i Visual Studio Code-terminalen.

    venv\Scripts\activate.bat
    
  5. Deretter kjører du kommandoen for å installere Python-bibliotekene som kreves for dette eksemplet.

    pip install azure-identity, requests 
    
  6. Opprett en app.py fil, og bruk koden til å aktivere elementet for brukerdatafunksjoner.

    from azure.identity import InteractiveBrowserCredential
    import requests
    import json
    
    # Acquire a token
    # DO NOT USE IN PRODUCTION.
    # Below code to acquire token is to test the User data function endpoint and is for the purpose of development only.
    # For production, always register an application in a Microsoft Entra ID tenant and use the appropriate client_id and scopes.
    
    
    app = InteractiveBrowserCredential()
    scp = 'https://analysis.windows.net/powerbi/api/user_impersonation'
    result = app.get_token(scp)
    
    if not result.token:
        print('Error:', "Could not get access token")
    
    # Prepare headers
    headers = {
        'Authorization': f'Bearer {result.token}',
        'Content-Type': 'application/json'
    }
    
    FUNCTION_URL = '<REPLACE WITH USER DATA FUNCTION URL>'
    
    # Prepare the request data
    data = '{"name": "John"}' # JSON payload to send to the Azure Function
    headers = {
        #  "Authorization": f"Bearer {access_token}",
        "Content-Type": "application/json"
            }
    
    try:   
        # Call the user data function public URL 
        response = requests.post(FUNCTION_URL, json=data, headers=headers)
        response.raise_for_status()
        print(json.dumps(response.json()))
    except Exception as e:
        print({"error": str(e)}, 500)
    
    if __name__ == "__main__":
        app.run(debug=True)
    
    

    Notat

    Eksemplet er for utviklingsformål bare. Oppdater programmet til å bruke Microsoft Entra ID-godkjenning før du bruker programmet for et produksjonsbrukstilfelle.

Aktivere en funksjon fra et eksternt program

Funksjoner kan aktiveres ved å utstede et REST-kall til URL-adressen for endepunktet. Velg funksjonen du vil aktivere i Funksjonsutforsker, og velg URL-adresse for kopieringsfunksjon. Du kan også aktivere eller deaktivere muligheten til å bruke denne URL-adressen eksternt fra Egenskaper-menyen.

Skjermbilde som viser hvordan du feilsøker lokalt med breakpoints.

Bruk deretter denne URL-adressen i programmet til å aktivere funksjonen. Se Aktivere brukerdatafunksjoner fra et program

Utdataskjema

Når du aktiverer en brukerdatafunksjon fra et eksternt program, har utdataskjemaet følgende format:

{
  "functionName": "hello_fabric",
  "invocationId": "1234567890", 
  "status": "Succeeded | BadRequest | Failed | Timeout | ResponseTooLarge",
  "output": /*shows the result of the function dependeing on the output type*/,
  "errors": [
     {
       "name": "Error name",
       "message": "Error message",
       "properties": {
          /*Key value pairs custom to error*/
       }
     },
  ]
}

Følgende egenskaper returneres:

  • functionName: Navnet på funksjonen som ble utført.
  • invocationId: Aktiverings-ID-en for kjøring av en funksjon.
  • status: Resultatet av funksjonens utførelse og støttede verdier er Succeeded, BadRequest, FailedTimeout , og ResponseTooLarge.
  • utdata: Utdataverdien som returneres av funksjonen.
  • feil: Hvis det ble registrert feil, returnerer dette en liste over hver feil med navn, feilmelding og feilegenskaper.

Svarkoder

Funksjonen returnerer følgende HTTP-koder som følge av kjøringen.

svarkode Budskap Beskrivelse
200 Suksess Forespørselen var vellykket.
400 Ugyldig forespørsel Forespørselen var ikke gyldig. Dette svaret kan skyldes manglende eller feil inndataparameterverdier, datatyper eller navn. Denne responsen kan også skyldes at offentlig tilgang er slått av for en funksjon.
403 Forbudt Svaret var for stort og aktiveringen mislyktes.
408 Be om tidsavbrudd Forespørselen mislyktes på grunn av at kjøringen tok mer enn 200 sekunder.
409 Konflikt Forespørselen kunne ikke fullføres på grunn av en motstridende tilstand. Dette kan være forårsaket av et ubehandlet unntak eller en feil med brukerlegitimasjon.
422 Ugyldig forespørsel Forespørselen mislyktes på grunn av en UserThrownError som ble utløst i funksjonen.
500 Intern serverfeil Forespørselen mislyktes på grunn av en intern feil i tjenesten.

Feilsøking og testing

Feilsøk programmet i Visual Studio Code ved hjelp av python-feilsøkingsprogrammet. Legg til breakpoints om nødvendig for å feilsøke hvis det oppstår problemer. Finn ut mer

Neste trinn