View Categories

Power BI REST API: Menghubungkan Data SQL Langsung Tanpa Driver ODBC

Power BI · API REST sebagai pengganti driver

Titik Power BI pada API REST, bukan driver basis data

Power BI biasanya mengakses basis data melalui driver di mesin Anda dan, untuk penyegaran terjadwal, melalui gateway lokal. Endpoint Query Streams adalah URL HTTPS biasa, sehingga Power BI Desktop dan layanan Power BI membacanya dengan konektor Web bawaan. Portal akan menulis Power Query M untuk Anda: Ekspor → Power Query M (.pq), tempel, tambahkan kunci Anda, selesai. File yang sama juga berfungsi di Excel.

Sekitar 5 menit Tidak ada driver, tidak ada gateway. Data tetap berada di jaringan Anda. Excel juga
Mengalami kesulitan di suatu titik? Tanyakan saja pada kami. Membuka Dukungan Di Query Streams (menu kanan atas → Dukungan) dan kirimkan pesan kepada kami. Ada orang sungguhan yang membacanya, dan "Saya tidak tahu apa yang diminta layar ini" adalah pertanyaan yang sangat wajar.

Inilah hasil akhirnya

Tabel Power BI yang diisi dengan kueri SQL tersimpan melalui HTTPS, dapat diperbarui di layanan tanpa gateway lokal, karena endpoint-nya terlihat seperti API web biasa. Endpoint itu sendiri terlihat seperti ini di konsol portal:

POSapi.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19
KunciNilaiKeterangan
kota rangkaian OpsionalSeattleFilter yang dapat dipanggil dari kueri yang tersimpan
Kunci API Xqsapi_AB••••••••••Token rahasia Anda
{
  "kota": "Seattle"
}
JudulNilaiKeterangan
Kunci API Xqsapi_AB••••••••••Token rahasia Anda. Satu token per pemanggil, dapat dicabut kapan saja.
Jenis Kontenaplikasi/jsonParameter-parameter tersebut dikirim sebagai isi JSON.
Menerimaaplikasi/jsonJSON sebagai input; jika diminta teks/csv, Anda akan mendapatkan CSV.
curl -X POST "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19" \ -H "X-API-Key: qsapi_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"city": "Seattle"}'
Status 200 OKWaktu 84 msUkuran 412 BTerpotong TIDAK
{
  "kolom": [ { "nama": "ID pelanggan", "jenis": "bilangan bulat" }, { "nama": "nama", "jenis": "rangkaian" }, { "nama": "kota", "jenis": "rangkaian" } ],
  baris: [
    { "ID pelanggan": 1042, "nama": "Pedagang Angin Utara", "kota": "Seattle" },
    { "ID pelanggan": 1057, "nama": "Penyedia Perlengkapan Pegunungan Alpen", "kota": "Denver" },
    { "ID pelanggan": 1063, "nama": "Harbour Foods", "kota": "Halifax" }
  ],
  "meta": { "jumlah_baris": 3, "durasi_agen_ms": 41, "request_id": "req_7Hq2mKd9" }
}
JudulNilaiKeterangan
tipe kontenaplikasi/json; charset=utf-8Amplop pada tab Isi
panjang konten412Byte dikembalikan; lencana Ukuran di atas
Hanya baca: satu kueri tersimpan, tidak ada yang lain. SQL tidak pernah meninggalkan akun Anda. Setiap panggilan pada tab Aktivitas

Alasan adanya driver adalah karena Power BI harus berkomunikasi dengan protokol jaringan setiap basis data dari mana pun ia dijalankan, itulah sebabnya mengapa penyegaran terjadwal membutuhkan gateway yang berada di dalam jaringan Anda. Dengan adanya endpoint, Agent yang sudah berada di basis data menjalankan kueri dan api.querystreams.com menjawab Power BI melalui HTTPS, sehingga Power BI tidak perlu menginstal apa pun dan layanan tidak perlu melakukan tunneling.

