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

Power BI yönetim portalında tek başına Copilot deneyiminin etkinleştirildiğinden emin olun (Kiracı ayarları > Copilot > Tek başına Copilot deneyimi). 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. bu ekran görüntüsünde gösterildiği gibi Fabric veri aracısının yayımlanan URL'si görüntülenir:

Yayımlanan URL'yi gösteren ekran görüntüsü.

Power BI'de Copilot Fabric veri aracısını kullanma

Fabric veri aracısını yayımladıktan sonra etkileşime geçmek için Power BI'daki Copilot kullanabilirsiniz. Power BI'da Copilot ile veri aracısını ve diğer öğeleri (örneğin, raporlar veya anlam modelleri) aralarında geçiş yapmaya gerek kalmadan doğrudan kullanabilirsiniz.

sol gezinti bölmesindeki Copilot düğmesini seçerek Copilot Power BI açın. Ardından, veri aracısını eklemek için alttaki metin kutusunda Daha iyi sonuçlar elde etmek için Öğe ekle'yi seçin. Açılan pencerede Veri aracıları'nı seçin. Yalnızca erişim izniniz olan veri aracılarını görebilirsiniz. İstediğiniz veri aracısını seçin ve Onayla'yı seçin. Bu örnekte tek bir veri aracısı ile nasıl çalışabileceğiniz gösterilmektedir, ancak diğer veri aracıları, raporlar veya anlam modelleri gibi daha fazla öğe ekleyebilirsiniz. Aşağıdaki ekran görüntüsünde tek bir veri aracısı ile ilgili adımlar gösterilmektedir:

Copilot düğmesini ve Data Agents gibi öğeler eklemek için düğmeyi gösteren ekran görüntüsü.

Veri aracısı Power BI bir anlam modeli içerdiğinde, kullanıcıların Copilot aracılığıyla etkileşime geçmek için bu anlam modeli üzerinde yalnızca Okuma iznine sahip olması gerekir; çalışma alanı erişimi gerekmez. Anlamsal model değişiklikleri ve Yapay zeka hazırlığı için yazma izni hala gereklidir.

Veri aracısını Power BI'daki Copilot eklediğinize göre, aşağıdaki ekran görüntüsünde gösterildiği gibi Fabric veri aracınızla ilgili tüm soruları sorabilirsiniz:

 Copilot'un bir soruyu yanıtladığını gösteren ekran görüntüsü.

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

Aşağıdaki kod, OpenAI Assistants API’sini (beta.assistants, beta.threads, beta.threads.runs) kullanır; OpenAI bu API’yi kullanımdan kaldırdı ve kapanış tarihini 26 Ağustos 2026 olarak belirledi. Geçerli kod 26 Ağustos 2026'ya kadar çalışmaya devam eder ancak bu tarihten önce MCP uç noktasına geçiş yapmayı planlayın.

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)