AdventureWorks veri kümesiyle Fabric veri aracısı örneği (önizleme)

Microsoft Fabric'da, örnek veri kaynağı olarak bir lakehouse kullanarak veri aracısını nasıl ayarlayacağınızı bu makalede gösteriyoruz. Önce bir lakehouse oluşturup doldururuz, ardından bir Fabric veri aracısı oluşturur ve lakehouse'u buna ekleriz. Zaten Power BI bir semantik modeliniz varsa, veri aracısı aracılığıyla bu modelle etkileşime geçmek için Okuma izniniz olduğundan emin olun (Yazma izni yalnızca anlam modelini değiştirmek veya yapay zeka için hazırlık gibi özellikleri kullanmak için gereklidir). Bir ambar, KQL veritabanı veya ontoloji için aynı adımları izleyin ve bunun yerine bu kaynağı seçin. Bu inceleme bir lakehouse kullansa da, şablon diğer kaynaklar için de aynıdır; yalnızca veri kaynağı seçimi farklıdır.

Önemli

Bu özellik önizleme aşamasındadır.

Önkoşullar

Önemli

OneLake kataloğunda>Govern>Yapılandırmalar>Kiracı ayarları>Copilot>Bağımsız Copilot deneyimi'nin etkinleştirildiğinden emin olun. Etkinleştirilmemişse, diğer Copilot kiracı anahtarları açık olsa da Copilot senaryolarında veri aracısını kullanamazsınız. Ayrıntılar için bkz. Power BI kiracı ayarlarında Copilot.

AdventureWorksLH ile göl evi oluşturma

İlk olarak bir göl evi oluşturun ve gerekli verilerle doldurun.

Bir göl evinde (veya bir depoda) AdventureWorksLH örneği zaten varsa bu adımı atlayabilirsiniz. Aksi takdirde, lakehouse'u verilerle doldurmak için bir Fabric not defterindeki aşağıdaki yönergeleri kullanabilirsiniz.

  1. çalışma alanında, Fabric veri aracınızı oluşturmak istediğiniz yeni bir not defteri oluşturun.

  2. Gezgin bölmesinin sol tarafında + Veri kaynakları'nı seçin. Bu seçenek mevcut bir göl evi eklemenize veya yeni bir göl evi oluşturmanıza olanak tanır. Açıklık sağlamak için yeni bir göl evi oluşturun ve ona bir ad atayın.

  3. Üst hücreye aşağıdaki kod parçacığını ekleyin:

    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. Tümünü çalıştır'ı seçin.

AdventureWorks yükleme kodunu içeren bir defteri gösteren ekran görüntüsü.

Birkaç dakika sonra göl evi gerekli verilerle doldurulur.

Dikkat

Çalışmaya devam eden not defterleri (örneğin, yanlışlıkla oluşan sonsuz döngüler veya sürekli yoklama nedeniyle) Fabric kapasitesini belirsiz bir süre boyunca tüketebilir. Verilerin yüklenmesi tamamlandıktan sonra, artık ihtiyacınız yoksa tüm etkin hücreleri durdurun ve not defteri oturumunu sonlandırın (Not defteri araç çubuğu > Oturumu durdur). Zaman aşımı olmadan uzun süre çalışan döngüler eklemekten kaçının.

Fabric veri aracısı oluşturma

Yeni bir Fabric veri aracısı oluşturmak için çalışma alanınıza gidin ve bu ekran görüntüsünde gösterildiği gibi + Yeni Öğe düğmesini seçin:

 Fabric veri aracılarının nerede oluşturulacağını gösteren ekran görüntüsü.

Tüm öğeler sekmesinde uygun seçeneği bulmak için Fabric veri aracısı arayın. Seçildikten sonra, bu ekran görüntüsünde gösterildiği gibi Fabric veri aracınız için bir ad girmeniz istenir:

 Fabric veri aracısı için nereden ad sağlandığı gösteren ekran görüntüsü.

