Παράδειγμα παράγοντα δεδομένων Fabric με το σύνολο δεδομένων AdventureWorks (έκδοση προεπισκόπησης)

Αυτό το άρθρο δείχνει πώς μπορείτε να ρυθμίσετε έναν παράγοντα δεδομένων στο Microsoft Fabric χρησιμοποιώντας ένα lakehouse ως παράδειγμα προέλευσης δεδομένων. Πρώτα δημιουργούμε και συμπληρώνουμε ένα lakehouse και, στη συνέχεια, δημιουργούμε έναν παράγοντα δεδομένων Fabric και προσθέτουμε το lakehouse σε αυτό. Εάν έχετε ήδη ένα σημασιολογικό μοντέλο Power BI, βεβαιωθείτε ότι έχετε δικαίωμα ανάγνωσης για να αλληλεπιδράσετε με αυτό μέσω ενός παράγοντα δεδομένων (το δικαίωμα εγγραφής απαιτείται μόνο για την τροποποίηση του μοντέλου σημασιολογίας ή τη χρήση δυνατοτήτων όπως η Προετοιμασία για AI). Για μια αποθήκη, μια βάση δεδομένων KQL ή μια οντολογία, ακολουθήστε τα ίδια βήματα και επιλέξτε αυτήν την προέλευση. Αν και αυτή η περιήγηση χρησιμοποιεί ένα lakehouse, το μοτίβο είναι το ίδιο για άλλες πηγές. Μόνο η επιλογή της πηγής δεδομένων διαφέρει.

Important

Αυτή η δυνατότητα είναι σε προεπισκόπηση.

Prerequisites

Important

Βεβαιωθείτε ότι η μεμονωμένη εμπειρία Copilot είναι ενεργοποιημένη στην πύλη διαχείρισης Power BI (Ρυθμίσεις μισθωτή > Copilot > Αυτόνομη εμπειρία Copilot). Εάν δεν είναι ενεργοποιημένο, δεν θα μπορείτε να χρησιμοποιήσετε τον παράγοντα δεδομένων μέσα σε σενάρια Copilot, ακόμα και αν είναι ενεργοποιημένοι άλλοι διακόπτες μισθωτή Copilot. Για λεπτομέρειες, ανατρέξτε στο θέμα Copilot στις ρυθμίσεις μισθωτή Power BI.

Δημιουργία lakehouse με AdventureWorksLH

Πρώτα, δημιουργήστε ένα lakehouse και συμπληρώστε το με τα απαραίτητα δεδομένα.

Εάν έχετε ήδη μια παρουσία της AdventureWorksLH σε ένα lakehouse (ή αποθήκη), μπορείτε να παραλείψετε αυτό το βήμα. Εάν όχι, μπορείτε να χρησιμοποιήσετε τις παρακάτω οδηγίες από ένα σημειωματάριο Fabric για να συμπληρώσετε το lakehouse με τα δεδομένα.

  1. Δημιουργήστε ένα νέο σημειωματάριο στον χώρο εργασίας όπου θέλετε να δημιουργήσετε τον παράγοντα δεδομένων Fabric.

  2. Στην αριστερή πλευρά του παραθύρου της Εξερεύνησης , επιλέξτε + Προελεύσεις δεδομένων. Αυτή η επιλογή σάς επιτρέπει να προσθέσετε μια υπάρχουσα λίμνη ή δημιουργεί ένα νέο lakehouse. Για λόγους σαφήνειας, δημιουργήστε ένα νέο lakehouse και εκχωρήστε ένα όνομα σε αυτό.

  3. Στο επάνω κελί, προσθέστε το ακόλουθο τμήμα κώδικα:

    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)
    
  4. Επιλέξτε Εκτέλεση όλων.

Στιγμιότυπο οθόνης που εμφανίζει ένα σημειωματάριο με τον κώδικα αποστολής του AdventureWorks.

Μετά από λίγα λεπτά, το lakehouse συμπληρώνεται με τα απαραίτητα δεδομένα.

Caution

Τα σημειωματάρια που συνεχίζουν να εκτελούνται (για παράδειγμα, λόγω τυχαίων άπειρων βρόχων ή συνεχούς σταθμοσκόπησης) μπορούν να καταναλώνουν τη χωρητικότητα του Fabric επ' αόριστον. Αφού ολοκληρωθεί η φόρτωση των δεδομένων, διακόψτε τυχόν ενεργά κελιά και τερματίστε την περίοδο λειτουργίας του σημειωματαρίου (Γραμμή εργαλείων > σημειωματαρίου Διακοπή περιόδου λειτουργίας) εάν δεν τα χρειάζεστε πλέον. Αποφύγετε την προσθήκη βρόχων μεγάλης διάρκειας χωρίς χρονικό όριο.

