Ako nastaviť vlastné SQL pooly pomocou Fabric REST API

Vzťahuje sa na: ✅ SQL analytics endpoint a sklad v Microsoft Fabric

Vlastné SQL pooly dávajú administrátorom väčšiu kontrolu nad tým, ako sú zdroje prideľované na spracovanie požiadaviek. V tomto rýchlom štarte si nakonfigurujete vlastné SQL pooly a pozorujete hodnoty klasifikátorov pomocou Fabric REST API.

Administrátori pracovného priestoru môžu použiť názov aplikácie (alebo názov programu) z reťazca spojenia na smerovanie požiadaviek do rôznych výpočtových poolov. Administrátori pracovného priestoru môžu tiež kontrolovať percento zdrojov, ku ktorým má každý výpočtový SQL pool prístup, na základe limitu kapacity pracovného priestoru na burstovateľnú škálovateľnosť.

Fabric REST API definuje jednotný koncový bod pre operácie.

Predpoklady

  • Prístup k skladovej položke v pracovnom priestore. Mali by ste byť členom administrátorskej roly.

Získajte aktuálnu konfiguráciu

Použite nasledujúce API na získanie aktuálnej konfigurácie.

Príklad látkového zápisníka

Nasledujúci príklad Python kódu môžete spustiť v zápisníku Fabric Spark.

  • Kód odošle požiadavku GET do vlastného konfiguračného API SQL poolu a vráti vlastnú konfiguráciu SQL poolu pre daný pracovný priestor.
  • Pole workspace_id používa na mssparkutils.runtime.context získanie GUID pracovného priestoru, v ktorom notebook beží. Ak chcete nastaviť vlastný SQL pool v inom pracovnom priestore, aktualizujte ho workspace_id na GUID pracovného priestoru, kde chcete nastaviť vlastné SQL pooly.
import requests
import json
from notebookutils import mssparkutils

# This will get the workspace_id where this notebook is running. 
# Update to the workspace_id (guid) if running this notebook outside of the workspace where the warehouse exists.
workspaceId = mssparkutils.runtime.context.get('currentWorkspaceId') 

url = f'https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/warehouses/sqlPoolsConfiguration?beta=true'
response = requests.request(method='get', url=url, headers={'Authorization': f'Bearer {mssparkutils.credentials.getToken("pbi")}'})

if response.status_code == 200:
    print(json.dumps(response.json(), indent=4))
else:
    print(response.text)

Konfigurácia vlastných SQL poolov

Nasledujúci príklad v Pythone umožňuje a konfiguruje vlastné SQL pooly. Tento Python kód môžete spustiť v notebooku Fabric Spark.

  • Konfigurácia vlastných SQL poolov je aktívna len vtedy, keď customSQLPoolsEnabled je atribút nastavený na true. Payload môžete definovať v definícii objektu customSQLPools , ale ak nenastavíte customSQLPoolsEnabled na true, payload sa ignoruje a používa sa autonómne riadenie záťaže .
  • Kód konfiguruje dva vlastné SQL pooly ContosoSQLPool a AdhocPool.
    • Je nastavené, že dostane ContosoSQLPool 70% dostupných zdrojov. Klasifikátor názvu aplikácie má hodnotu .MyContosoApp
    • Všetky SQL dotazy, ktoré vychádzajú z reťazca spojenia, ktorý špecifikuje MyContosoApp názov aplikácie, sú klasifikované do vlastného ContosoSQLPool SQL poolu a majú prístup k 70% z celkových uzlov s kapacitou pre burst.
    • Všetky SQL dotazy, ktoré neobsahujú MyContosoApp v názve aplikácie connection string, sa posielajú do vlastného Adhoc SQL poolu, ktorý je definovaný ako predvolený pool. Tieto požiadavky získavajú prístup k 30% z celkových uzlov kapacity pre burst.
  • Všetky vlastné konfigurácie SQL poolu musia mať jeden predvolený SQL Pool identifikovaný nastavením isDefault atribútu na true.
  • Súčet všetkých maxResourcePercentage hodnôt musí byť menší alebo rovný 100%.
  • Pole workspace_id používa na mssparkutils.runtime.context získanie GUID pracovného priestoru, v ktorom notebook beží. Ak chcete nastaviť vlastný SQL pool v inom pracovnom priestore, aktualizujte ho workspace_id na GUID pracovného priestoru, kde chcete nastaviť vlastné SQL pooly.
import requests
import json
from notebookutils import mssparkutils

body = { 
  "customSQLPoolsEnabled": True, 
  "customSQLPools": [ 
    { 
      "name": "ContosoSQLPool", 
      "isDefault": False, 
      "maxResourcePercentage": 70,
      "optimizeForReads": False, 
      "classifier": { 
        "type": "Application Name", 
        "value": [ 
          "MyContosoApp"
        ] 
      } 
    }, 
    { 
      "name": "AdhocPool", 
      "isDefault": True, 
      "maxResourcePercentage": 30,
      "optimizeForReads": True
    } 
  ] 
}

# This will get the workspaceId where this notebook is running. 
# Update to the workspace_id (guid) if running this notebook outside of the workspace where the warehouse exists.
workspace_id = mssparkutils.runtime.context.get('currentWorkspaceId') 

