이 문서에서는 레이크하우스를 예제 데이터 원본으로 사용하여 Microsoft Fabric 데이터 에이전트를 설정하는 방법을 보여줍니다. 먼저 레이크하우스를 만들고 채웁니다. 그런 다음 Fabric 데이터 에이전트를 만들고 레이크하우스를 추가합니다. 이미 Power BI 의미 체계 모델이 있는 경우 데이터 에이전트를 통해 상호 작용할 수 있는 읽기 권한이 있는지 확인합니다(쓰기 권한은 의미 체계 모델을 수정하거나 AI용 준비와 같은 기능을 사용하는 경우에만 필요). 웨어하우스, KQL 데이터베이스 또는 온톨로지의 경우 동일한 단계를 수행하고 대신 해당 원본을 선택합니다. 이 연습에서는 레이크하우스를 사용하지만, 패턴은 다른 데이터 소스에서도 동일합니다. 단지 데이터 소스 선택이 다를 뿐입니다.
중요합니다
이 기능은 프리뷰 상태입니다.
필수 조건
- F2 이상의 유료 Fabric 용량 또는 Power BI 프리미엄(P1 이상) 용량에 Microsoft Fabric이 활성화된 용량.
- 패브릭 데이터 에이전트 테넌트 설정에 설명된 요구 사항에 따라 AI에 대해 지역 간 처리 및 지역 간 저장을 사용하도록 설정합니다.
- 적어도 데이터가 있는 다음 데이터 원본 중 하나 이상: 웨어하우스, 레이크하우스, Power BI 의미 체계 모델, KQL 데이터베이스, 미러된 데이터베이스 또는 온톨로지. 데이터 원본에 대한 읽기 권한이 있어야 합니다.
중요합니다
독립 실행형 Copilot 환경이 Power BI 관리 포털에서 사용하도록 설정되어 있는지 확인합니다(테넌트 설정> Copilot > 독립 실행형 Copilot 환경). 사용하도록 설정되지 않은 경우 다른 Copilot 테넌트 스위치가 켜져 있더라도 Copilot 시나리오 내에서 데이터 에이전트를 사용할 수 없습니다. 자세한 내용은 Power BI 테넌트 설정의 Copilot 참조하세요.
AdventureWorksLH를 사용하여 레이크하우스 만들기
먼저 레이크하우스를 만들고 필요한 데이터로 채웁니다.
레이크하우스(또는 창고)에 AdventureWorksLH 인스턴스가 이미 있는 경우, 이 단계를 건너뛸 수 있습니다. 그렇지 않은 경우 Fabric Notebook의 다음 지침을 사용하여 레이크하우스를 데이터로 채울 수 있습니다.
작업 영역에서 Fabric 데이터 에이전트를 만들려는 새 Notebook을 만듭니다.
Explorer 창의 왼쪽에서 + 데이터 원본을 선택합니다. 이 옵션을 사용하면 기존 레이크하우스를 추가하거나 새 레이크하우스를 만들 수 있습니다. 명확성을 위해 새 레이크하우스를 만들고 이름을 할당합니다.
맨 위 셀에 다음 코드 조각을 추가합니다.
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)모두 실행을 선택합니다.
몇 분 후, 레이크 하우스는 필요한 데이터로 채웁니다.
주의
실행이 계속되는 노트북(예: 실수로 인한 무한 루프 또는 일정한 폴링)은 Fabric 용량을 무제한으로 소모할 수 있습니다. 데이터 로드가 완료되면 활성 셀을 중지하고 더 이상 필요하지 않은 경우 Notebook 세션(Notebook 도구 모음 > 중지 세션)을 종료합니다. 시간 제한 없이 장기 실행 루프를 추가하지 마세요.
Fabric 데이터 에이전트 만들기
새 Fabric 데이터 에이전트를 만들려면 작업 영역으로 이동하여 다음 스크린샷과 같이 + 새 항목 단추를 선택합니다.
모든 항목 탭에서 Fabric 데이터 에이전트 검색하여 적절한 옵션을 찾습니다. 선택하면 이 스크린샷에 표시된 것처럼 Fabric 데이터 에이전트의 이름을 입력하라는 메시지가 표시됩니다.
이름을 입력한 후 다음 단계를 진행하여 Fabric 데이터 에이전트를 특정 요구 사항에 맞춥니다.
데이터 선택
이전 단계에서 만든 레이크하우스를 선택한 후 다음 스크린샷에 표시된 대로 추가를 선택합니다.
레이크하우스가 데이터 원본으로 추가되면 Fabric 데이터 에이전트 페이지의 왼쪽에 있는 Explorer 창에 레이크하우스 이름이 표시됩니다. 레이크하우스를 선택하여 사용 가능한 모든 테이블을 봅니다. 확인란을 사용하여 AI에서 사용할 테이블을 선택합니다. 이 시나리오에서는 다음 테이블을 선택합니다.
dimcustomerdimdatedimgeographydimproductdimproductcategorydimpromotiondimresellerdimsalesterritoryfactinternetsalesfactresellersales
데이터 에이전트의 의미 체계 모델에 대한 권한
사용자는 데이터 에이전트에 추가하고 에이전트를 통해 질문을 하려면 Power BI 의미 체계 모델에 대한 읽기 권한만 있으면 됩니다. 데이터 에이전트를 통한 상호 작용에는 작업 영역 액세스(멤버 역할) 및 빌드 권한이 필요하지 않습니다. 쓰기 권한은 의미 체계 모델을 수정하거나 AI용 Prep과 같은 기능을 사용하는 경우에만 필요합니다.
이 권한 변경은 데이터 에이전트를 통한 상호 작용에만 적용됩니다. 다른 액세스 패턴(예: Excel 분석 또는 직접 보고서 작성)은 표준 Power BI 권한을 따릅니다.
지침 제공
지침을 추가하려면 데이터 에이전트 지침 단추를 선택하여 오른쪽에 있는 지침 창을 엽니다. 다음 지침을 추가할 수 있습니다.
AdventureWorksLH 데이터 원본에는 다음 세 테이블의 정보가 포함됩니다.
-
dimcustomer, 자세한 고객 인구 통계 및 연락처 정보 - 날짜와 관련된 데이터에 사용할
dimdate(예: 달력 및 회계 정보) -
dimgeography. 도시 이름 및 국가 지역 코드를 포함한 지리적 세부 정보입니다.
고객 세부 정보, 시간 기반 이벤트 및 지리적 위치를 포함하는 쿼리 및 분석에 이 데이터 원본을 사용합니다.
예제 제공
예제 쿼리를 추가하려면 예제 쿼리 단추를 선택하여 오른쪽에 있는 예제 쿼리 창을 엽니다. 이 창에서는 지원되는 모든 데이터 원본에 대한 예제 쿼리를 추가하거나 편집하는 옵션을 제공합니다. 각 데이터 원본에 대해 다음 스크린샷과 같이 예제 쿼리 추가 또는 편집 을 선택하여 관련 예제를 입력할 수 있습니다.
여기서는 만든 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
비고
샘플 쿼리/질문 쌍 추가는 현재 Power BI 의미 체계 모델 데이터 원본에 대해 지원되지 않습니다.
Fabric 데이터 에이전트 테스트 및 수정
이제 Fabric 데이터 에이전트를 구성하고, Fabric 데이터 에이전트 지침을 추가하고, lakehouse에 대한 예제 쿼리를 제공했으므로 질문을 하고 답변을 받아 상호 작용할 수 있습니다. 테스트를 계속하면 더 많은 예제를 추가하고 지침을 구체화하여 Fabric 데이터 에이전트의 성능을 더욱 향상시킬 수 있습니다. 동료와 협업하여 피드백을 수집하고 입력에 따라 제공된 예제 쿼리 및 지침이 질문할 질문 유형과 일치하는지 확인합니다.
Fabric 데이터 에이전트 배포
Fabric 데이터 에이전트의 성능을 유효성 검증한 후, 데이터를 기반으로 질의응답을 수행하려는 동료와 공유할 수 있도록 이를 게시하기로 결정할 수 있습니다. 이 경우 다음 스크린샷에 나와 있듯이 게시를 선택합니다.
이 스크린샷에 표시된 대로 데이터 에이전트 게시 상자가 열립니다.
이 상자에서 공개를 선택하여 Fabric 데이터 에이전트를 게시합니다. 데이터 에이전트가 공개되면 모델 컨텍스트 프로토콜(MCP) 서버로 소비될 수 있습니다.
프로그래밍 방식으로 Fabric 데이터 에이전트 사용
Fabric Notebook 내에서 프로그래밍 방식으로 Fabric 데이터 에이전트를 사용할 수 있습니다. Fabric 데이터 에이전트에 게시된 URL 값이 있는지 여부를 확인하려면 다음 스크린샷과 같이 Settings 선택합니다.
Fabric 데이터 에이전트를 게시하기 전에 다음 스크린샷과 같이 게시된 URL 값이 없습니다.
이전에 Fabric 데이터 에이전트를 게시하지 않은 경우 이전 단계의 지침에 따라 게시할 수 있습니다. 그런 다음 게시된 URL을 복사하여 Fabric Notebook에서 사용할 수 있습니다. 이렇게 하면 Fabric Notebook에서 Fabric 데이터 에이전트 API를 호출하여 Fabric 데이터 에이전트를 쿼리할 수 있습니다. 복사한 URL을 이 코드 조각에 붙여 넣습니다. 그런 다음 질문을 Fabric 데이터 에이전트와 관련된 쿼리로 바꿉니다. 이 예제에서는 \<generic published URL value\>을(를) URL로 사용합니다.
중요합니다
프로그래밍 방식으로 데이터 에이전트를 호출하는 경우 다음을 구현합니다.
- 무한 루프를 방지하기 위한 폴링 타임아웃(아래 예제 참조)입니다.
- 최소 폴링 빈도(2~5초에서 시작, 필요한 경우에만 증가).
- 완료 후 생성된 스레드 또는 리소스를 정리합니다.
- Fabric 용량 릴리스가 완료되면 Notebook 세션이 종료됩니다.
비고
정확한 버전이 오래되면 버전 핀(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
중요합니다
OpenAI가 어시스턴트 API를 은퇴시킨 이후, 애플리케이션은 에이전트 상호작용을 위해 MCP 엔드포인트를 사용해야 합니다. Assistants API와 달리 MCP 엔드포인트는 내장된 대화 관리를 제공하지 않기 때문에, 발신자는 대화 상태를 유지하고 요청 간에 관련 맥락을 제공함으로써 다중 턴 상호작용을 조율해야 합니다.
Python 데이터 에이전트 쿼리
다음 예제에서는 MCP 엔드포인트에 연결하고, 도구를 검색하고, 질문을 보내고, 답변을 출력합니다.
credential 단계의 를 재사용하고 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)