Condividi tramite


TripPin parte 1 - Connettore dati per un servizio OData

Questa esercitazione in più parti illustra la creazione di una nuova estensione dell'origine dati per Power Query. L'esercitazione è destinata a essere eseguita in sequenza: ogni lezione si basa sul connettore creato nelle lezioni precedenti, aggiungendo in modo incrementale nuove funzionalità al connettore.

In questa lezione verranno illustrate le procedure seguenti:

  • Creare un nuovo progetto data Connessione or usando Power Query SDK
  • Creare una funzione di base per eseguire il pull dei dati da un'origine
  • Testare il connettore in Power Query SDK
  • Registrare il connettore in Power BI Desktop

Creazione di un connettore OData di base

In questa sezione viene creato un nuovo progetto Data Connessione or, vengono fornite alcune informazioni di base e testato in Power Query SDK.

Aprire Visual Studio Code. È consigliabile creare una nuova area di lavoro e quindi creare un nuovo progetto di estensione. Per creare il nuovo progetto di estensione, aprire lo strumento di esplorazione e nella sezione Power Query SDK selezionare il pulsante Crea un progetto di estensione.

Screenshot che evidenzia l'opzione per creare un progetto di estensione di Power Query SDK.

Dopo aver selezionato questo pulsante, viene richiesto di immettere il nome del nuovo progetto. Assegnare al nuovo progetto TripPinil nome .

Screenshot del nuovo progetto di estensione creato denominato TripPin con Power Query SDK.

Aprire il file TripPin.pq e incollarlo nella definizione del connettore seguente.

section TripPin;

[DataSource.Kind="TripPin", Publish="TripPin.Publish"]
shared TripPin.Feed = Value.ReplaceType(TripPinImpl, type function (url as Uri.Type) as any);

TripPinImpl = (url as text) =>
    let
        source = OData.Feed(url)
    in
        source;

// Data Source Kind description
TripPin = [
    Authentication = [
        Anonymous = []
    ],
    Label = "TripPin Part 1 - OData"
];

// Data Source UI publishing description
TripPin.Publish = [
    Beta = true,
    Category = "Other",
    ButtonText = { "TripPin OData", "TripPin OData" }
];

Questa definizione del connettore contiene:

  • Un record di definizione dell'origine dati per il connettore TripPin
  • Dichiarazione che Implicit (Anonymous) è l'unico tipo di autenticazione per questa origine
  • Funzione (TripPinImpl) con un'implementazione che chiama OData.Feed
  • Funzione condivisa (TripPin.Feed) che imposta il tipo di parametro su Uri.Type
  • Record di pubblicazione dell'origine dati che consente di visualizzare il connettore nella finestra di dialogo Recupera dati di Power Query

Aprire il file TripPin.query.pq. Sostituire il contenuto corrente con una chiamata alla funzione esportata.

TripPin.Feed("https://services.odata.org/v4/TripPinService/")

Prima di poter testare il connettore, è necessario compilarlo. A tale scopo, passare al terminale e selezionare l'opzione Esegui attività di compilazione ( tasto di scelta rapida CTRL + MAIUSC + B). È consigliabile scegliere l'opzione MakePQX , ma entrambe le opzioni disponibili per la compilazione dovrebbero funzionare.

Screenshot che illustra l'esecuzione di un'attività di compilazione prima di testare il connettore.

Il risultato di questa operazione crea una nuova cartella Bin in cui il connettore compilato viene archiviato come TripPin.mez.

Screenshot della nuova cartella bin creata in cui si trova il file del connettore con un'estensione mez e un nome TripPin.mez.

Il <file project.query.pq> viene usato per testare l'estensione senza doverlo distribuire nella cartella bin di Power BI Desktop. Uso degli strumenti disponibili in Power Query SDK:

  1. Selezionare l'opzione Imposta credenziali.
  2. Selezionare TripPin come origine dati.
  3. Selezionare il file TripPin.query.pq come file di query/test.
  4. Selezionare anonimo come tipo di autenticazione.

Nella finestra di dialogo di output viene visualizzato un messaggio che conferma che è stata impostata una credenziale per l'origine dati e i dettagli per ogni credenziale creata.

Screenshot della finestra di dialogo di output che mostra i dettagli dell'autenticazione appena creata per la connessione TripPin usando l'URL passato nel file con estensione query.pq.

Nota

È sempre possibile cancellare le credenziali usando il comando Cancella tutte le credenziali o controllare le credenziali disponibili usando il comando Elenca credenziali all'interno degli strumenti di Power Query SDK.

Con le credenziali ora disponibili, è possibile selezionare il file TripPin.query.pq e selezionare il pulsante destro del documento per valutare il file di power query corrente oppure usare l'opzione Valuta file corrente dagli strumenti di Power Query SDK.

Screenshot delle più alternative per valutare il file di Power Query corrente.

Nella finestra di dialogo di output viene visualizzato un messaggio dei risultati della valutazione e una nuova finestra con il nome PQTest risultato.

Screenshot della finestra dei risultati PQTest che mostra i risultati della valutazione eseguita.

La finestra dei risultati PQTest è costituita da tre schede:

  • Output: visualizza un'anteprima dei dati in una griglia.
  • Riepilogo: dettagli di valutazione generali, ad esempio StartTime, EndTime, Duration, il file usato per la valutazione, lo stato e altro ancora.
  • DataSource: fornisce informazioni sull'origine dati usata dal tipo, dal nome della funzione e dal percorso.