Adı girdikten sonra, Fabric veri aracısını özel gereksinimlerinizle hizalamak için aşağıdaki adımlarla devam edin.

Verileri seçme

Aşağıdaki ekran görüntüsünde gösterildiği gibi, önceki adımda oluşturduğunuz lakehouse'ı ve ardından Ekle'yi seçin:

Göl kenarı evi eklemek adımını gösteren ekran görüntüsü.

Lakehouse veri kaynağı olarak eklendikten sonra, Fabric veri aracısı sayfasının sol tarafındaki Explorer bölmesinde lakehouse adı gösterilir. Kullanılabilir tüm tabloları görüntülemek için göl evi'ni seçin. Yapay zeka için kullanılabilir hale getirmek istediğiniz tabloları seçmek için onay kutularını kullanın. Bu senaryo için şu tabloları seçin:

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

Yapay zeka için tabloları seçebileceğiniz yeri gösteren ekran görüntüsü.

Veri aracılarındaki anlam modelleri için izinler

Kullanıcılar, veri aracısına eklemek ve aracı aracılığıyla soru sormak için yalnızca Power BI anlamsal modelde Okuma iznine ihtiyaç duyar. Veri aracıları aracılığıyla etkileşim için çalışma alanı erişimi (Üye rolü) ve Derleme izni gerekmez. Yazma izni yalnızca anlam modelini değiştirmek veya yapay zeka için hazırlık gibi özellikleri kullanmak için gereklidir.

Bu izin değişikliği yalnızca veri aracıları aracılığıyla yapılan etkileşimler için geçerlidir. Diğer erişim desenleri (örneğin, Excel çözümle veya doğrudan rapor yazma) standart Power BI izinlerini izler.

Yönergeleri sağlayın

Yönergeler eklemek için Veri aracısı yönergeleri düğmesini seçerek sağ taraftaki yönergeler bölmesini açın. Aşağıdaki yönergeleri ekleyebilirsiniz.

AdventureWorksLH veri kaynağı üç tablodan bilgi içerir:

  • dimcustomer, ayrıntılı müşteri demografisi ve iletişim bilgileri için
  • dimdate, örneğin takvim ve mali bilgiler gibi, tarihle ilgili veriler için
  • şehir adları ve ülke bölge kodları gibi coğrafi ayrıntılar için dimgeography.

Müşteri ayrıntılarını, zamana dayalı olayları ve coğrafi konumları içeren sorgular ve analizler için bu veri kaynağını kullanın.

Yapay zeka yönergelerini nerede sağlayabileceğinizi gösteren ekran görüntüsü.

Örnekler sağlayın

Örnek sorgular eklemek için Örnek sorgular düğmesini seçerek sağ taraftaki örnek sorgular bölmesini açın. Bu bölme, desteklenen tüm veri kaynakları için örnek sorgular ekleme veya düzenleme seçenekleri sağlar. Her veri kaynağı için, aşağıdaki ekran görüntüsünde gösterildiği gibi örnek sorgu ekleme veya düzenleme seçebilirsiniz:

Sağladığınız örnekleri yapay zekaya nereye ekleyebileceğinizi gösteren ekran görüntüsü.

Burada, oluşturduğunuz lakehouse veri kaynağı için Örnek sorgular eklemelisiniz.

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 örnekleri eklemeyi gösteren ekran görüntüsü.

Uyarı

Örnek sorgu/soru çiftlerinin eklenmesi şu anda Power BI anlam modeli veri kaynakları için desteklenmemektedir.

Fabric veri aracısını test edin ve düzeltin

artık Fabric veri aracısını yapılandırdığınıza, Fabric veri aracısı yönergeleri eklediğinize ve lakehouse için örnek sorgular sağladığınıza göre, sorular sorarak ve yanıtlar alarak onunla etkileşim kurabilirsiniz. Teste devam ettikçe, Fabric veri aracısının performansını daha da geliştirmek için daha fazla örnek ekleyebilir ve yönergeleri geliştirebilirsiniz. Geri bildirim toplamak için iş arkadaşlarınızla işbirliği yapın ve girdilerine göre, sağlanan örnek sorguların ve yönergelerin sormak istedikleri soru türleriyle uyumlu olduğundan emin olun.

