적용 대상: Microsoft Fabric의✅ Warehouse
이 튜토리얼에서는 T-SQL에 내장된 AI 함수 를 사용해 자연어로 웨어하우스 테이블 데이터를 추론하는 방법을 배웁니다. 테이블을 dbo.fact_sale 사용해 간단한 SELECT 쿼리에서 AI 기능을 탐색하고, 더 고급 분석 쿼리에서 활용하며, 결과를 열로 보존할 수 있습니다.
메모
이 자습서는 엔드 투 엔드 시나리오일부를 구성합니다. 이 튜토리얼을 완료하려면 먼저 다음 튜토리얼을 완료해야 합니다:
AI 기능을 이용한 데이터 탐색
이 과제에서는 간단한 SELECT 쿼리에서 내장 AI 함수 몇 가지를 활용해 표를 바꾸지 않고 결과를 탐색하는 방법을 배워보세요.
첫 번째 자습서에서 만든 작업 영역이 열려 있는지 확인하세요.
설명에서 범주 추출
홈 리본에서 새 SQL 쿼리을 선택합니다.
쿼리 편집기에서 다음 코드를 붙여넣습니다. 이 코드는
Alien officer hoodie (Black) XXL를 사용하여AI_EXTRACT와 같은 설명에서 색상과 크기를 추출합니다.AI_EXTRACTJSON 객체를 반환하므로, 속성을 별도의 열로 변환하는 데 사용OPENJSON하세요.-- Extract color and size attributes. SELECT SaleKey, Description, extracted.Color, extracted.Size FROM dbo.fact_sale CROSS APPLY OPENJSON(AI_EXTRACT(Description, 'Color', 'Size')) WITH (Color varchar(50), Size varchar(20)) AS extracted;쿼리를 실행합니다.
실행이 완료되면 쿼리 이름을
Color & Size Extraction로 변경하세요.Color및Size이 각각 별도의 열에 입력되어 있는지 확인하세요.
HTML로서의 형식 설명
새 쿼리를 만들고 다음 코드를 붙여넣은 후 실행하세요. 이 코드는
DescriptionAI_GENERATE_RESPONSE를 주요 속성 목록이 포함된 HTML 제품 요약으로 다시 작성하여 웹 페이지에 바로 렌더링할 수 있도록 합니다.-- Generate a catalog description formatted as HTML, with a summary and an attribute list. SELECT SaleKey, Description, AI_GENERATE_RESPONSE( 'Rewrite as a short e-commerce catalog description. Format the result as HTML: wrap the summary in a <p> tag, then list key attributes as a <dl>, with each <dt> label bolded using <strong> and followed by its <dd> value.', Description ) AS CatalogDescription FROM dbo.fact_sale;쿼리의 이름을
Short Catalog Description Generation으로 변경하세요.<dd>을 점검하고 요청된<dt>,<dl>,<p>,CatalogDescription요소가 포함되어 있는지 확인하세요.
판매 품목 정보를 요약하세요
새 쿼리를 만들고 다음 코드를 붙여넣은 후 실행하세요. 이 코드는
AI_GENERATE_RESPONSE대신Description를 사용하여 숫자 열을 판매 항목의 일반 텍스트 요약으로 변환합니다.-- Summarize each sales item in plain text, based on numeric columns only. DECLARE @prompt nvarchar(max) = N'Summarize this sales item in one short sentence for a business report.'; SELECT *, AI_GENERATE_RESPONSE( @prompt, CONCAT( 'Package: ', Package, '. Quantity: ', Quantity, '. Dry items: ', TotalDryItems, '. Chiller items: ', TotalChillerItems, '. Unit price: ', UnitPrice, '. Tax rate: ', TaxRate, '. Profit: ', Profit, '. Total including tax: ', TotalIncludingTax ) ) AS SalesItemSummary FROM dbo.fact_sale;쿼리의 이름을
Sales Item Summary Generation으로 변경하세요. 몇SalesItemSummary가지 값을 읽어보고 같은 행의 숫자 열을 반영하는지 확인해 보세요.
각 판매 품목의 우선순위를 정하세요
이 작업에서는 단일 열에 대한 추론 대신 여러 열을 결합해 비즈니스 결정을 지원하는 고급 쿼리를 사용 AI_GENERATE_RESPONSE 하세요.
새 쿼리를 만들고 다음 코드를 붙여넣은 후 실행하세요. 이 코드는 송장 날짜, 납품일, 참조일, 라인 총계, 이익, 냉장 처리가 필요한 칠러 품목 수를 하나의 입력으로 합친 후, AI에게 이 신호들을 하나의 숫자로 혼합하는 우선순위 점수를 반환하도록 요청합니다.
fact_sale과거 매출을 기록하므로,@AsOfDate실시간 이행 대기열에서 사용할 현재 영업일을 대신합니다.-- Score sales items for fulfillment priority based on invoice-to-delivery time, line total, profit, and chiller items. DECLARE @AsOfDate date = '2016-05-01'; DECLARE @prompt nvarchar(max) = N'Given the invoice date, delivery date, reference date, line total, profit, and number of chiller items below, return a single integer priority score from 1 (low) to 100 (urgent) for sales-item fulfillment. Consider how much time was allowed from invoice to delivery, and how close the delivery date is to the reference date. Larger line totals, closer delivery dates, higher profit, and more chiller items should raise the score. Return only the number.'; SELECT SaleKey, InvoiceDateKey, DeliveryDateKey, TotalIncludingTax, Profit, TotalChillerItems, TRY_CAST(AI_GENERATE_RESPONSE( @prompt, CONCAT( 'Invoice date: ', CONVERT(char(10), InvoiceDateKey, 23), '. Delivery date: ', CONVERT(char(10), DeliveryDateKey, 23), '. Reference date: ', CONVERT(char(10), @AsOfDate, 23), '. Line total: ', TotalIncludingTax, '. Profit: ', Profit, '. Chiller items: ', TotalChillerItems ) ) AS int) AS PriorityScore FROM dbo.fact_sale ORDER BY PriorityScore DESC;쿼리의 이름을
Sales Item Fulfillment Priority Scoring으로 변경하세요. 확인PriorityScore값은 1에서 100 사이이며, 점수가 높은 사람이 먼저 정렬됩니다.
AI 결과 지속
지금까지의 예제들은 SELECT에서 AI 결과를 반환합니다. 매번 다시 계산하지 않고 그 결과를 재사용하려면, 로 다시 UPDATE쓰면 됩니다.
설명의 문법 오류를 수정하세요
새 쿼리를 만들고 다음 코드를 붙여넣은 후 실행하세요. 코드는
AI_FIX_GRAMMAR를 사용해Description를 제자리에서 수정하며, AI가 수정할 것이 없으면 원문 텍스트를 그대로 유지합니다.-- Fix grammar issues in the description, in place. UPDATE dbo.fact_sale SET Description = ISNULL(AI_FIX_GRAMMAR(Description), Description) WHERE Description IS NOT NULL;쿼리의 이름을
Grammar Correction Update으로 변경하세요.Description이 변경된 몇 개의 행을 비교하고 수정 사항이 정확한지 확인하세요.
새로운 열을 생성하기
이 작업은 먼저 두 개의 목적지 열을 추가한 후 한 번의 업데이트로 채웁니다.
새 쿼리를 만들고 다음 코드를 붙여넣은 후 실행하세요. 이 코드는 번역된 설명과 제품 카테고리를 위한 열을 추가합니다.
-- Add columns for the translated description and the product category. ALTER TABLE dbo.fact_sale ADD DescriptionFr nvarchar(max) NULL, ProductCategory nvarchar(50) NULL;쿼리의 이름을
Add Translation & Category Columns으로 변경하세요.새 쿼리를 만들고 다음 코드를 붙여넣은 후 실행하세요. 코드는 한 번의 업데이트로 두 열을 모두 채우며,
Description에는AI_CLASSIFY을 사용하고AI_TRANSLATE각 행을 이 테이블에 실제로 있는 항목과 일치하는 고정된 제품 카테고리 집합(예: 장식용 머그잔, 의류, 포장 용품)으로 분류합니다.-- Populate the translated description and product category columns. UPDATE dbo.fact_sale SET DescriptionFr = AI_TRANSLATE(Description, 'fr'), ProductCategory = AI_CLASSIFY( Description, 'Apparel', 'Footwear', 'Novelty & Gifts', 'Packaging Materials', 'Toys & Costumes', 'Office Supplies' ) WHERE Description IS NOT NULL;쿼리의 이름을
Populate Translation & Category Columns으로 변경하세요. 모든 행에DescriptionFr및ProductCategory이(가) 입력되어 있는지 확인하세요.