Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Nota
Fitur ini saat ini dalam pratinjau publik. Pratinjau ini disediakan tanpa perjanjian tingkat layanan, dan tidak disarankan untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk informasi selengkapnya, lihat Ketentuan Penggunaan Supplemental untuk Pratinjau Microsoft Azure.
Jalankan kueri GQL terhadap grafik properti dalam grafik di Microsoft Fabric menggunakan API HTTP RESTful. Referensi ini menjelaskan kontrak HTTP: format permintaan dan respons, autentikasi, pengodean hasil JSON, dan penanganan kesalahan.
Penting
Artikel ini secara eksklusif menggunakan himpunan data grafik contoh jejaring sosial.
Gambaran Umum
API Kueri GQL adalah titik akhir tunggal (RPC melalui HTTP) yang menerima kueri GQL sebagai payload JSON dan mengembalikan hasil terstruktur dan diketik. API tanpa status, menangani autentikasi, dan menyediakan pelaporan kesalahan yang komprehensif.
Fitur utama
- Titik akhir tunggal - Semua operasi menggunakan HTTP POST ke satu URL.
- Berbasis JSON - Payload permintaan dan respons menggunakan JSON dengan pengodean kaya dari nilai GQL yang diketik.
- Stateless - Tidak ada status sesi yang diperlukan antar permintaan.
- Jenis aman - Pengetikan yang kuat dan kompatibel dengan GQL dengan penyatuan yang diskriminasi untuk representasi nilai.
Prasyarat
- Anda memerlukan grafik yang berisi data, termasuk simpul dan tepi (hubungan). Lihat mulai cepat grafik untuk membuat dan memuat grafik sampel.
- Anda harus terbiasa dengan grafik properti dan pemahaman dasar tentang GQL, termasuk struktur hasil dan hasil eksekusi.
- Anda perlu menginstal dan menyiapkan alat Azure CLI
azuntuk masuk ke organisasi Anda. Contoh baris perintah dalam artikel ini mengasumsikan penggunaan shell baris perintah yang kompatibel dengan POSIX seperti bash.
Authentication
API Kueri GQL memerlukan autentikasi melalui token pembawa.
Sertakan token akses Anda di header Otorisasi setiap permintaan:
Authorization: Bearer <your-access-token>
Secara umum, Anda dapat memperoleh token pembawa menggunakan Microsoft Authentication Library (MSAL) atau alur autentikasi lainnya yang kompatibel dengan Microsoft Entra.
Token pembawa umumnya diperoleh melalui dua jalur utama:
Akses yang didelegasikan pengguna
Anda dapat memperoleh token pembawa untuk panggilan layanan yang didelegasikan pengguna dari baris perintah melalui alat Azure CLIaz.
Dapatkan token pembawa untuk panggilan yang didelegasikan pengguna dari baris perintah dengan:
- Jalankan
az login - Kemudian
az account get-access-token --resource https://api.fabric.microsoft.com
Ini menggunakan alat Azure CLIaz.
Saat Anda menggunakan az rest untuk melakukan permintaan, token pembawa diperoleh secara otomatis.
Akses aplikasi
Anda dapat memperoleh token pembawa untuk aplikasi yang terdaftar di Microsoft Entra. Lihat mulai cepat Fabric API untuk detail lebih lanjut.
Titik akhir API
API menggunakan satu titik akhir yang menerima semua operasi kueri:
POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/GraphModels/{GraphModelId}/executeQuery?preview=true
Untuk mendapatkan {workspaceId} ruang kerja, Anda dapat mencantumkan semua ruang kerja yang tersedia menggunakan az rest:
az rest --method get --resource "https://api.fabric.microsoft.com" --url "https://api.fabric.microsoft.com/v1/workspaces"
Untuk mendapatkan , Anda dapat mencantumkan {graphId}semua grafik yang tersedia di ruang kerja menggunakan az rest:
az rest --method get --resource "https://api.fabric.microsoft.com" --url "https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/GraphModels"
Anda dapat menggunakan lebih banyak parameter untuk mempersempit hasil kueri lebih lanjut:
-
--query 'value[?displayName=='My Workspace']untuk mencantumkan hanya item dengandisplayNamedariMy Workspace. -
--query 'value[starts_with(?displayName='My')]untuk mencantumkan hanya item yangdisplayNamedimulai denganMy. -
--query '{query}'untuk hanya mencantumkan item yang cocok dengan JMESPath{query}yang disediakan . Lihat dokumentasi Azure CLI tentang JMESPath mengenai sintaks yang didukung untuk{query}. -
-o tableuntuk menghasilkan hasil tabel.
Nota
Lihat bagian tentang menggunakan az-rest atau bagian tentang menggunakan curl untuk cara menjalankan kueri melalui titik akhir API dari shell baris perintah.
Tajuk permintaan
| Header | Nilai | Diperlukan |
|---|---|---|
Content-Type |
application/json |
Yes |
Accept |
application/json |
Yes |
Authorization |
Bearer <token> |
Yes |
Format permintaan
Semua permintaan menggunakan HTTP POST dengan payload JSON.
Struktur permintaan dasar
{
"query": "MATCH (n) RETURN n LIMIT 100"
}
Bidang permintaan
| Bidang | Tipe | Diperlukan | Description |
|---|---|---|---|
query |
string | Yes | Kueri GQL untuk dijalankan |
Format Tanggapan
Semua respons untuk permintaan yang berhasil menggunakan status HTTP 200 dengan payload JSON yang berisi status dan hasil eksekusi.
Struktur respons
{
"status": {
"code": "00000",
"description": "note: successful completion",
"diagnostics": {
"OPERATION": "",
"OPERATION_CODE": "0",
"CURRENT_SCHEMA": "/"
}
},
"result": {
"kind": "TABLE",
"columns": [...],
"data": [...]
}
}
Objek status
Setiap respons menyertakan objek status dengan informasi eksekusi:
| Bidang | Tipe | Description |
|---|---|---|
code |
string | kode status enam karakter (000000 = berhasil) |
description |
string | Pesan status yang dapat dibaca manusia |
diagnostics |
objek | Rekaman diagnostik terperinci |
cause |
objek | Objek status penyebab mendasar opsional |
Kode status
Kode status mengikuti pola hierarkis:
-
00xxxx- Keberhasilan lengkap -
01xxxx- Berhasil dengan peringatan -
02xxxx- Berhasil tanpa data -
03xxxx- Berhasil dengan informasi -
04xxxxdan lebih tinggi - Kesalahan dan kondisi pengecualian
Untuk informasi selengkapnya, lihat referensi kode status GQL.
Rekaman diagnostik
Rekaman diagnostik dapat berisi pasangan kunci-nilai lain yang merinci lebih lanjut objek status. Kunci yang dimulai dengan garis bawah (_) khusus untuk grafik. Standar GQL meresepkan semua kunci lainnya.
Nota
Nilai dalam catatan diagnostik kunci khusus untuk grafik adalah nilai GQL yang dikodekan JSON. Lihat Jenis nilai dan pengodean.
Penyebab
Objek status menyertakan bidang opsional cause saat penyebab yang mendasar diketahui.
Objek status lainnya
Beberapa hasil dapat melaporkan objek status lain sebagai daftar di bidang (opsional). additionalStatuses
Jika demikian, maka objek status utama selalu ditentukan menjadi objek status paling penting (seperti kondisi pengecualian) seperti yang ditentukan oleh standar GQL.
Jenis hasil
Hasil menggunakan pola serikat yang didiskriminasi dengan kind bidang :
Hasil tabel
Untuk kueri yang mengembalikan data tabular:
{
"kind": "TABLE",
"columns": [
{
"name": "name",
"gqlType": "STRING",
"jsonType": "string"
},
{
"name": "age",
"gqlType": "INT32",
"jsonType": "number"
}
],
"isOrdered": true,
"isDistinct": false,
"data": [
{
"name": "Alice",
"age": 30
},
{
"name": "Bob",
"age": 25
}
]
}
Hasil yang dihilangkan
Untuk operasi yang tidak mengembalikan data (misalnya, pembaruan katalog dan/atau data):
{
"kind": "NOTHING"
}
Jenis nilai dan pengodean
API menggunakan sistem jenis yang kaya untuk mewakili nilai GQL dengan semantik yang tepat. Format JSON nilai GQL mengikuti pola gabungan yang diskriminasi.
Nota
Format JSON hasil tabular mewujudkan pola serikat yang diskriminasi dengan memisahkan gqlType dan value untuk mencapai representasi yang lebih ringkas. Lihat Pengoptimalan serialisasi tabel.
Struktur nilai
{
"gqlType": "TYPE_NAME",
"value": <type-specific-value>
}
Jenis primitif
| Jenis GQL | Example | Description |
|---|---|---|
BOOL |
{"gqlType": "BOOL", "value": true} |
Boolean JSON asli |
STRING |
{"gqlType": "STRING", "value": "Hello"} |
String UTF-8 |
Jenis numerik
Jenis bilangan bulat
| Jenis GQL | Jangkauan | Serialisasi JSON | Example |
|---|---|---|---|
INT64 |
-2⁶³ ke 2⁶³-1 | Angka atau string* | {"gqlType": "INT64", "value": -9237} |
UINT64 |
0 hingga 2⁶⁴-1 | Angka atau string* | {"gqlType": "UINT64", "value": 18467} |
Bilangan bulat besar di luar rentang aman JavaScript (-9.007.199.254.740.991 hingga 9.007.199.254.740.991) diserialisasikan sebagai string:
{"gqlType": "INT64", "value": "9223372036854775807"}
{"gqlType": "UINT64", "value": "18446744073709551615"}
Jenis titik mengambang
| Jenis GQL | Jangkauan | Serialisasi JSON | Example |
|---|---|---|---|
FLOAT64 |
Biner IEEE 75464 | Nomor atau string JSON | {"gqlType": "FLOAT64", "value": 3.14} |
Nilai floating-point mendukung nilai khusus IEEE 754:
{"gqlType": "FLOAT64", "value": "Inf"}
{"gqlType": "FLOAT64", "value": "-Inf"}
{"gqlType": "FLOAT64", "value": "NaN"}
{"gqlType": "FLOAT64", "value": "-0"}
Jenis temporal
Jenis temporal yang didukung menggunakan format string ISO 8601:
| Jenis GQL | Rancangan | Example |
|---|---|---|
ZONED DATETIME |
YYYY-MM-DDTHH:MM:SS[.ffffff]±HH:MM | {"gqlType": "ZONED DATETIME", "value": "2023-12-25T14:30:00+02:00"} |
Jenis referensi elemen Grafik
| Jenis GQL | Description | Example |
|---|---|---|
NODE |
Referensi simpul grafik | {"gqlType": "NODE", "value": "node-123"} |
EDGE |
Referensi tepi grafik | {"gqlType": "EDGE", "value": "edge_abc#def"} |
Jenis kompleks
Jenis kompleks terdiri dari nilai GQL lainnya.
Lists
Daftar berisi array nilai nullable dengan jenis elemen yang konsisten:
{
"gqlType": "LIST<INT64>",
"value": [1, 2, null, 4, 5]
}
Jenis daftar khusus:
-
LIST<ANY>- Jenis campuran (setiap elemen mencakup info jenis lengkap) -
LIST<NULL>- Hanya nilai null yang diizinkan -
LIST<NOTHING>- Array selalu kosong
Paths
Jalur dikodekan sebagai daftar nilai referensi elemen grafik.
{
"gqlType": "PATH",
"value": ["node1", "edge1", "node2"]
}
Lihat Pengoptimalan serialisasi tabel.
Pengoptimalan serialisasi tabel
Untuk hasil tabel, serialisasi nilai dioptimalkan berdasarkan informasi jenis kolom:
- Jenis yang diketahui - Hanya nilai mentah yang diserialisasikan
- Kolom APA PUN - Objek nilai penuh dengan jenis diskriminator
{
"columns": [
{"name": "name", "gqlType": "STRING", "jsonType": "string"},
{"name": "mixed", "gqlType": "ANY", "jsonType": "unknown"}
],
"data": [
{
"name": "Alice",
"mixed": {"gqlType": "INT32", "value": 42}
}
]
}
Penanganan kesalahan
Kesalahan transportasi
Kesalahan transportasi jaringan dan HTTP mengakibatkan kode status kesalahan HTTP standar (4xx, 5xx).
Kesalahan aplikasi
Kesalahan tingkat aplikasi selalu mengembalikan HTTP 200 dengan informasi kesalahan di objek status:
{
"status": {
"code": "42001",
"description": "error: syntax error or access rule violation",
"diagnostics": {
"OPERATION": "query",
"OPERATION_CODE": "0",
"CURRENT_SCHEMA": "/",
"_errorLocation": {
"gqlType": "STRING",
"value": "line 1, column 15"
}
},
"cause": {
"code": "22007",
"description": "error: data exception - invalid date, time, or, datetime
format",
"diagnostics": {
"OPERATION": "query",
"OPERATION_CODE": "0",
"CURRENT_SCHEMA": "/"
}
}
}
}
Pemeriksaan status
Untuk menentukan keberhasilan, periksa kode status:
- Kode dimulai dengan
00,01,02,03menunjukkan keberhasilan (dengan kemungkinan peringatan) - Semua kode lain menunjukkan kesalahan
Contoh lengkap dengan az rest
Jalankan kueri menggunakan az rest perintah untuk menghindari harus mendapatkan token pembawa secara manual, seperti:
az rest --method post --url "https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/GraphModels/{GraphModelId}/executeQuery?preview=true" \
--headers "Content-Type=application/json" "Accept=application/json" \
--resource "https://api.fabric.microsoft.com" \
--body '{
"query": "MATCH (n:Person) WHERE n.birthday > 19800101 RETURN n.firstName, n.lastName, n.birthday ORDER BY n.birthday LIMIT 100"
}'
Contoh lengkap dengan curl
Contoh di bagian ini menggunakan curl alat untuk melakukan permintaan HTTPS dari shell.
Kami berasumsi Anda memiliki token akses yang valid yang disimpan dalam variabel shell, seperti:
export ACCESS_TOKEN="your-access-token-here"
Petunjuk / Saran
Lihat bagian tentang autentikasi untuk cara mendapatkan token pembawa yang valid.
Jalankan kueri seperti itu:
curl -X POST "https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/GraphModels/{GraphModelId}/executeQuery?preview=true" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-d '{
"query": "MATCH (n:Person) WHERE n.birthday > 19800101 RETURN n.firstName, n.lastName, n.birthday ORDER BY n.birthday LIMIT 100"
}'
Praktik terbaik
Ikuti praktik terbaik ini saat menggunakan GQL Query API.
Penanganan kesalahan
- Selalu periksa kode status - Jangan asumsikan keberhasilan berdasarkan HTTP 200.
- Uraikan detail kesalahan - Gunakan diagnostik dan menyebabkan rantai untuk penelusuran kesalahan.
Keamanan
- Gunakan HTTPS - Jangan pernah mengirim token autentikasi melalui koneksi yang tidak terenkripsi.
- Putar token - Terapkan penyegaran token yang tepat dan penanganan kedaluwarsa.
- Validasi input - Bersihkan dan lepaskan parameter kueri yang disediakan pengguna dengan benar yang disuntikkan ke dalam kueri.
Representasi nilai
- Tangani nilai bilangan bulat besar - Bilangan bulat dikodekan sebagai string jika tidak dapat direpresentasikan sebagai angka JSON secara asli.
-
Menangani nilai titik mengambang khusus - Nilai floating-point yang dikembalikan dari kueri bisa berupa
Infinitynilai , ,-InfinityatauNaN(bukan angka). - Menangani nilai null - JSON null mewakili GQL null.