È possibile provare alcuni URL OData diversi nel file di test per vedere in che modo vengono restituiti risultati diversi. Ad esempio:

  • https://services.odata.org/v4/TripPinService/Me
  • https://services.odata.org/v4/TripPinService/GetPersonWithMostFriends()
  • https://services.odata.org/v4/TripPinService/People

Il file TripPin.query.pq può contenere istruzioni singole, istruzioni let o documenti di sezione completi.

let
    Source = TripPin.Feed("https://services.odata.org/v4/TripPinService/"),
    People = Source{[Name="People"]}[Data],
    SelectColumns = Table.SelectColumns(People, {"UserName", "FirstName", "LastName"})
in
    SelectColumns

Importante

Assicurarsi di salvare sempre i file mentre si lavora. Se si apportano modifiche al file TripPin.pq, è consigliabile attivare sempre un'attività di compilazione successiva per assicurarsi di eseguire il test sulla versione più recente del connettore.

Aprire Fiddler per acquisire il traffico HTTP ed eseguire la query. Verranno visualizzate alcune richieste diverse per services.odata.org, generate dal processo del contenitore mashup. È possibile notare che l'accesso all'URL radice del servizio comporta uno stato 302 e un reindirizzamento alla versione più lunga dell'URL. I reindirizzamenti seguenti sono un altro comportamento che si ottiene "gratuitamente" dalle funzioni della libreria di base.

Un aspetto da notare se si esaminano gli URL è che è possibile visualizzare la riduzione della query che si è verificata con l'istruzione SelectColumns . https://services.odata.org/v4/TripPinService/People?$select=UserName%2CFirstName%2CLastName

Se si aggiungono altre trasformazioni alla query, è possibile vedere come influiscono sull'URL generato.

Questo comportamento è importante da notare. Anche se non è stata implementata la logica di riduzione esplicita, il connettore eredita queste funzionalità dalla funzione OData.Feed . Le istruzioni M sono componibili: i contesti di filtro verranno trasmessi da una funzione a un'altra, quando possibile. Questo concetto è simile al modo in cui le funzioni dell'origine dati usate all'interno del connettore ereditano il contesto di autenticazione e le credenziali. Nelle lezioni successive si sostituirà l'uso di OData.Feed, che include funzionalità di riduzione native, con Web.Contents, che non lo è. Per ottenere lo stesso livello di funzionalità, è necessario usare l'interfaccia e implementare la Table.View propria logica di riduzione esplicita.

Caricamento dell'estensione in Power BI Desktop

Per usare l'estensione in Power BI Desktop, è necessario copiare il file di output del progetto connettore (TripPin.mez) nella directory Custom Connessione ors.

  1. Creare una directory [Documenti]\Power BI Desktop\Connessione ors personalizzati.
  2. Copiare il file di estensione (TripPin.mez) in questa directory.
  3. Selezionare l'opzione (Scelta non consigliata) Consentire il caricamento di qualsiasi estensione senza convalida o avviso in Power BI Desktop (in Opzioni file>e impostazioni>Opzioni>estensioni dati di sicurezza).>
  4. Riavviare Power BI Desktop.
  5. Selezionare Recupera dati > altro per visualizzare la finestra di dialogo Recupera dati.

È possibile individuare l'estensione digitandone il nome nella casella di ricerca.

Finestra di dialogo Recupera dati.

Selezionare il nome della funzione e selezionare Connessione. Viene visualizzato un messaggio di terze parti: selezionare Continua per continuare. Viene ora visualizzata la finestra di dialogo di chiamata della funzione. Immettere l'URL radice del servizio (https://services.odata.org/v4/TripPinService/) e selezionare OK.

Funzione Invoke.

Poiché è la prima volta che si accede a questa origine dati, si riceverà una richiesta di credenziali. Verificare che sia selezionato l'URL più breve e quindi selezionare Connessione.

Immagine del prompt delle credenziali impostato su Anonimo e l'impostazione del livello impostata sull'URL più breve.

Si noti che invece di ottenere una semplice tabella di dati, viene visualizzato lo strumento di navigazione. Questo perché la funzione OData.Feed restituisce una tabella con metadati speciali sopra di essa che l'esperienza di Power Query sa visualizzare come tabella di spostamento. Questa procedura dettagliata illustra come creare e personalizzare una tabella di spostamento personalizzata in una lezione futura.

Tabella di spostamento.

Selezionare la tabella Me e quindi trasforma dati. Si noti che le colonne dispongono già di tipi assegnati (bene, la maggior parte di essi). Questa è un'altra funzionalità della funzione OData.Feed sottostante. Se si osservano le richieste in Fiddler, si noterà che il documento di $metadata del servizio è stato recuperato. L'implementazione OData del motore esegue automaticamente questa operazione per determinare lo schema, i tipi di dati e le relazioni del servizio.

Me Record.

Conclusione

In questa lezione è stata illustrata la creazione di un connettore semplice basato sulla funzione di libreria OData.Feed . Come si è visto, è necessaria poca logica per abilitare un connettore completamente funzionale sulla OData funzione di base. Altre funzioni abilitate per l'estendibilità, ad esempio ODBC. DataSource offre funzionalità simili.

Nella lezione successiva si sostituirà l'uso di OData.Feed con una funzione meno idonea: Web.Contents. Ogni lezione implementa più funzionalità del connettore, tra cui il paging, il rilevamento di metadati/schema e la riduzione delle query alla sintassi di query OData, fino a quando il connettore personalizzato non supporta la stessa gamma di funzionalità di OData.Feed.

Passaggi successivi

TripPin Part 2 - Data Connessione or per un servizio REST