Δημιουργία παράγοντα δεδομένων Fabric

Για να δημιουργήσετε έναν νέο παράγοντα δεδομένων Fabric, μεταβείτε στον χώρο εργασίας σας και επιλέξτε το κουμπί + Νέο στοιχείο, όπως φαίνεται σε αυτό το στιγμιότυπο οθόνης:

Στιγμιότυπο οθόνης που δείχνει πού να δημιουργήσετε Fabric πράκτορες δεδομένων.

Στην καρτέλα Όλα τα στοιχεία, αναζητήστε Fabric παράγοντα δεδομένων για να εντοπίσετε την κατάλληλη επιλογή. Αφού επιλεγεί, ένα μήνυμα σάς ζητά να δώσετε ένα όνομα για τον παράγοντα δεδομένων Fabric, όπως φαίνεται σε αυτό το στιγμιότυπο οθόνης:

Στιγμιότυπο οθόνης που δείχνει πού να δώσετε όνομα για τον Fabric παράγοντα δεδομένων.

Αφού εισαγάγετε το όνομα, ακολουθήστε τα παρακάτω βήματα για να ευθυγραμμίσετε τον παράγοντα δεδομένων Fabric με τις συγκεκριμένες απαιτήσεις σας.

Επιλογή των δεδομένων

Επιλέξτε το σπίτι λίμνης που δημιουργήσατε στο προηγούμενο βήμα και, στη συνέχεια, επιλέξτε Προσθήκη, όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης:

Στιγμιότυπο οθόνης που εμφανίζει το βήμα προσθήκης lakehouse.

Μόλις προστεθεί το lakehouse ως προέλευση δεδομένων, το τμήμα παραθύρου Explorer στην αριστερή πλευρά της σελίδας παράγοντα δεδομένων Fabric εμφανίζει το όνομα του lakehouse. Επιλέξτε τη λίμνη για να δείτε όλους τους διαθέσιμους πίνακες. Χρησιμοποιήστε τα πλαίσια ελέγχου για να επιλέξετε τους πίνακες που θέλετε να καταστήσετε διαθέσιμους στο AI. Για αυτό το σενάριο, επιλέξτε αυτούς τους πίνακες:

  • dimcustomer
  • dimdate
  • dimgeography
  • dimproduct
  • dimproductcategory
  • dimpromotion
  • dimreseller
  • dimsalesterritory
  • factinternetsales
  • factresellersales

στιγμιότυπο οθόνης που εμφανίζει πού μπορείτε να επιλέξετε πίνακες για AI.

Δικαιώματα για σημασιολογικά μοντέλα σε πράκτορες δεδομένων

Οι χρήστες χρειάζονται μόνο δικαίωμα ανάγνωσης σε ένα σημασιολογικό μοντέλο Power BI για να το προσθέσουν σε έναν παράγοντα δεδομένων και να υποβάλουν ερωτήσεις μέσω του εκπροσώπου. Η πρόσβαση στον χώρο εργασίας (ρόλος μέλους) και το δικαίωμα δημιουργίας δεν απαιτούνται για αλληλεπίδραση μέσω παραγόντων δεδομένων. Το δικαίωμα εγγραφής απαιτείται μόνο για την τροποποίηση του μοντέλου σημασιολογίας ή τη χρήση δυνατοτήτων όπως η Προετοιμασία για AI.

Αυτή η αλλαγή δικαιωμάτων ισχύει μόνο για αλληλεπιδράσεις μέσω παραγόντων δεδομένων. Άλλα μοτίβα πρόσβασης (για παράδειγμα, Ανάλυση στο Excel ή απευθείας σύνταξη αναφορών) ακολουθούν τα τυπικά δικαιώματα Power BI.

Παροχή οδηγιών

Για να προσθέσετε οδηγίες, επιλέξτε το κουμπί Οδηγίες παράγοντα δεδομένων για να ανοίξετε το παράθυρο οδηγιών στα δεξιά. Μπορείτε να προσθέσετε τις παρακάτω οδηγίες.

Η AdventureWorksLH προέλευση δεδομένων περιέχει πληροφορίες από τρεις πίνακες:

  • dimcustomer, για λεπτομερή δημογραφικά στοιχεία πελατών και στοιχεία επικοινωνίας
  • dimdate, για δεδομένα που σχετίζονται με ημερομηνίες - για παράδειγμα, ημερολογιακές και οικονομικές πληροφορίες
  • dimgeography, για γεωγραφικές λεπτομέρειες, συμπεριλαμβανομένων των ονομάτων πόλεων και των κωδικών περιοχών.

Χρησιμοποιήστε αυτήν την προέλευση δεδομένων για ερωτήματα και αναλύσεις που αφορούν λεπτομέρειες πελατών, συμβάντα βάσει χρόνου και γεωγραφικές θέσεις.

