Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Tato funkce je aktuálně ve verzi Public Preview. Tato verze Preview se poskytuje bez smlouvy o úrovni služeb a nedoporučuje se pro produkční úlohy. Některé funkce nemusí být podporované nebo můžou mít omezené možnosti. Další informace najdete v tématu Supplementální podmínky použití pro Microsoft Azure Verze Preview.
Spouštění dotazů GQL na grafy vlastností v grafu v Microsoft Fabric pomocí rozhraní RESTful HTTP API Tento odkaz popisuje kontrakt HTTP: formáty požadavků a odpovědí, ověřování, kódování výsledků JSON a zpracování chyb.
Důležité
Tento článek výhradně používá datovou sadu grafů ze sociálních sítí.
Přehled
Rozhraní API pro dotazy GQL je jeden koncový bod (RPC přes HTTP), který přijímá dotazy GQL jako datové části JSON a vrací strukturované zadané výsledky. Rozhraní API je bezstavové, zpracovává ověřování a poskytuje komplexní hlášení chyb.
Klíčové funkce
- Jeden koncový bod – Všechny operace používají HTTP POST k jedné adrese URL.
- Založené na formátu JSON – Datové části požadavků a odpovědí používají JSON s bohatým kódováním hodnot GQL typu.
- Bezstavová – mezi požadavky není vyžadován žádný stav relace.
- Typ bezpečný - Silné, GQL kompatibilní psaní s diskriminovanými sjednoceními pro reprezentaci hodnot.
Požadavky
- Potřebujete graf, který obsahuje data, včetně uzlů a hran (relací). Pokud chcete vytvořit a načíst ukázkový graf, podívejte se na rychlý start grafu .
- Měli byste znát grafy vlastností a základní znalosti GQL, včetně struktury výsledků provádění a výsledků.
- Musíte nainstalovat a nastavit nástroj Azure CLI
azpro přihlášení k vaší organizaci. Příklady příkazového řádku v tomto článku předpokládají použití prostředí příkazového řádku kompatibilního s POSIX, jako je bash.
Autentizace
Rozhraní API pro dotazy GQL vyžaduje ověřování prostřednictvím nosných tokenů.
Do autorizační hlavičky každého požadavku zahrňte přístupový token:
Authorization: Bearer <your-access-token>
Obecně platí, že nosné tokeny můžete získat pomocí Microsoft Authentication Library (MSAL) nebo jiných toků ověřování kompatibilních s Microsoft Entra.
Nosné tokeny se běžně získávají prostřednictvím dvou hlavních cest:
Uživatelem delegovaný přístup
Nosné tokeny pro volání služby delegované uživatelem můžete získat z příkazového řádku prostřednictvím nástroje Azure CLIaz.
Získejte nosný token pro uživatelsky delegovaná volání z příkazového řádku pomocí:
- Spusťte příkaz
az login. - Potom
az account get-access-token --resource https://api.fabric.microsoft.com
Používá se nástroj Azure CLIaz.
Při použití az rest k provádění požadavků se automaticky získají nosné tokeny.
Přístup k aplikacím
Nosné tokeny můžete získat pro aplikace zaregistrované v Microsoft Entra. Další podrobnosti najdete v rychlém startu k rozhraní API fabric .
Koncový bod rozhraní API
Rozhraní API používá jeden koncový bod, který přijímá všechny operace dotazů:
POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/GraphModels/{GraphModelId}/executeQuery?preview=true
Pokud chcete získat pracovní {workspaceId} prostor, můžete zobrazit seznam všech dostupných pracovních prostorů pomocí az rest:
az rest --method get --resource "https://api.fabric.microsoft.com" --url "https://api.fabric.microsoft.com/v1/workspaces"
Pokud chcete získat {graphId}seznam všech dostupných grafů v pracovním prostoru, az restpoužijte:
az rest --method get --resource "https://api.fabric.microsoft.com" --url "https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/GraphModels"
Další parametry můžete použít k dalšímu zúžení výsledků dotazu:
-
--query 'value[?displayName=='My Workspace']pro výpis pouze položek s položkoudisplayName.My Workspace -
--query 'value[starts_with(?displayName='My')]pro výpis pouze položky, jejichždisplayNamezačíná naMy. -
--query '{query}'pro výpis pouze položky, které odpovídají zadané JMESPath{query}. Informace o podporované syntaxi pronajdete v dokumentaci k Azure CLI v JMESPath0>. -
-o tablepro vytvoření výsledku tabulky.
Poznámka:
Informace o spouštění dotazů prostřednictvím koncového bodu rozhraní API z prostředí příkazového řádku najdete v části o použití příkazu az-rest nebo oddílu o používání nástroje curl .
Hlavičky žádosti
| Header | Hodnota | Povinné |
|---|---|---|
Content-Type |
application/json |
Ano |
Accept |
application/json |
Ano |
Authorization |
Bearer <token> |
Ano |
Formát požadavku
Všechny požadavky používají HTTP POST s datovou částí JSON.
Struktura základního požadavku
{
"query": "MATCH (n) RETURN n LIMIT 100"
}
Pole žádosti
| Obor | Typ | Povinné | Description |
|---|---|---|---|
query |
řetězec | Ano | Dotaz GQL ke spuštění |
Formát odpovědi
Všechny odpovědi na úspěšné žádosti používají stav HTTP 200 s datovou částí JSON obsahující stav spuštění a výsledky.
Struktura odpovědi
{
"status": {
"code": "00000",
"description": "note: successful completion",
"diagnostics": {
"OPERATION": "",
"OPERATION_CODE": "0",
"CURRENT_SCHEMA": "/"
}
},
"result": {
"kind": "TABLE",
"columns": [...],
"data": [...]
}
}
Stavový objekt
Každá odpověď obsahuje stavový objekt s informacemi o spuštění:
| Obor | Typ | Description |
|---|---|---|
code |
řetězec | šestiznakový stavový kód (000000 = úspěch) |
description |
řetězec | Stavová zpráva čitelná pro člověka |
diagnostics |
objekt | Podrobné diagnostické záznamy |
cause |
objekt | Volitelný základní objekt stavu příčiny |
Stavové kódy
Stavové kódy se řídí hierarchickým vzorem:
-
00xxxx- Dokončení úspěchu -
01xxxx- Úspěch s upozorněními -
02xxxx- Úspěch bez dat -
03xxxx- Úspěch s informacemi -
04xxxxa vyšší – chyby a podmínky výjimky
Další informace najdete v referenčních informacích ke stavových kódům GQL.
Diagnostické záznamy
Diagnostické záznamy můžou obsahovat další páry klíč-hodnota, které dále podrobně uvádějí stavový objekt. Klíče začínající podtržítkem (_) jsou specifické pro graf. Standard GQL předepisuje všechny ostatní klíče.
Poznámka:
Hodnoty v diagnostickém záznamu klíčů specifických pro graf jsou hodnoty GQL kódované ve formátu JSON. Viz Typy hodnot a kódování.
Příčiny
Objekty stavu obsahují volitelné cause pole, pokud je známa základní příčina.
Další objekty stavu
Některé výsledky můžou hlásit jiné stavové objekty jako seznam v poli (volitelné). additionalStatuses
Pokud ano, primární stavový objekt je vždy určen jako nejdůležitější stavový objekt (například podmínka výjimky), jak je předepsáno standardem GQL.
Typy výsledků
Výsledky používají diskriminovaný sjednocovaný vzor s polem kind :
Výsledky tabulky
Dotazy, které vracejí tabulková data:
{
"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
}
]
}
Vynechané výsledky
Pro operace, které nevrací data (například katalog nebo aktualizace dat):
{
"kind": "NOTHING"
}
Typy hodnot a kódování
Rozhraní API používá systém bohatého typu k reprezentaci hodnot GQL s přesnou sémantikou. Formát JSON hodnot GQL se řídí diskriminovaným vzorem sjednocení.
Poznámka:
Formát JSON tabulkových výsledků si uvědomuje diskriminovaný sjednocovací vzor oddělením gqlType a value dosažením kompaktnější reprezentace. Viz Optimalizace serializace tabulky.
Struktura hodnot
{
"gqlType": "TYPE_NAME",
"value": <type-specific-value>
}
Primitivní typy
| Typ GQL | Example | Description |
|---|---|---|
BOOL |
{"gqlType": "BOOL", "value": true} |
Nativní logická hodnota JSON |
STRING |
{"gqlType": "STRING", "value": "Hello"} |
Řetězec UTF-8 |
Číselné typy
Celočíselné typy
| Typ GQL | Rozmezí | Serializace JSON | Example |
|---|---|---|---|
INT64 |
-2⁶³ až 2⁶³-1 | Číslo nebo řetězec* | {"gqlType": "INT64", "value": -9237} |
UINT64 |
0 až 2⁶⁴-1 | Číslo nebo řetězec* | {"gqlType": "UINT64", "value": 18467} |
Velká celá čísla mimo bezpečný rozsah JavaScriptu (-9 007 199 254 740 991 až 9 007 199 254 740 991) jsou serializována jako řetězce:
{"gqlType": "INT64", "value": "9223372036854775807"}
{"gqlType": "UINT64", "value": "18446744073709551615"}
Typy s plovoucí desetinou čárkou
| Typ GQL | Rozmezí | Serializace JSON | Example |
|---|---|---|---|
FLOAT64 |
Binární IEEE 7544 | Číslo nebo řetězec JSON | {"gqlType": "FLOAT64", "value": 3.14} |
Hodnoty s plovoucí desetinou čárkou podporují speciální hodnoty IEEE 754:
{"gqlType": "FLOAT64", "value": "Inf"}
{"gqlType": "FLOAT64", "value": "-Inf"}
{"gqlType": "FLOAT64", "value": "NaN"}
{"gqlType": "FLOAT64", "value": "-0"}
Dočasné typy
Podporované dočasné typy používají formáty řetězců ISO 8601:
| Typ GQL | Formát | Example |
|---|---|---|
ZONED DATETIME |
YYYY-MM-DDTHH:MM:SS[.ffffff]±HH:MM | {"gqlType": "ZONED DATETIME", "value": "2023-12-25T14:30:00+02:00"} |
Referenční typy elementů grafu
| Typ GQL | Description | Example |
|---|---|---|
NODE |
Referenční informace k uzlu grafu | {"gqlType": "NODE", "value": "node-123"} |
EDGE |
Referenční informace k okraji grafu | {"gqlType": "EDGE", "value": "edge_abc#def"} |
Komplexní typy
Komplexní typy se skládají z jiných hodnot GQL.
Lists
Seznamy obsahují pole hodnot null s konzistentními typy prvků:
{
"gqlType": "LIST<INT64>",
"value": [1, 2, null, 4, 5]
}
Speciální typy seznamů:
-
LIST<ANY>– Smíšené typy (každý prvek obsahuje úplné informace o typu) -
LIST<NULL>– Jsou povoleny pouze hodnoty null. -
LIST<NOTHING>– Vždy prázdné pole
Paths
Cesty jsou kódovány jako seznamy referenčních hodnot prvků grafu.
{
"gqlType": "PATH",
"value": ["node1", "edge1", "node2"]
}
Viz Optimalizace serializace tabulky.
Optimalizace serializace tabulek
U výsledků tabulky je serializace hodnot optimalizovaná na základě informací o typu sloupce:
- Známé typy – Serializuje se pouze nezpracovaná hodnota.
- ANY sloupce – objekt úplné hodnoty s typem diskriminátoru
{
"columns": [
{"name": "name", "gqlType": "STRING", "jsonType": "string"},
{"name": "mixed", "gqlType": "ANY", "jsonType": "unknown"}
],
"data": [
{
"name": "Alice",
"mixed": {"gqlType": "INT32", "value": 42}
}
]
}
Zpracování chyb
Chyby přenosu
Chyby přenosu sítě a PROTOKOLU HTTP vedou ke standardním stavovými kódy chyb HTTP (4xx, 5xx).
Chyby aplikace
Chyby na úrovni aplikace vždy vrací http 200 s informacemi o chybě ve stavovém objektu:
{
"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": "/"
}
}
}
}
Kontrola stavu
Pokud chcete zjistit úspěch, zkontrolujte stavový kód:
- Kódy začínající na
00,01,02označují03úspěch (s možnými upozorněními) - Všechny ostatní kódy označují chyby.
Kompletní příklad pomocí příkazu az rest
Spusťte dotaz pomocí az rest příkazu, abyste nemuseli získat nosné tokeny ručně, například takto:
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"
}'
Kompletní příklad s curl
Příklad v této části používá curl nástroj pro provádění požadavků HTTPS z prostředí.
Předpokládáme, že máte platný přístupový token uložený v proměnné prostředí, například takto:
export ACCESS_TOKEN="your-access-token-here"
Návod
Informace o tom, jak získat platný nosný token, najdete v části o ověřování .
Spusťte dotaz takto:
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"
}'
Osvědčené postupy
Při používání rozhraní API pro dotazy GQL postupujte podle těchto osvědčených postupů.
Zpracování chyb
- Vždy zkontrolujte stavové kódy – nepředpokládáte úspěch na základě HTTP 200.
- Parsování podrobností o chybách – K ladění použijte diagnostiku a řetězy příčin.
Zabezpečení
- Používejte PROTOKOL HTTPS – Nikdy neposílejte ověřovací tokeny přes nešifrovaná připojení.
- Obměna tokenů – Implementace správné aktualizace tokenu a zpracování vypršení platnosti
- Ověřte vstupy – Sanitize a správně uniknou všem parametrům dotazu zadaným uživatelem vloženým do dotazu.
Reprezentace hodnot
- Zpracování velkých celočíselových hodnot – Celá čísla jsou kódovaná jako řetězce, pokud je nelze nativně reprezentovat jako čísla JSON.
-
Zpracování speciálních hodnot s plovoucí desetinou čárkou – hodnoty s plovoucí desetinou čárkou vrácené z dotazů můžou být
Infinityhodnoty ,-InfinityneboNaN(ne čísla). - Zpracování hodnot null – JSON null představuje hodnotu GQL null.