TripPin bagian 1 - Konektor data untuk layanan OData
Tutorial multi-bagian ini mencakup pembuatan ekstensi sumber data baru untuk Power Query. Tutorial ini dimaksudkan untuk dilakukan secara berurutan—setiap pelajaran dibangun pada konektor yang dibuat dalam pelajaran sebelumnya, secara bertahap menambahkan kemampuan baru ke konektor Anda.
Dalam pelajaran ini, Anda akan:
- Membuat proyek Data Koneksi or baru menggunakan Power Query SDK
- Menulis fungsi dasar untuk menarik data dari sumber
- Menguji konektor Anda di Power Query SDK
- Mendaftarkan konektor Anda di Power BI Desktop
Membuat konektor OData dasar
Di bagian ini, Anda membuat proyek Data Koneksi or baru, memberikan beberapa informasi dasar, dan mengujinya di Power Query SDK.
Buka Visual Studio Code. Kami menyarankan agar Anda membuat ruang kerja baru lalu membuat proyek ekstensi baru. Untuk membuat proyek ekstensi baru, buka penjelajah dan di bagian Power Query SDK pilih tombol Buat proyek ekstensi.
Setelah memilih tombol ini, Anda diminta untuk memasukkan nama proyek baru. Beri nama proyek TripPin
baru ini .
Buka file TripPin.pq dan tempelkan dalam definisi konektor berikut.
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" }
];
Definisi konektor ini berisi:
- Catatan definisi Sumber Data untuk konektor TripPin
- Deklarasi bahwa Implisit (Anonim) adalah satu-satunya jenis autentikasi untuk sumber ini
- Fungsi (
TripPinImpl
) dengan implementasi yang memanggil OData.Feed - Fungsi bersama (
TripPin.Feed
) yang mengatur jenis parameter keUri.Type
- Rekaman penerbitan Sumber Data yang memungkinkan konektor muncul dalam dialog Dapatkan Data Power Query
Buka file TripPin.query.pq. Ganti konten saat ini dengan panggilan ke fungsi yang Anda ekspor.
TripPin.Feed("https://services.odata.org/v4/TripPinService/")
Sebelum dapat menguji konektor, Anda harus membuatnya. Untuk melakukan ini, buka Terminal dan pilih opsi Jalankan Tugas Build... (Pintasan keyboard Ctrl + Shift + B). Sebaiknya pilih opsi MakePQX , tetapi salah satu opsi yang tersedia untuk build harus berfungsi.
Hasil operasi ini membuat folder Bin baru tempat konektor bawaan Anda disimpan sebagai TripPin.mez.
File <project.query.pq> digunakan untuk menguji ekstensi Anda tanpa harus menyebarkannya ke folder bin Power BI Desktop Anda. Menggunakan alat yang tersedia di dalam Power Query SDK:
- Pilih opsi untuk Mengatur kredensial.
- Pilih TripPin sebagai sumber data.
- Pilih file TripPin.query.pq sebagai file kueri/pengujian.
- Pilih anonim sebagai jenis autentikasi.
Dalam dialog output, pesan muncul yang mengonfirmasi bahwa Anda telah mengatur kredensial untuk sumber data dan detail untuk setiap kredensial yang dibuat.
Catatan
Anda selalu bisa menghapus kredensial menggunakan perintah Hapus SEMUA kredensial atau memeriksa kredensial yang tersedia menggunakan perintah Daftar kredensial dalam alat Power Query SDK.
Dengan kredensial sekarang di tempat, Anda memilih file TripPin.query.pq dan pilih kanan dalam dokumen untuk Mengevaluasi file kueri daya saat ini atau menggunakan opsi untuk Mengevaluasi file saat ini dari alat Power Query SDK.
Dialog output menampilkan pesan hasil dari evaluasi Anda serta jendela baru dengan nama hasil PQTest.
Jendela hasil PQTest terdiri dari tiga tab:
- Output: Menampilkan pratinjau data Anda dalam kisi.
- Ringkasan: Detail evaluasi umum seperti StartTime, EndTime, Durasi, file yang digunakan untuk evaluasi, status, dan lainnya.
- DataSource: Menyediakan informasi tentang Sumber Data yang digunakan dari Jenis, Nama Fungsi, dan jalurnya.
Anda dapat mencoba beberapa URL OData yang berbeda dalam file pengujian untuk melihat bagaimana hasil yang berbeda dikembalikan. Contohnya:
https://services.odata.org/v4/TripPinService/Me
https://services.odata.org/v4/TripPinService/GetPersonWithMostFriends()
https://services.odata.org/v4/TripPinService/People
File TripPin.query.pq dapat berisi pernyataan tunggal, pernyataan let, atau dokumen bagian lengkap.
let
Source = TripPin.Feed("https://services.odata.org/v4/TripPinService/"),
People = Source{[Name="People"]}[Data],
SelectColumns = Table.SelectColumns(People, {"UserName", "FirstName", "LastName"})
in
SelectColumns
Penting
Pastikan untuk selalu menyimpan file saat Anda bekerja. Jika Anda membuat perubahan pada file TripPin.pq, Anda harus selalu memicu tugas build berikutnya untuk memastikan bahwa Anda menguji terhadap versi terbaru konektor Anda.
Buka Fiddler untuk menangkap lalu lintas HTTP, dan jalankan kueri. Anda akan melihat beberapa permintaan berbeda untuk services.odata.org, yang dihasilkan oleh proses kontainer mashup. Anda dapat melihat bahwa mengakses URL akar layanan menghasilkan status 302 dan pengalihan ke versi URL yang lebih panjang. Pengalihan berikut adalah perilaku lain yang Anda dapatkan "gratis" dari fungsi pustaka dasar.
Satu hal yang perlu diperhatikan jika Anda melihat URL adalah Anda dapat melihat lipatan kueri yang terjadi dengan pernyataan .SelectColumns
https://services.odata.org/v4/TripPinService/People?$select=UserName%2CFirstName%2CLastName
Jika Anda menambahkan lebih banyak transformasi ke kueri, Anda bisa melihat dampaknya terhadap URL yang dihasilkan.
Perilaku ini penting untuk diperhatikan. Meskipun Anda tidak menerapkan logika lipatan eksplisit, konektor Anda mewarisi kemampuan ini dari fungsi OData.Feed . Pernyataan M dapat dibuat—konteks filter akan mengalir dari satu fungsi ke fungsi lain, jika memungkinkan. Ini mirip dalam konsep dengan cara fungsi sumber data yang digunakan dalam konektor Anda mewarisi konteks dan kredensial autentikasinya. Dalam pelajaran selanjutnya, Anda akan mengganti penggunaan OData.Feed, yang memiliki kemampuan lipatan asli, dengan Web.Contents, yang tidak. Untuk mendapatkan tingkat kemampuan yang sama, Anda harus menggunakan Table.View
antarmuka dan menerapkan logika lipatan eksplisit Anda sendiri.
Memuat ekstensi Anda di Power BI Desktop
Untuk menggunakan ekstensi di Power BI Desktop, Anda harus menyalin file output proyek konektor (TripPin.mez) ke direktori Koneksi or Kustom Anda.
- Buat direktori [Dokumen Saya]\Power BI Desktop\Custom Koneksi ors.
- Salin file ekstensi (TripPin.mez) ke direktori ini.
- Centang opsi (Tidak Disarankan) Izinkan ekstensi apa pun dimuat tanpa validasi atau peringatan di Power BI Desktop (di bawah Opsi File>dan pengaturan>Opsi>Ekstensi Data Keamanan).>
- Mulai Power BI Desktop.
- Pilih Dapatkan Data > Lainnya untuk memunculkan dialog Dapatkan Data .
Anda dapat menemukan ekstensi Anda dengan mengetikkan namanya ke dalam kotak pencarian.
Pilih nama fungsi, dan pilih Koneksi. Pesan pihak ketiga muncul—pilih Lanjutkan untuk melanjutkan. Dialog pemanggilan fungsi sekarang muncul. Masukkan URL akar layanan (https://services.odata.org/v4/TripPinService/
), dan pilih OK.
Karena ini adalah pertama kalinya Anda mengakses sumber data ini, Anda akan menerima permintaan kredensial. Periksa apakah URL terpendek dipilih, lalu pilih Koneksi.
Perhatikan bahwa alih-alih mendapatkan tabel data sederhana, navigator muncul. Ini karena fungsi OData.Feed mengembalikan tabel dengan metadata khusus di atasnya yang diketahui pengalaman Power Query untuk ditampilkan sebagai tabel navigasi. Panduan ini akan membahas bagaimana Anda dapat membuat dan menyesuaikan tabel navigasi Anda sendiri dalam pelajaran di masa mendatang.
Pilih tabel Saya, lalu pilih Transformasi Data. Perhatikan bahwa kolom sudah memiliki jenis yang ditetapkan (baik, sebagian besar). Ini adalah fitur lain dari fungsi OData.Feed yang mendasar. Jika Anda menonton permintaan di Fiddler, Anda akan melihat bahwa Anda telah mengambil dokumen $metadata layanan. Implementasi OData mesin melakukan ini secara otomatis untuk menentukan skema layanan, jenis data, dan hubungan.
Kesimpulan
Pelajaran ini memandu Anda melalui pembuatan konektor sederhana berdasarkan fungsi pustaka OData.Feed . Seperti yang Anda lihat, logika kecil diperlukan untuk mengaktifkan konektor yang berfungsi penuh melalui OData
fungsi dasar. Fungsi ekstensibilitas lain yang diaktifkan, seperti ODBC. DataSource, menyediakan kemampuan serupa.
Dalam pelajaran berikutnya, Anda akan mengganti penggunaan OData.Feed dengan fungsi yang kurang mampu—Web.Contents. Setiap pelajaran mengimplementasikan lebih banyak fitur konektor, termasuk penomoran, deteksi metadata/skema, dan pelipatan kueri ke sintaks kueri OData, hingga konektor kustom Anda mendukung rentang kemampuan yang sama dengan OData.Feed.