Στιγμιότυπο οθόνης που εμφανίζει πού μπορείτε να παρέχετε τις οδηγίες στο AI.

Δώστε παραδείγματα

Για να προσθέσετε παραδείγματα ερωτημάτων, επιλέξτε το κουμπί Παραδείγματα ερωτημάτων για να ανοίξετε το παράθυρο παραδειγμάτων ερωτημάτων στα δεξιά. Αυτό το τμήμα παραθύρου παρέχει επιλογές για την προσθήκη ή επεξεργασία παραδειγμάτων ερωτημάτων για όλες τις υποστηριζόμενες προελεύσεις δεδομένων. Για κάθε προέλευση δεδομένων, μπορείτε να επιλέξετε Προσθήκη ή Επεξεργασία παραδειγμάτων ερωτημάτων για να εισαγάγετε τα σχετικά παραδείγματα, όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης:

Στιγμιότυπο οθόνης που εμφανίζει πού μπορείτε να προσθέσετε τα παραδείγματα που παρέχετε στο AI.

Εδώ, θα πρέπει να προσθέσετε Παραδείγματα ερωτημάτων για την προέλευση δεδομένων lakehouse που δημιουργήσατε.

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

Στιγμιότυπο οθόνης που εμφανίζει την προσθήκη παραδειγμάτων SQL.

Note

Η προσθήκη δειγμάτων ζευγών ερωτημάτων/ερωτήσεων δεν υποστηρίζεται προς το παρόν για προελεύσεις δεδομένων σημασιολογικού μοντέλου Power BI.

Δοκιμή και αναθεώρηση του παράγοντα δεδομένων Fabric

Τώρα που ρυθμίσατε τις παραμέτρους του παράγοντα δεδομένων Fabric, προσθέσατε οδηγίες για τον παράγοντα δεδομένων Fabric και παρείχατε παραδείγματα ερωτημάτων για το lakehouse, μπορείτε να αλληλεπιδράσετε μαζί του υποβάλλοντας ερωτήσεις και λαμβάνοντας απαντήσεις. Καθώς συνεχίζετε τις δοκιμές, μπορείτε να προσθέσετε περισσότερα παραδείγματα και να βελτιώσετε τις οδηγίες, για να βελτιώσετε περαιτέρω τις επιδόσεις του παράγοντα δεδομένων Fabric. Συνεργαστείτε με τους συναδέλφους σας για να συγκεντρώσετε σχόλια και, με βάση τα σχόλιά τους, βεβαιωθείτε ότι τα παραδείγματα ερωτημάτων και οδηγιών που παρέχονται ευθυγραμμίζονται με τους τύπους ερωτήσεων που θέλουν να κάνουν.

Δημοσίευση του παράγοντα δεδομένων Fabric

Αφού επικυρώσετε τις επιδόσεις του παράγοντα δεδομένων Fabric, μπορεί να αποφασίσετε να το δημοσιεύσετε, ώστε να μπορείτε στη συνέχεια να το μοιραστείτε με τους συναδέλφους σας που θέλουν να κάνουν Q& Α πάνω από δεδομένα. Σε αυτήν την περίπτωση, επιλέξτε Δημοσίευση, όπως φαίνεται σε αυτό το στιγμιότυπο οθόνης:

Στιγμιότυπο οθόνης που εμφανίζει την επιλογή δημοσίευσης.

Ανοίγει το πλαίσιο παράγοντα δεδομένων Δημοσίευση, όπως φαίνεται σε αυτό το στιγμιότυπο οθόνης:

Στιγμιότυπο οθόνης που εμφανίζει τη δυνατότητα παράγοντα δημοσίευσης δεδομένων.

Σε αυτό το πλαίσιο, επιλέξτε Δημοσίευση για να δημοσιεύσετε τον παράγοντα δεδομένων Fabric. Μόλις δημοσιευτεί, ο παράγοντας δεδομένων μπορεί να καταναλωθεί ως διακομιστής πρωτοκόλλου περιβάλλοντος μοντέλου (MCP).

Χρήση του παράγοντα δεδομένων Fabric μέσω προγραμματισμού

Μπορείτε να χρησιμοποιήσετε τον παράγοντα δεδομένων Fabric μέσω προγραμματισμού μέσα σε ένα σημειωματάριο Fabric. Για να προσδιορίσετε εάν ο παράγοντας δεδομένων Fabric έχει δημοσιευμένη τιμή διεύθυνσης URL, επιλέξτε Settings, όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης:

Στιγμιότυπο οθόνης που δείχνει την επιλογή των ρυθμίσεων Fabric παράγοντα δεδομένων.