url = f'https://api.fabric.microsoft.com/v1/workspaces/{workspace_id}/warehouses/sqlPoolsConfiguration?beta=true'
response = requests.request(method='patch', url=url, json=body, headers={'Authorization': f'Bearer {mssparkutils.credentials.getToken("pbi")}'})

if response.status_code == 200:
    print("SQL Custom Pools configured successfully.")
else:
    print(response.text)

Tip

Použite tieto užitočné hodnoty klasifikátora názvov aplikácií (regex) pre prevádzku z Fabric:

  • Na klasifikáciu dotazov z Fabric pipeline použite ^Data Integration-to[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$.
  • Na klasifikáciu dotazov z Power BI použite ^(PowerBIPremium-DirectQuery|Mashup Engine(?: \(PowerBIPremium-Import\))?).
  • Na klasifikáciu dotazov z SQL editora dotazov portálu Fabric použite DMS_user.

Nastavte názov aplikácie v SQL Server Management Studio (SSMS)

Klasifikátor pre vlastné SQL pooly používa názov aplikácie alebo parameter názvu programu bežných spojovacích reťazcov.

  1. V SQL Server Management Studio (SSMS) zadajte názov servera pre sklad a zabezpečte autentifikáciu. Odporúča sa Microsoft Entra MFA .

  2. Vyberte tlačidlo Pokročilé .

  3. Na stránke Pokročilé vlastnosti , v sekcii Kontext, zmeňte hodnotu názvu aplikácie na MyContosoApp.

    Snímka obrazovky zo SQL Server Management Studio stránky Pokročilé vlastnosti s názvom aplikácie = MyContosoApp.

  4. Vyberte položku OK.

  5. Vyberte možnosť Pripojiť.

  6. Na generovanie vzorky aktivity použite toto spojenie v SSMS na spustenie jednoduchého dotazu vo vašom sklade, napríklad:

    SELECT *
    FROM dbo.DimDate;
    

Pozorujte query insights pre vlastný SQL pool

  1. Prezrite sys.dm_exec_sessions pohľad dynamickej správy, aby ste videli, či MyContosoApp je rozpoznávaný názov aplikácie odovzdaný zo SSMS do SQL enginu.

    SELECT session_id, program_name
    FROM   sys.dm_exec_sessions
    WHERE  program_name = 'MyContosoApp';
    

    Príklad:

    Snímka obrazovky zo SQL Server Management Studio zobrazujúca výsledky dotazu na sys.dm_exec_sessions a reláciu identifikovanú názvom programu MyContosoApp.

  2. Keďže zodpovedá program_name názvu aplikácie v vlastnom MyContosoApp SQL poole, tento dotaz využíva zdroje v tomto poole. Aby ste dokázali, aký vlastný SQL pool dotaz použil, môžete dotazovať queryinsights.exec_requests_history systémový pohľad. Počkajte 10-15 minút, kým sa naplnia query insights, a potom spustite nasledujúci dotaz.

    SELECT distributed_statement_id, submit_time, 
           program_name, sql_pool_name, start_time, end_time
    FROM   queryinsights.exec_requests_history 
    WHERE  program_name = 'MyContosoApp';
    
  3. Skupinu dotazu môžete tiež identifikovať podľa jeho ID príkazu. V SQL query editore portálu Fabric spustite dotaz na vašom sklade alebo SQL analytickom endpointe.

    SELECT *
    FROM dbo.DimDate;
    
  4. Vyberte záložku Správy a zaznamenajte ID príkazu pre vykonanie dotazu. V SQL query editore je program_name, DMS_user ktorý ste predtým nastavili na použitie vlastného MyContosoApp SQL poolu.

  5. Počkajte 10-15 minút, kým sa naplnia query insights.

  6. Získajte tieto sql_pool_name a ďalšie informácie, aby ste overili, že bol použitý správny vlastný SQL pool.

    SELECT distributed_statement_id, submit_time, 
           program_name, sql_pool_name, start_time, end_time
    FROM   queryinsights.exec_requests_history 
    WHERE  distributed_statement_id = '<Statement ID>';
    

Vrátiť konfiguráciu vlastných SQL poolov

Na vrátenie pracovného priestoru do pôvodného stavu zmeňte customSQLPoolsEnabled vlastnosť na False. Ak chcete zachovať konfiguráciu vlastných SQL poolov, musíte každý názov poolu zadať ako v zozname customSQLPools .

Tento príklad Python kódu deaktivuje vlastné SQL pooly a vracia sa späť k autonómnej konfigurácii riadenia záťaže pre SELECT a ne-poolySELECT . Volá sa požiadavka s PATCH vlastnosťou nastavenou customSQLPoolsEnabled na .False

import requests
import json
from notebookutils import mssparkutils

body = { 
  "customSQLPoolsEnabled": False, 
  "customSQLPools": [] 
}

# This will get the workspaceId where this notebook is running. 
# Update to the workspace_id (guid) if running this notebook outside of the workspace where the warehouse exists.
workspace_id = mssparkutils.runtime.context.get('currentWorkspaceId') 

url = f'https://api.fabric.microsoft.com/v1/workspaces/{workspace_id}/warehouses/sqlPoolsConfiguration?beta=true'
response = requests.request(method='patch', url=url, json=body, headers={'Authorization': f'Bearer {mssparkutils.credentials.getToken("pbi")}'})

if response.status_code == 200:
    print("SQL Custom Pools successfully disabled.")
else:
    print(response.text)