Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, örnek veri kaynağı olarak bir lakehouse kullanarak Microsoft Fabric'te veri aracısını ayarlama gösterilmektedir. Önce bir lakehouse oluşturup doldururuz, ardından bir Fabric data agent oluşturup lakehouse'u buna ekleriz. Zaten bir Power BI anlam modeliniz (gerekli okuma/yazma izinlerine sahip), bir ambar veya KQL veritabanınız varsa, aynı adımları izleyin ve bunun yerine bu kaynağı seçin. Bu kılavuz bir Lakehouse kullansa da, model diğer kaynaklar için aynıdır; yalnızca veri kaynağı seçimi farklılık gösterir.
Önemli
Bu özellik önizleme aşamasındadır.
Önkoşullar
- Ücretli bir F2 veya daha yüksek Doku kapasitesi ya da Microsoft Fabric'in etkinleştirildiğikapasite başına Power BI Premium (P1 veya üzeri) kapasite
- Fabric veri aracısı kiracı ayarları etkinleştirildi.
- Yapay zeka için coğrafi bölgeler arası işleme etkinleştirilir.
- Yapay zeka için coğrafi bölgeler arası depolama etkindir.
- Bunlardan en az biri: Bir ambar, göl evi, bir veya daha fazla Power BI anlam modeli veya veri içeren bir KQL veritabanı.
- XMLA uç noktaları aracılığıyla Power BI anlam modellerinin, Power BI anlam modeli veri kaynakları için etkinleştirilmesi sağlanmıştır.
Önemli
Power BI yönetim portalında bağımsız Copilot deneyiminin etkinleştirildiğinden emin olun (Tenant ayarları > Copilot > Bağımsız Copilot deneyimi). Etkinleştirilmemişse, diğer Copilot kiracı ayarları açık olsa bile Copilot senaryolarında veri ağ geçidini kullanamazsınız. Ayrıntılar için Power BI kiracı ayarlarında Copilot'a bakın.
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 Fabric not defterindeki aşağıdaki yönergeleri kullanabilirsiniz.
Fabric veri ajanınızı oluşturmak istediğiniz çalışma alanında yeni bir not defteri oluşturun.
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.
Ü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)Tümünü çalıştır'ı seçin.
Birkaç dakika sonra göl evi gerekli verilerle doldurulur.
Dikkat
Çalışmaya devam eden defterler (örneğin, yanlışlıkla sonsuz döngüler veya sürekli yoklama nedeniyle) Fabric kapasitesini süresiz olarak 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ştur
Yeni bir Doku 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:
doku 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 Doku veri aracısı'nı arayın. Seçildikten sonra, bu ekran görüntüsünde gösterildiği gibi doku veri aracınız için bir ad girmeniz istenir:
Adı girdikten sonra Fabric veri aracısını gereksinimlerinize uygun hale getirmek için aşağıdaki adımlara 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:
Lakehouse bir veri kaynağı olarak eklendikten sonra, Fabric veri aracısı sayfasının sol tarafındaki Gezgin 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:
dimcustomerdimdatedimgeographydimproductdimproductcategorydimpromotiondimresellerdimsalesterritoryfactinternetsalesfactresellersales
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.
Ö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:
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
Uyarı
Power BI anlam modeli veri kaynakları için örnek sorgu/soru çiftleri ekleme şu anda desteklenmemektedir.
Ağ veri aracısını test edin ve düzeltin
Doku veri aracısını yapılandırdığınıza, Doku 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, Doku 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ınla
Fabric veri aracısının performansını doğruladıktan sonra, daha sonra veri üzerinden Q&A yapmak isteyen iş arkadaşlarınızla paylaşabilmek amacıyla yayımlamaya karar verebilirsiniz. Bu durumda, bu ekran görüntüsünde gösterildiği gibi Yayımla'yı seçin:
Bu ekran görüntüsünde gösterildiği gibi Veri aracısı yayımla kutusu açılır:
Bu kutuda, Fabric veri aracısını yayımlamak için Yayımla seçeneğini seçin. Fabric veri aracısı için yayımlanan URL, bu ekran görüntüsünde gösterildiği gibi görünür.
Power BI'da Copilot'ta Fabric veri aracısını kullanma
Power BI'de Copilot'ı kullanarak Fabric veri aracısını yayımladıktan sonra etkileşim kurabilirsiniz. Power BI'daki Copilot ile veri aracısını ve diğer öğeleri (örneğin, raporlar veya anlamsal modeller) aralarında geçiş yapmanıza gerek kalmadan doğrudan kullanabilirsiniz.
Sol gezinti bölmesindeki Copilot düğmesini seçerek Copilot'ı Power BI'da 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:
Veri aracısını Power BI'daki Copilot'a eklediğinize göre, aşağıdaki ekran görüntüsünde gösterildiği gibi Doku veri aracınızla ilgili tüm soruları sorabilirsiniz:
Fabric veri aracısını program aracılığıyla kullanma
Doku veri aracısını bir Doku not defteri içinde program aracılığıyla kullanabilirsiniz. Doku 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 Ayarlar'ı seçin:
Doku 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:
Doku veri aracısını daha önce yayımlamadıysanız, önceki adımlarda yer alan yönergeleri izleyerek yayımlayabilirsiniz. Ardından yayımlanan URL'yi kopyalayıp Fabric not defterinde kullanabilirsiniz. Bu şekilde, Doku not defterinde Doku veri aracısı API'sine çağrılar yaparak Doku 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 herhangi bir sorguyla 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:
- Süresiz döngüleri önlemek için yoklama zaman aşımı (aşağıdaki örniğe bakın).
- En az yoklama sıklığı (2-5 saniyede başlayın; yalnızca gerekirse artırın).
- Tamamlandıktan sonra oluşturulan iş parçacıklarının veya kaynakların temizlenmesi.
- Not defteri oturumu, Fabric kapasitesini serbest bırakmak için tamamlandığında kapatılır.
Uyarı
Bu sürümler güncelliğini yitirirse, sürüm pinlerini (openai, synapseml, pandas, tqdm), Fabric çalışma zamanınız için doğrulanmış en son 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
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)