Fabric veri aracısını yayımlama

Fabric veri aracısının performansını doğruladıktan sonra, yayınlamaya karar verebilirsiniz; böylece veri üzerinde soru-cevap yapmak isteyen iş arkadaşlarınızla paylaşabilirsiniz. Bu durumda, bu ekran görüntüsünde gösterildiği gibi Yayımla'yı seçin:

Yayımla seçeneğinin seçimini gösteren ekran görüntüsü.

Bu ekran görüntüsünde gösterildiği gibi Veri aracısı yayımla kutusu açılır:

Veri aracısı yayımlama özelliğini gösteren ekran görüntüsü.

Bu kutuda Fabric veri aracısını yayımlamak için Publish öğesini seçin. Yayınlandıktan sonra, veri ajanı model bağlam protokolü (MCP) sunucusu olarak tüketilebilir.

Fabric veri aracısını program aracılığıyla kullanma

Fabric veri aracısını bir Fabric not defteri içinde program aracılığıyla kullanabilirsiniz. Fabric veri aracısının yayımlanmış bir URL değerine sahip olup olmadığını belirlemek için, aşağıdaki ekran görüntüsünde gösterildiği gibi Settings öğesini seçin:

 Fabric veri aracısı ayarlarının seçimini gösteren ekran görüntüsü.

Fabric veri aracısını yayımlamadan önce, aşağıdaki ekran görüntüsünde gösterildiği gibi yayımlanmış bir URL değeri yoktur:

Yayınlanmadan önce bir Fabric veri aracısının yayımlanmış bir URL değeri olmadığını gösteren ekran görüntüsü.

Fabric veri aracısını daha önce yayımlamadıysanız, önceki adımlardaki yönergeleri izleyerek yayımlayabilirsiniz. Ardından yayımlanan URL'yi kopyalayıp Fabric not defterinde kullanabilirsiniz. Bu şekilde, bir Fabric not defterindeki Fabric veri aracısı API'sine çağrılar yaparak Fabric veri aracısını sorgulayabilirsiniz. Kopyalanan URL'yi bu kod parçacığına yapıştırın. Ardından, soruyu Fabric veri aracınızla ilgili sorgularla değiştirin. Bu örnekte URL olarak kullanılır \<generic published URL value\> .

Önemli

Bir veri aracıyı program aracılığıyla çağırırken şunları uygulayın:

  1. Süresiz döngüleri önlemek için yoklama zaman aşımı (aşağıdaki örniğe bakın).
  2. En az yoklama sıklığı (2-5 saniyede başlayın; yalnızca gerekirse artırın).
  3. Tamamlandıktan sonra oluşturulan iş parçacıklarının veya kaynakların temizlenmesi.
  4. İşlem tamamlandığında Fabric kapasitesini boşa çıkarmak için not defteri oturumu sonlandırılır.

Uyarı

Sürüm pinlerini (openai, synapseml, pandas, tqdm) belirli sürümler güncel değilse Fabric çalışma zamanınız için en son doğrulanmış sürümlere ayarlayın.

%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

Önemli

OpenAI, Assistants API'sini emekliye bıraktığından beri, uygulamalar ajan etkileşimleri için MCP uç noktasını kullanmalıdır. Assistants API'nin aksine, MCP uç noktası yerleşik konuşma yönetimi sağlamaz, bu yüzden arayanlar, konuşma durumunu koruyarak ve istekler arasında ilgili bağlam sağlayarak çoklu turlu etkileşimleri organize etmek zorundadır.

Python’dan veri aracısını sorgulama

Aşağıdaki örnek MCP uç noktasına bağlanır, aracı bulur, bir soru gönderir ve yanıtı yazdırır. credential adımındaki öğesini yeniden kullanır ve MCP Python SDK'sını kullanır. Önce SDK'yi yükleyin:

%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)