Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk bemutatja, hogyan állíthat be egy adatügynököt a Microsoft Fabricben egy lakehouse használatával, mint példaadatforrás. Először létrehozunk és feltöltünk egy tóházat, majd létrehozunk egy Fabric-adatügynököt, és hozzáadjuk a tóházat. Ha már rendelkezik Power BI szemantikai modellel (a szükséges olvasási/írási engedélyekkel), egy raktárral, egy KQL-adatbázissal vagy egy ontológiával, kövesse ugyanazokat a lépéseket, és válassza ki helyette a forrást. Bár ez az útmutató egy tóházat használ, a minta más források esetében is ugyanaz – csak az adatforrás kiválasztása különbözik.
Előfeltételek
- Fizetős F2 vagy magasabb Fabric-kapacitás, vagy Kapacitásonkénti Power BI Premium (P1 vagy újabb) kapacitás a Microsoft Fabric engedélyezésével
- A Fabric-adatügynök bérlői beállításai engedélyezve vannak.
- AI földrajzi területeken átívelő feldolgozása engedélyezett.
- Több földrajzi helyen történő tárolás a mesterséges intelligencia számára engedélyezve van.
- Legalább egy ilyen adattal: Egy raktár, egy tóház, egy vagy több Power BI szemantikai modell, KQL-adatbázis vagy ontológia.
- Az XMLA-végpontokon keresztüli Power BI szemantikai modellek bérlői váltása engedélyezve van a Power BI szemantikai modell adatforrásai számára.
Fontos
Győződjön meg arról, hogy az önálló Copilot-élmény engedélyezve van a Power BI felügyeleti portálján (Bérlői beállítások > A Copilot > önálló copilot felülete). Ha nincs engedélyezve, nem fogja tudni használni az adatügynököt a Copiloton belüli forgatókönyvekben, még akkor sem, ha más Copilot bérlői kapcsolók be vannak kapcsolva. További részletekért lásd a Copilotot a Power BI-bérlői beállításokban.
Tóház létrehozása az AdventureWorksLH használatával
Először hozzon létre egy tóházat, és töltse ki a szükséges adatokkal.
Ha már rendelkezik egy AdventureWorksLH-példánysal egy tóházban (vagy egy raktárban), kihagyhatja ezt a lépést. Ha nem, a Fabric-jegyzetfüzet alábbi utasításait követve feltöltheti a tóházat az adatokkal.
Hozzon létre egy új jegyzetfüzetet a munkaterületen, ahol létre szeretné hozni a Fabric-adatügynököt.
Az Explorer panel bal oldalán válassza a + Adatforrások lehetőséget. Ezzel a beállítással hozzáadhat egy meglévő tóházat, vagy létrehozhat egy új tóházat. Az egyértelműség kedvéért hozzon létre egy új tóházat, és rendeljen hozzá egy nevet.
A felső cellába adja hozzá a következő kódrészletet:
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)Válassza a Összes futtatása lehetőséget.
Néhány perc múlva a tóház feltöltődik a szükséges adatokkal.
Caution
A továbbra is futó jegyzetfüzetek (például véletlen végtelen ciklusok vagy állandó lekérdezések miatt) korlátlan ideig használhatják a Fabric-kapacitást. Miután az adatok betöltése befejeződött, állítsa le az aktív cellákat, és fejezze be a jegyzetfüzet-munkamenetet (Jegyzetfüzet eszköztár > – Munkamenet leállítása), ha már nincs rá szüksége. Kerülje az időtúllépés nélküli, hosszú ideig futó hurkok hozzáadását.
Fabric adatügynök létrehozása
Új Fabric-adatügynök létrehozásához lépjen a munkaterületére, és válassza a + Új elem gombot, ahogyan az ezen a képernyőképen látható:
A Minden elem fülön keresse a Szövet adatügynök a megfelelő beállítás megkereséséhez. Miután kiválasztotta, egy üzenet arra kéri, hogy adjon nevet a Fabric-adatügynöknek, ahogyan az a képernyőképen látható:
A név megadása után folytassa a következő lépésekkel, hogy a Fabric-adatügynök megfeleljen a megadott követelményeknek.
Válassza ki az adatokat
Válassza ki az előző lépésben létrehozott tóházat, majd válassza a Hozzáadás lehetőséget, ahogy az a következő képernyőképen látható.
Miután hozzáadta a lakehouse-t adatforrásként, a Explorer panel a Fabric Data Agent oldal bal oldalán a lakehouse nevét jeleníti meg. Válassza ki a tóházat az összes elérhető tábla megtekintéséhez. A jelölőnégyzetek használatával jelölje ki az AI számára elérhetővé tenni kívánt táblákat. Ebben a forgatókönyvben válassza ki az alábbi táblázatokat:
dimcustomerdimdatedimgeographydimproductdimproductcategorydimpromotiondimresellerdimsalesterritoryfactinternetsalesfactresellersales
Utasítások megadása
Utasítások hozzáadásához válassza az Adatügynök utasításai gombot az utasítások panel jobb oldalán való megnyitásához. Az alábbi utasításokat is hozzáadhatja.
A AdventureWorksLH adatforrás három táblából tartalmaz információkat:
-
dimcustomer, az ügyfelek részletes demográfiai adataiért és kapcsolattartási adataiért -
dimdatedátummal kapcsolatos adatok esetén– például naptár- és pénzügyi információk -
dimgeographyföldrajzi adatok, beleértve a városneveket és az országrégió kódjait.
Ezt az adatforrást olyan lekérdezésekhez és elemzésekhez használhatja, amelyek magukban foglalják az ügyfelek adatait, az időalapú eseményeket és a földrajzi helyeket.
Példák megadása
Példa lekérdezések hozzáadásához válassza a Példa lekérdezések gombot a minta lekérdezések panel jobb oldalán való megnyitásához. Ez a panel az összes támogatott adatforrás minta lekérdezéseinek hozzáadására és szerkesztésére szolgál. Az egyes adatforrások esetében kiválaszthatja a Példalekérdezések hozzáadása vagy szerkesztése lehetőséget a megfelelő példák beviteléhez, ahogyan az alábbi képernyőképen látható:
Ebben a példában példa lekérdezéseket kell hozzáadnia a létrehozott lakehouse-adatforráshoz.
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
Megjegyzés:
A Power BI szemantikai modell adatforrásai jelenleg nem támogatják a minta lekérdezés-/kérdéspárok hozzáadását.
A Fabric-adatügynök tesztelése és felülvizsgálata
Most, hogy konfigurálta a Fabric-adatügynököt, hozzáadta a Fabric-adatügynök utasításait, és példákat adott a lakehouse-hoz, kérdéseket tehet fel, és válaszokat kaphat. A tesztelés folytatása során további példákat adhat hozzá, és finomíthatja az utasításokat a Fabric-adatügynök teljesítményének további javítása érdekében. A munkatársaival együttműködve visszajelzéseket gyűjthet, és a bemenetük alapján biztosíthatja, hogy a megadott példaként megadott lekérdezések és utasítások összhangban legyenek a feltenni kívánt kérdéstípusokkal.
A Fabric-adatügynök közzététele
Miután ellenőrizte a Fabric adatügynök teljesítményét, dönthet úgy, hogy közzéteszi, így megoszthatja azokat az adatokkal kapcsolatos kérdések és válaszok elvégzésére kíváncsi munkatársaival. Ebben az esetben válassza a Közzététel lehetőséget a képernyőképen látható módon:
A Adatközlő ügynök mező megnyílik, ahogyan az ezen a képernyőképen látható:
Ebben a dobozban válassza a Közzététel lehetőséget a Fabric-adatügynök közzétételéhez. Megjelenik a Fabric-adatügynök közzétett URL-címe a képernyőképen látható módon:
A Fabric-adatügynök használata a Copilotban a Power BI-ban
A Power BI-ban a Copilot használatával kommunikálhat a Fabric-adatügynökkel a közzététel után. A Copilot a Power BI-ban közvetlenül felhasználhatja az adatügynököt és más elemeket (például jelentéseket vagy szemantikai modelleket), anélkül, hogy váltania kellene közöttük.
Válassza a Copilot gombot a bal oldali navigációs panelen, és nyissa meg a Copilotot a Power BI-ban. Ezután válassza az Elemek hozzáadása a jobb eredmény érdekében lehetőséget az alsó szövegmezőben az adatügynök hozzáadásához. Válassza ki az Adatügynököket a megnyíló ablakban. Csak azokat az adatügynököket láthatja, amelyekhez hozzáféréssel rendelkezik. Válassza ki a kívánt adatügynököt, és válassza a Megerősítés lehetőséget. Ez a példa bemutatja, hogyan használható egyetlen adatügynökkel, de további elemeket is hozzáadhat – például más adatügynököket, jelentéseket vagy szemantikai modelleket. Az alábbi képernyőkép egyetlen adatügynökkel szemlélteti a lépéseket:
Most, hogy hozzáadta az adatügynököt a Copilothoz a Power BI-ban, kérdéseket tehet fel a Fabric-adatügynökkel kapcsolatban, ahogyan az alábbi képernyőképen látható:
A Fabric-adatügynök programozott használata
A Fabric-adatügynök programozott módon használható a Fabric-jegyzetfüzetben. Annak megállapításához, hogy a Háló-adatügynök rendelkezik-e közzétett URL-értékkel, válassza a Beállítások lehetőséget az alábbi képernyőképen látható módon:
A Fabric-adatügynök közzététele előtt nem rendelkezik közzétett URL-értékkel, ahogyan az az alábbi képernyőképen látható:
Ha még nem tette közzé a Fabric adatügynököt, az előző lépésekben leírt utasításokat követve megteheti. Ezután másolhatja a közzétett URL-címet, és használhatja a Fabric notebookban. Így lekérdezheti a Fabric-adatügynököt úgy, hogy meghívja a Fabric-adatügynök API-t egy Fabric-jegyzetfüzetben. Illessze be ebben a kódrészletben a másolt URL-címet. Ezután cserélje le a kérdést a Fabric-adatügynökre vonatkozó lekérdezésre. Ez a példa URL-címként szolgál \<generic published URL value\> .
Fontos
Az adatügynök programozott meghívásakor implementálja a következőt:
- A lekérdezések időtúllépése (lásd az alábbi példát) a határozatlan idejű hurkok elkerülése érdekében.
- Minimális lekérdezési gyakoriság (2–5 másodpercnél kezdődik, csak szükség esetén növekszik).
- A létrehozott szálak vagy erőforrások törlése a befejezés után.
- A jegyzetfüzet munkamenetének leállítása, ha befejeződött a Fabric-kapacitás felszabadítása.
Megjegyzés:
Ha ezek a verziók elavulttá válnak, állítsa a verziótűket (openai, synapseml, pandas, tqdm) a Fabric futtatókörnyezet legújabb érvényesített verzióira.
%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)
Kapcsolódó tartalom
- Szöveti adatügynök koncepciója
- Fabric-adatügynök létrehozása