Πριν δημοσιεύσετε τον παράγοντα δεδομένων Fabric, δεν έχει δημοσιευμένη τιμή διεύθυνσης URL, όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης:

Στιγμιότυπο οθόνης που δείχνει ότι ένας παράγοντας δεδομένων Fabric δεν έχει δημοσιευμένη τιμή διεύθυνσης URL πριν από τη δημοσίευση.

Εάν δεν έχετε δημοσιεύσει τον παράγοντα δεδομένων Fabric στο παρελθόν, μπορείτε να τον δημοσιεύσετε ακολουθώντας τις οδηγίες στα προηγούμενα βήματα. Στη συνέχεια, μπορείτε να αντιγράψετε τη δημοσιευμένη διεύθυνση URL και να τη χρησιμοποιήσετε στο σημειωματάριο Fabric. Με αυτόν τον τρόπο, μπορείτε να υποβάλετε ερώτημα στον παράγοντα δεδομένων Fabric πραγματοποιώντας κλήσεις στο API του παράγοντα δεδομένων Fabric σε ένα σημειωματάριο Fabric. Επικολλήστε τη διεύθυνση URL που αντιγράψατε σε αυτό το τμήμα κώδικα. Στη συνέχεια, αντικαταστήστε την ερώτηση με οποιοδήποτε ερώτημα που σχετίζεται με τον παράγοντα δεδομένων Fabric. Αυτό το παράδειγμα χρησιμοποιείται \<generic published URL value\> ως διεύθυνση URL.

Important

Όταν καλείτε έναν πράκτορα δεδομένων μέσω προγραμματισμού, υλοποιήστε:

  1. Ένα χρονικό όριο ψηφοφορίας (δείτε το παρακάτω παράδειγμα) για την αποφυγή αόριστων βρόχων.
  2. Ελάχιστη συχνότητα ψηφοφορίας (ξεκινήστε στα 2-5 δευτερόλεπτα, αυξήστε μόνο εάν χρειάζεται).
  3. Εκκαθάριση δημιουργημένων νημάτων ή πόρων μετά την ολοκλήρωση.
  4. Τερματισμός περιόδου λειτουργίας σημειωματαρίου όταν ολοκληρωθεί για να απελευθερωθούν οι εκχωρημένοι πόροι του Fabric.

Note

Προσαρμόστε τις καρφίτσες έκδοσης (openai, synapseml, pandas, tqdm) στις πιο πρόσφατες επικυρωμένες εκδόσεις για τον χρόνο εκτέλεσης του Fabric σας, εάν αυτές ακριβώς οι εκδόσεις είναι παρωχημένες.

%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

Important

Δεδομένου ότι το OpenAI απέσυρε το Assistants API, οι εφαρμογές θα πρέπει να χρησιμοποιούν το τελικό σημείο MCP για αλληλεπιδράσεις πρακτόρων. Σε αντίθεση με το Assistants API, το τελικό σημείο MCP δεν παρέχει ενσωματωμένη διαχείριση συνομιλιών, επομένως οι καλούντες πρέπει να ενορχηστρώνουν αλληλεπιδράσεις πολλαπλών στροφών διατηρώντας την κατάσταση συνομιλίας και παρέχοντας σχετικό πλαίσιο σε όλα τα αιτήματα.

Υποβολή ερωτήματος στον πράκτορα δεδομένων από την Python

Το παρακάτω παράδειγμα συνδέεται με το τελικό σημείο MCP, ανακαλύπτει το εργαλείο, στέλνει μια ερώτηση και εκτυπώνει την απάντηση. Επαναχρησιμοποιεί το credential βήμα από τον έλεγχο ταυτότητας στο Fabric και χρησιμοποιεί το MCP Python SDK. Εγκαταστήστε πρώτα το SDK:

%pip install mcp
import asyncio

from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

workspace_id = "<your-workspace-id>"
data_agent_id = "<your-data-agent-id>"
question = "<your question>"

mcp_url = (
    f"https://api.fabric.microsoft.com/v1/mcp/workspaces/{workspace_id}"
    f"/dataagents/{data_agent_id}/agent"
)


def get_auth_headers():
    token = credential.get_token("https://api.fabric.microsoft.com/.default")
    return {"Authorization": f"Bearer {token.token}"}


async def query_data_agent(question):
    headers = get_auth_headers()

    async with streamablehttp_client(mcp_url, headers=headers) as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()

            # The data agent exposes a single tool. Discover it, then call it.
            tools = await session.list_tools()
            tool = tools.tools[0]
            question_arg = next(iter(tool.inputSchema["properties"]))

            result = await session.call_tool(tool.name, {question_arg: question})

            answers = [block.text for block in result.content if block.type == "text"]
            return "\n".join(answers)


answer = asyncio.run(query_data_agent(question))
print(answer)