DI MANA BASIS DATA BERADAjaringan kantor atau ruang server AndaBasis data Anda sendiritetap berada di jaringan AndaAgen Aliran Kuerimenjalankan kueri yang tersimpanapi.querystreamsmemeriksa kunciHTTPS · hanya baris, tidak pernah SQLSIAPA PUN YANG MEMEGANG KUNCIaplikasi Anda, dasbor, mitra, skripGET atau POST dengan X-API-KeyJSON, CSV atau NDJSON kembali
Agen tersebut berinteraksi dengan data Anda dan menjalankan kueri. api.querystreams.com memeriksa kunci dan batas laju lalu meneruskan baris data. Pemanggil tidak pernah mencapai jaringan Anda.

Yang Anda butuhkan

Akun Query Streams

Semua paket memiliki REST API. Paket gratis memberi Anda satu endpoint, dua kunci, dan 250 baris per panggilan, yang cukup untuk membuat panduan ini. Daftar di sini. my.querystreams.com.

Agen pada komputer yang dapat mengakses basis data Anda sendiri, dengan koneksi yang ditambahkan.

Seringkali server basis data itu sendiri atau komputer yang selalu aktif di jaringan yang sama.

Kueri yang tersimpan di Query Builder

Endpoint tersebut membungkus tepat satu kueri yang tersimpan. Tulis SELECT, jalankan sekali, lalu simpan. Tambahkan Filter Dinamis (sebuah @variable (dalam klausa WHERE) jika pemanggil harus dapat melakukan filter.

Siapa yang dapat membuat endpoint? Pemilik, Admin, dan Pembuat. Jika API Item tersebut hilang dari bilah atas Anda, Admin dapat mengaktifkannya untuk pengguna Anda di bawah ini. Akun → IzinSiapa pun yang Anda ajak berbagi endpoint hanya memerlukan akun Query Streams, di paket mana pun.

Ditambah Power BI Desktop, atau Excel 2016 atau versi yang lebih baru. Jika Anda belum memiliki endpoint, maka Pusat API REST basis data Membawa Anda dari kueri yang tersimpan ke URL dalam empat langkah.

Hubungkan Power BI dalam empat langkah

  1. Ekspor file M Power Query

    Di dalam API Buka endpoint Anda, klik Ekspor dan memilih Power Query M (.pq)File tersebut lengkap. biarkan … masuk Ekspresi dengan URL endpoint dan parameter yang dapat dipanggil sudah tersedia. Tampilannya seperti ini:

    Ekspor · Power Query M (.pq)
    membiarkan
      Sumber = Json.Dokumen(Web.Isi(
        "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19", [Header = [#"Kunci API-X" = "qsapi_KUNCI_ANDA"], Kueri = [kompresi = "tidak ada"]])), baris = Sumber[baris], tabel = Tabel.Dari Catatan(baris)
    di dalam
      meja

    Ekspor selalu meminta kompresi=tidak ada, karena Power Query tidak dapat mendekode frame LZ4; JSON melalui gzip adalah format yang diharapkan Power BI.

  2. Tempelkan ke Power BI

    Di Power BI Desktop, pilih Beranda → Transformasi data → Sumber Baru → Kueri Kosong, buka Editor Tingkat Lanjut, ganti isinya dengan file tersebut dan klik SelesaiDi Excel, jalurnya adalah... Data → Dapatkan Data → Dari Sumber Lain → Kueri Kosong, lalu editor tingkat lanjut yang sama.

  3. Tambahkan kunci Anda

    Ganti placeholder dengan kunci 49 karakter Anda yang dimulai dengan qsapi_ dari titik akhir Berbagi tab. Saat Power BI menanyakan cara terhubung, pilih Anonim: kunci tersebut berada di dalam Kunci API X Header kueri sudah diatur, jadi tidak diperlukan kredensial Power BI.

  4. Muat dan segarkan

    Klik Tutup & Terapkan. Itu baris Array akan menjadi tabel Anda dengan satu kolom per kolom kueri. Publikasikan ke layanan Power BI dan atur jadwal penyegaran: karena sumbernya adalah URL web, tidak diperlukan gateway lokal. Setiap penyegaran adalah satu panggilan pada endpoint. Aktivitas tab.

Itu saja. Power BI membaca baris data secara langsung melalui HTTPS, basis data tetap berada di balik firewall Anda, dan pemilik laporan tidak pernah melihat kode SQL atau informasi login basis data.

Permintaan yang dibuat oleh Power BI

Secara internal, cara kerjanya sama seperti yang dapat Anda lakukan dengan curl. Parameter yang ditandai sebagai Callable dapat diteruskan dari Power Query sebagai Kueri = [kota = "Seattle"]:

GET · parameter dalam string kueri
curl "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19?city=Seattle" \ -H "X-API-Key: qsapi_KUNCI_ANDA"
Respons · 200 OK · application/json
{
  "kolom": [ { "nama": "ID pelanggan", "jenis": "bilangan bulat" }, { "nama": "nama", "jenis": "rangkaian" }, { "nama": "kota", "jenis": "rangkaian" } ],
  baris: [
    { "ID pelanggan": 1042, "nama": "Pedagang Angin Utara", "kota": "Seattle" },
    { "ID pelanggan": 1057, "nama": "Penyedia Perlengkapan Pegunungan Alpen", "kota": "Denver" },
    { "ID pelanggan": 1063, "nama": "Harbour Foods", "kota": "Halifax" }
  ],
  "meta": { "jumlah_baris": 3, "durasi_agen_ms": 41, "request_id": "req_7Hq2mKd9" }
}

Baris dikembalikan sebagai objek yang dikunci berdasarkan nama kolom, dengan daftar kolom dan sebuah meta Blok yang memberi tahu Anda berapa banyak baris yang ada, apakah hasilnya terpotong, dan ID permintaan yang dapat Anda kutip untuk mendukung permintaan tersebut. Panggilan yang sama seperti POST menempatkan parameter dalam badan JSON, yang merupakan pilihan tepat untuk daftar nilai yang panjang:

POST · parameter dalam body JSON
curl -X POST "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19" \ -H "X-API-Key: qsapi_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"params": {"city": "Seattle"}}'
?format=csv
CSV, bukan JSON, termasuk baris header. Menerima format teks/csv melakukan hal yang sama. Endpoint streaming mengembalikan NDJSON (satu objek JSON per baris) dengan akhiran {"_ringkasan": benar, "jumlah_baris": N} baris; periksa baris terakhir itu.
?sampel=benar
Maksimal lima baris, tidak dikenakan biaya. Cocok untuk memasang kabel pada klien.
kompresi=lz4
Badan rangka LZ4 untuk penelepon bervolume tinggi dengan dekoder; Kode Tab tersebut berisi cuplikan dekoder per bahasa. Kompresi gzip biasa terjadi secara otomatis saat klien Anda mengirimkan data. Accept-Encoding: gzip.
Otorisasi: Bearer qsapi_…
Diterima sebagai alias untuk Kunci API XGunakan dari kode browser.

Di luar Power BI

Excel dan Power BI

Ekspor → Power Query M (.pq) Ini memberi Anda kueri siap pakai. Tempelkan ke Editor Lanjutan (Excel: Data → Dapatkan Data → Dari Sumber Lain → Kueri Kosong; Power BI: Beranda → Ubah data → Sumber Baru → Kueri Kosong) dan ganti placeholder dengan kueri Anda. qsapi_ kunci.

Tukang Pos, Insomnia, Hoppscotch

Sama saja Ekspor Menu mengunduh koleksi Postman v2.1, ekspor Insomnia v5, atau koleksi Hoppscotch dengan parameter yang sudah terisi dan tempat penampung untuk kunci.

Kode Anda sendiri

Itu Kode Tab ini memiliki contoh kerja untuk cURL, Python, JavaScript, TypeScript, Java, C#, Go, PHP, PowerShell, dan Ruby. Ekspor → Spesifikasi OpenAPI 3.1 Mengumpan ke generator klien atau Swagger UI apa pun.

n8n, Zapier, Make, cron

Buat Kunci layanan Untuk alat tersebut, tempelkan URL dan kunci ke node HTTP-nya, lalu jadwalkan. Setiap alat mendapatkan kuncinya sendiri, sehingga Anda dapat mencabut satu alat tanpa memengaruhi alat lainnya.

Apa yang diizinkan oleh rencana tersebut

RencanaTitik akhirKunci per titik akhirJumlah orang per titik akhirBaris per panggilan (statis)Baris per panggilan (streaming)Panggilan per menit, per tombol
Gratis1212502503
Inti Pribadi2325,000250,00015
Personal Plus55510,000500,00030
Inti Bisnis5101050,0001,000,000300
Bisnis Plus102025100,0005,000,000600
Bisnis Max253050250,00010,000,000600
Inti Perusahaan5050100500,00025,000,0001,000
Perusahaan Plus1001002501,000,00050,000,0001,000
Enterprise Max2502005002,500,000100,000,0001,500

Setiap panggilan juga memiliki batas waktu kueri tetap 60 detik dan batas respons 8 MiB, dan byte yang dikembalikan akan dihitung terhadap kuota data bulanan paket Anda, kuota yang sama yang digunakan oleh add-in Excel dan Google Sheets. Paket gratis memiliki satu endpoint dan 5 MB per bulan, yang cukup untuk tabel kecil yang dipanggil berkali-kali dalam sehari. Lihat halaman harga. untuk tunjangan berdasarkan rencana.

Gratis adalah rencana yang bisa Anda pertahankan. Ini bukan masa percobaan yang berakhir. Lihat detail lengkapnya di sini. halaman harga.

Untuk laporan, batasi kueri hanya pada kolom yang dibutuhkan visual dan biarkan jadwal penyegaran melakukan sisanya; Power BI membaca seluruh hasil pada setiap penyegaran, sehingga batasan jumlah baris statis pada rencana Anda adalah batas atas untuk satu tabel.

Menjaganya tetap aman

SQL tersebut tetap milik Anda.

Pihak yang melakukan panggilan hanya mendapatkan baris data. Mereka tidak pernah melihat kueri, nama tabel, atau detail koneksi, dan mereka tidak dapat mengubah apa yang dijalankan oleh endpoint tersebut.

Satu kunci, satu titik akhir, satu pemanggil

Satu kunci hanya berlaku untuk satu titik akhir. Berikan setiap orang atau alat kuncinya masing-masing, dan setiap panggilan akan dicatat terhadap kunci tersebut. Cabut satu kunci dan kunci lainnya akan tetap berfungsi; pencabutan akan berlaku dalam waktu sekitar lima menit.

Hanya baca, di sisi dinding Anda.

Agen hanya menjalankan satu perintah SELECT yang tersimpan dan tidak ada yang lain, dari dalam jaringan Anda, melalui koneksi keluarnya sendiri. Tidak ada port yang perlu dibuka dan tidak ada kredensial di internet.

Setiap panggilan dalam buku besar

Itu Aktivitas Tab ini menampilkan setiap panggilan beserta waktu, penerima, status, baris, byte, dan durasi, termasuk panggilan yang ditolak. Atur sebuah Berakhir Masa berlaku untuk share sementara dan endpoint akan mati secara otomatis pada tanggal tersebut.

Ketika sesuatu tidak berfungsi

StatusKodeApa yang harus dilakukan?
401API_KEY_REQUIRED / API_KEY_INVALIDHeader hilang atau kuncinya salah. Kirim Kunci API-X: qsapi_…, keseluruhan 49 karakter. Kunci dapat disalin lagi dari tab Berbagi di endpoint.
403API_KEY_ENDPOINT_MISMATCHKunci yang valid digunakan pada endpoint yang berbeda. Setiap kunci hanya milik satu endpoint.
403KUNCI_API_DICABUT / TITIK_AKHIR_API_KADALUARSAKunci telah dicabut atau titik akhir telah mencapai tanggal kedaluwarsa. Buat kunci baru atau pulihkan titik akhir.
400API_PARAM_TIDAK_DAPAT_DITIMPAAnda mengirimkan parameter yang tidak ditandai sebagai "Dapat Dipanggil" oleh pemiliknya. Isi permintaan mencantumkan nama-nama yang diizinkan.
414API_QUERY_TERLALU_BESARString kueri GET yang dikirimkan berukuran 8 KB atau 200 nilai daftar. Kirimkan parameter yang sama seperti pada body JSON POST.
413API_OUTPUT_TERLALU_BESARHasilnya melebihi batas 8 MiB. Persempit kueri, atau alihkan endpoint ke Streaming.
429API_RATE_LIMITEDTerlalu banyak panggilan saat ini untuk kunci atau titik akhir. Tunggu sebentar. Coba Lagi Setelahnya detik, atau tingkatkan Batas laju di bawah Pengaturan API → Pengaturan default dalam paket Anda.
429API_DATA_REALM_KEHAUSANKuota data bulanan pemilik telah habis. Kuota akan direset pada bulan penagihan; tingkatkan paket untuk mendapatkan lebih banyak kuota.
503AGEN API TIDAK TERHUBUNGAgen yang mengelola basis data Anda sedang offline. Periksa di bawah Data → Agen Data; panggilan akan berhasil kembali segera setelah terhubung kembali.
504API_QUERY_TIMEOUTKueri tersebut membutuhkan waktu lebih dari 60 detik. Tambahkan filter atau indeks, atau simpan kueri yang lebih spesifik.

Setiap badan kesalahan memiliki bentuk {"kesalahan": {"kode": "…", "pesan": "…"}} dan setiap respons membawa sebuah ID Permintaan X-QS Header. Kutip ID saat Anda menghubungi dukungan.

Dua hal spesifik tentang Power Query: a) Sumber Data.Kesalahan penamaan 401 artinya kunci dalam file M salah atau telah dicabut; Expression.Error: Kolom 'rows' pada record tidak ditemukan Artinya, endpoint mengembalikan amplop kesalahan, jadi jalankan URL di konsol portal untuk membacanya.

Pertanyaan yang diajukan orang

Apakah data saya disalin ke Query Streams?

Tidak. Agen menjalankan kueri di tempat data Anda berada dan hanya mengirimkan baris yang diminta oleh panggilan tersebut. Tidak ada yang disinkronkan atau di-cache di antaranya; setiap panggilan menjalankan kueri tersebut.

Apakah penelepon dapat mengubah SQL atau meminta tabel lain?

Tidak. Sebuah endpoint menjalankan satu query yang tersimpan. Pemanggil hanya dapat mengatur parameter yang telah Anda tandai. Dapat dipanggil, dan nilai-nilai tersebut diikat dengan aman: teks diberi tanda kutip dan di-escape, angka diperiksa rentangnya, daftar diperluas.

Bagaimana cara saya menyerahkan ini kepada rekan kerja?

Pada titik akhir Berbagi tab pilih Rakyat dan masukkan email mereka. Mereka mendapatkan tautan ajaib, masuk dengan alamat tersebut (akun gratis pun tidak masalah) dan membuat kunci mereka sendiri; Anda dapat melihat panggilan mereka berdasarkan nama di tab Aktivitas. Untuk server atau alat otomatisasi, buatlah sebuah Kunci API dengan label sebagai gantinya.

Apa yang terjadi ketika saya mengedit kueri yang tersimpan?

Endpoint menjalankan SQL baru pada panggilan berikutnya dan spesifikasi OpenAPI-nya dibuat ulang. URL dan kuncinya tidak berubah. Jika Anda menambahkan atau menghapus filter, tinjau kembali. Kunci parameter sehingga penelepon melihat parameter yang tepat.

Apakah paket gratis benar-benar mencakup hal ini?

Ya. Paket gratis adalah paket permanen, bukan uji coba yang akan berakhir. Paket ini mencakup satu endpoint, dua kunci, dan 250 baris per panggilan. Lihat detail lengkapnya di halaman berikut. halaman harga.

Apakah fitur refresh terjadwal di layanan Power BI benar-benar berfungsi tanpa gateway?

Ya. Layanan ini dapat memperbarui apa pun. Isi Web Sumber yang dapat diakses di internet publik dengan otentikasi anonim atau header tertanam. api.querystreams.com adalah salah satu sumber tersebut; basis data Anda tidak pernah dihubungi oleh Power BI.

Bisakah saya menggunakan DirectQuery?

Tidak. Sumber web di Power BI menggunakan mode Impor. Gunakan jadwal penyegaran, atau persempit kueri dan segarkan lebih sering sesuai dengan batas laju paket Anda.

Bisakah Tableau atau Looker Studio menggunakan endpoint yang sama?

Semua alat dengan konektor web atau REST dapat, dan Ekspor → Spesifikasi OpenAPI 3.1 Menjelaskan titik akhir untuk pembuat konektor. Pilih ?format=csv untuk alat yang lebih menyukai format CSV.

Masih bingung? Membuka Dukungan Di Query Streams, beri tahu kami Anda berada di langkah mana dan apa yang Anda lihat. Kami akan menghubungkan Anda.

Setup trouble?

  • Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?
Updated on 27 September 2026

Powered by BetterDocs