Nota
Prístup na túto stránku vyžaduje autorizáciu. Môžete sa pokúsiť prihlásiť alebo zmeniť adresár.
Prístup na túto stránku vyžaduje autorizáciu. Môžete skúsiť zmeniť adresáre.
V tomto článku sa dozviete, ako nastaviť dátového agenta v Microsoft Fabric pomocou jazera ako príkladu zdroja údajov. Najprv vytvoríme a naplníme lakehouse, potom vytvoríme dátového agenta Fabric a pridáme k nemu lakehouse. Ak už máte sémantický model Power BI (s potrebnými oprávneniami na čítanie/zápis), sklad, KQL databázu alebo ontológiu, postupujte podľa rovnakých krokov a vyberte tento zdroj. Hoci tento návod používa jazerný dom, vzor je rovnaký pre ostatné zdroje – líši sa iba výber zdroja údajov.
Dôležité
Táto funkcia je vo verzii Preview.
Požiadavky
- Platená kapacita F2 alebo vyššej služby Fabric alebo kapacita Power BI Premium na kapacitu (P1 alebo vyššia) so zapnutou službou Microsoft Fabric
- nastavenia nájomníka agenta údajov služby Fabric sú povolené.
- povolené spracovanie krížovej geografickej polohy pre umelej inteligencie.
- ukladanie krížovej geografickej polohy pre umelej inteligencie je povolené.
- Aspoň jeden z nich s dátami: sklad, jazerný dom, jeden alebo viac sémantických modelov Power BI, databáza KQL alebo ontológia.
- sémantických modelov služby Power BI prostredníctvom prepínača nájomníka koncového bodu XMLA, je povolené pre zdroje údajov sémantických modelov Power BI.
Dôležité
Uistite sa, že na portáli na správu služby Power BI je povolené samostatné prostredie Copilot (nastavenia > nájomníka Copilot > Samostatné prostredie Copilot). Ak nie je povolený, nebudete môcť používať dátového agenta v scenároch Copilota, aj keď sú zapnuté iné prepínače nájomníka Copilot. Podrobnosti nájdete v téme Copilot v nastaveniach nájomníka služby Power BI.
Vytvorte si dom pri jazere s AdventureWorksLH
Najprv vytvorte dom pri jazere a naplňte ho potrebnými údajmi.
Ak už máte inštanciu AdventureWorksLH v dome pri jazere (alebo sklade), môžete tento krok preskočiť. Ak nie, môžete použiť nasledujúce pokyny z poznámkového bloku Fabric na vyplnenie jazera údajmi.
Vytvorte nový poznámkový blok v pracovnom priestore, v ktorom chcete vytvoriť dátového agenta služby Fabric.
Na ľavej strane tably Prieskumník vyberte položku + Zdroje údajov. Táto možnosť vám umožňuje pridať existujúci dom pri jazere alebo vytvoriť nový dom pri jazere. Pre prehľadnosť vytvorte nový dom pri jazere a priraďte mu názov.
Do hornej bunky pridajte nasledujúci útržok kódu:
import pandas as pd from tqdm.auto import tqdm base = "https://synapseaisolutionsa.z13.web.core.windows.net/data/AdventureWorks" # load list of tables df_tables = pd.read_csv(f"{base}/adventureworks.csv", names=["table"]) for table in (pbar := tqdm(df_tables['table'].values)): pbar.set_description(f"Uploading {table} to lakehouse") # download df = pd.read_parquet(f"{base}/{table}.parquet") # save as lakehouse table spark.createDataFrame(df).write.mode('overwrite').saveAsTable(table)Vyberte položku Spustiť všetko.
Po niekoľkých minútach sa jazerár naplní potrebnými údajmi.
Caution
Poznámkové bloky, ktoré pokračujú v prevádzke (napríklad v dôsledku náhodných nekonečných slučiek alebo neustáleho dotazovania), môžu spotrebúvať kapacitu štruktúry neobmedzene dlho. Po dokončení načítavania údajov zastavte všetky aktívne bunky a ukončite reláciu poznámkového bloku (panel s nástrojmi > poznámkového bloku Zastaviť reláciu), ak ju už nepotrebujete. Vyhnite sa pridávaniu dlhotrvajúcich slučiek bez časového limitu.
Vytvorenie dátového agenta služby Fabric
Ak chcete vytvoriť nového agenta údajov Fabric, prejdite do pracovného priestoru a vyberte tlačidlo + Nová položka , ako je to znázornené na tejto snímke obrazovky:
Na karte Všetky položky vyhľadajte údajového agenta Fabric a vyhľadajte príslušnú možnosť. Po výbere sa zobrazí výzva na zadanie názvu dátového agenta služby Fabric, ako je to znázornené na tejto snímke obrazovky:
Po zadaní názvu pokračujte nasledujúcimi krokmi, aby ste zosúladili dátového agenta služby Fabric s vašimi konkrétnymi požiadavkami.
Vyberte údaje
Vyberte dom pri jazere, ktorý ste vytvorili v predchádzajúcom kroku, a potom vyberte položku Pridať, ako je to znázornené na nasledujúcej snímke obrazovky:
Po pridaní jazerára ako zdroja údajov sa na table Prieskumník na ľavej strane stránky Agent údajov Fabric zobrazí názov jazera. Výberom domu pri jazere zobrazíte všetky dostupné tabuľky. Pomocou začiarkavacích políčok vyberte tabuľky, ktoré chcete sprístupniť umelej inteligencii. V tomto scenári vyberte tieto tabuľky:
dimcustomerdimdatedimgeographydimproductdimproductcategorydimpromotiondimresellerdimsalesterritoryfactinternetsalesfactresellersales
Poskytnite pokyny
Ak chcete pridať pokyny, vyberte tlačidlo Pokyny pre dátového agenta a otvorte tablu s pokynmi na pravej strane. Môžete pridať nasledujúce pokyny.
Zdroj AdventureWorksLH údajov obsahuje informácie z troch tabuliek:
-
dimcustomer, pre podrobné demografické údaje zákazníkov a kontaktné informácie -
dimdate, pre údaje súvisiace s dátumom – napríklad kalendárne a fiškálne informácie -
dimgeography, pre geografické podrobnosti vrátane názvov miest a kódov regiónov krajín.
Tento zdroj údajov použite na dotazy a analýzy, ktoré zahŕňajú podrobnosti o zákazníkovi, udalosti založené na čase a geografické polohy.
Uveďte príklady
Ak chcete pridať vzorové dotazy, výberom tlačidla Príklady dotazov otvorte tablu s ukážkovými dotazmi na pravej strane. Táto tabla poskytuje možnosti na pridanie alebo úpravu vzorových dotazov pre všetky podporované zdroje údajov. Pre každý zdroj údajov môžete vybrať položku Pridať alebo upraviť vzorové dotazy a zadať príslušné príklady, ako je to znázornené na nasledujúcej snímke obrazovky:
Tu by ste mali pridať príklady dotazov pre zdroj údajov Lakehouse, ktorý ste vytvorili.
Question: Calculate the average percentage increase in sales amount for repeat purchases for every zipcode. Repeat purchase is a purchase subsequent to the first purchase (the average should always be computed relative to the first purchase)
SELECT AVG((s.SalesAmount - first_purchase.SalesAmount) / first_purchase.SalesAmount * 100) AS AvgPercentageIncrease
FROM factinternetsales s
INNER JOIN dimcustomer c ON s.CustomerKey = c.CustomerKey
INNER JOIN dimgeography g ON c.GeographyKey = g.GeographyKey
INNER JOIN (
SELECT *
FROM (
SELECT
CustomerKey,
SalesAmount,
OrderDate,
ROW_NUMBER() OVER (PARTITION BY CustomerKey ORDER BY OrderDate) AS RowNumber
FROM factinternetsales
) AS t
WHERE RowNumber = 1
) first_purchase ON s.CustomerKey = first_purchase.CustomerKey
WHERE s.OrderDate > first_purchase.OrderDate
GROUP BY g.PostalCode;
Question: Show the monthly total and year-to-date total sales. Order by year and month.
SELECT
Year,
Month,
MonthlySales,
SUM(MonthlySales) OVER (PARTITION BY Year ORDER BY Year, Month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS CumulativeTotal
FROM (
SELECT
YEAR(OrderDate) AS Year,
MONTH(OrderDate) AS Month,
SUM(SalesAmount) AS MonthlySales
FROM factinternetsales
GROUP BY YEAR(OrderDate), MONTH(OrderDate)
) AS t
Poznámka
Pridanie vzorových párov dotaz/otázka nie je momentálne podporované pre zdroje údajov sémantického modelu služby Power BI.
Testovanie a revízia dátového agenta Fabric
Teraz, keď ste nakonfigurovali dátového agenta Fabric, pridali pokyny pre agenta údajov Fabric a poskytli príklady dotazov pre Lakehouse, môžete s ním pracovať kladením otázok a prijímaním odpovedí. Pri ďalšom testovaní môžete pridať ďalšie príklady a spresniť pokyny, aby ste ešte viac zlepšili výkon dátového agenta Fabric. Spolupracujte so svojimi kolegami na získavaní spätnej väzby a na základe ich vstupov sa uistite, že poskytnuté príklady otázok a pokynov sú v súlade s typmi otázok, ktoré chcú položiť.
Publikovanie dátového agenta služby Fabric
Po overení výkonu agenta údajov Fabric sa môžete rozhodnúť ho publikovať, aby ste ho potom mohli zdieľať so svojimi kolegami, ktorí chcú pracovať na otázkach a odpovediach nad údajmi. V takom prípade vyberte položku Publikovať, ako je to znázornené na tejto snímke obrazovky:
Otvorí sa okno Publikovať dátového agenta , ako je znázornené na tejto snímke obrazovky:
V tomto poli vyberte položku Publikovať a publikujte dátového agenta Fabric. Zobrazí sa publikovaná URL adresa agenta údajov Fabric, ako je znázornené na tejto snímke obrazovky:
Použitie dátového agenta Fabric v Copilote v službe Power BI
Copilot v službe Power BI môžete použiť na interakciu s dátovým agentom Fabric po jeho publikovaní. Pomocou aplikácie Copilot v službe Power BI môžete priamo využívať dátového agenta a ďalšie položky (napríklad zostavy alebo sémantické modely) bez toho, aby ste medzi nimi museli prepínať.
Výberom tlačidla Copilot na ľavej navigačnej table otvorte Copilot v službe Power BI. Potom vyberte položku Pridať položky pre lepšie výsledky v textovom poli v dolnej časti a pridajte dátového agenta. V okne, ktoré sa otvorí, vyberte položku Dátoví agenti . Môžete vidieť iba dátových agentov, ku ktorým máte povolenie na prístup. Vyberte požadovaného dátového agenta a vyberte položku Potvrdiť. Tento príklad ukazuje, ako pracovať s jedným dátovým agentom, ale môžete pridať ďalšie položky – napríklad iných dátových agentov, zostavy alebo sémantické modely. Nasledujúca snímka obrazovky znázorňuje kroky s jedným dátovým agentom:
Teraz, keď ste pridali dátového agenta do Copilota v službe Power BI, môžete položiť akékoľvek otázky týkajúce sa dátového agenta služby Fabric, ako je znázornené na nasledujúcej snímke obrazovky:
Programové použitie dátového agenta služby Fabric
Dátového agenta Fabric môžete použiť programovo v rámci poznámkového bloku Fabric. Ak chcete zistiť, či má agent údajov Fabric publikovanú hodnotu URL adresy, vyberte položku Nastavenia, ako je to znázornené na nasledujúcej snímke obrazovky:
Pred publikovaním dátového agenta Fabric nemá publikovanú hodnotu URL adresy, ako je znázornené na nasledujúcej snímke obrazovky:
Ak ste agenta údajov Fabric ešte nepublikovali, môžete ho publikovať podľa pokynov v predchádzajúcich krokoch. Potom môžete skopírovať publikovanú URL adresu a použiť ju v poznámkovom bloku Fabric. Týmto spôsobom môžete dotazovať agenta údajov Fabric volaním rozhrania API agenta údajov Fabric v poznámkovom bloku Fabric. Vložte skopírovanú URL adresu do tohto útržku kódu. Potom nahraďte otázku akýmkoľvek dotazom relevantným pre vášho agenta údajov Fabric. Tento príklad sa používa \<generic published URL value\> ako adresa URL.
Dôležité
Pri programovom volaní dátového agenta implementujte:
- Časový limit hlasovania (pozri príklad nižšie), aby sa predišlo neurčitým slučkám.
- Minimálna frekvencia dotazovania (začnite na 2 – 5 sekundách; zvýšte len v prípade potreby).
- Čistenie vytvorených vlákien alebo zdrojov po dokončení.
- Po dokončení sa relácia poznámkového bloku vypne, aby sa uvoľnila kapacita štruktúry.
Poznámka
Upravte piny verzií (openai, synapseml, , pandas) tqdmna najnovšie overené verzie modulu runtime služby Fabric, ak sú tieto presné verzie zastarané.
%pip install "openai==1.70.0"
%pip install "synapseml==1.0.5" # Required for synapse.ml.mlflow (update version as needed)
%pip install pandas tqdm # Skip if already available in the Fabric runtime
import typing as t
import time
import uuid
# OpenAI SDK internals
from openai import OpenAI
from openai._models import FinalRequestOptions
from openai._types import Omit
from openai._utils import is_given
# SynapseML helper for env config
from synapse.ml.mlflow import get_mlflow_env_config
# Removed unused imports: requests, json, pprint, APIStatusError, SynapseTokenProvider
base_url = "https://<generic published base URL value>"
question = "What data sources do you have access to?"
configs = get_mlflow_env_config()
# Create OpenAI Client
class FabricOpenAI(OpenAI):
def __init__(
self,
api_version: str ="2024-05-01-preview",
**kwargs: t.Any,
) -> None:
self.api_version = api_version
default_query = kwargs.pop("default_query", {})
default_query["api-version"] = self.api_version
super().__init__(
api_key="",
base_url=base_url,
default_query=default_query,
**kwargs,
)
def _prepare_options(self, options: FinalRequestOptions) -> None:
headers: dict[str, str | Omit] = (
{**options.headers} if is_given(options.headers) else {}
)
options.headers = headers
headers["Authorization"] = f"Bearer {configs.driver_aad_token}"
if "Accept" not in headers:
headers["Accept"] = "application/json"
if "ActivityId" not in headers:
correlation_id = str(uuid.uuid4())
headers["ActivityId"] = correlation_id
return super()._prepare_options(options)
# Pretty printing helper
def pretty_print(messages):
print("---Conversation---")
for m in messages:
print(f"{m.role}: {m.content[0].text.value}")
print()
fabric_client = FabricOpenAI()
# Create assistant
assistant = fabric_client.beta.assistants.create(model="not used")
# Create thread
thread = fabric_client.beta.threads.create()
# Create message on thread
message = fabric_client.beta.threads.messages.create(thread_id=thread.id, role="user", content=question)
# Create run
run = fabric_client.beta.threads.runs.create(thread_id=thread.id, assistant_id=assistant.id)
# Wait for run to complete (avoid indefinite loop)
terminal_states = {"completed", "failed", "cancelled", "requires_action"}
poll_interval = 2
timeout_seconds = 300 # Adjust based on expected workload
start_time = time.time()
while run.status not in terminal_states:
if time.time() - start_time > timeout_seconds:
raise TimeoutError(f"Run polling exceeded {timeout_seconds} seconds (last status={run.status})")
run = fabric_client.beta.threads.runs.retrieve(
thread_id=thread.id,
run_id=run.id,
)
print(run.status)
time.sleep(poll_interval)
if run.status != "completed":
print(f"Run finished with status: {run.status}")
# Print messages
response = fabric_client.beta.threads.messages.list(thread_id=thread.id, order="asc")
pretty_print(response)
# Delete thread
fabric_client.beta.threads.delete(thread_id=thread.id)