Tutorial: Usar funções de IA num armazém

Aplica-se a:✅ Armazém no Microsoft Fabric

Neste tutorial, aprende a usar funções de IA integradas em T-SQL para raciocinar sobre dados de tabelas de armazém em linguagem natural. Utilize a tabela dbo.fact_sale para explorar funções de IA em consultas simples SELECT, utilizá-las numa consulta analítica mais avançada e guardar os resultados em colunas.

Observação

Este tutorial faz parte de um cenário completo . Para completar este tutorial, deve primeiro completar estes tutoriais:

  1. Criar um espaço de trabalho
  2. Criar um Armazém
  3. Ingerir dados num armazém de dados

Explore dados com funções de IA

Nesta tarefa, aprenda a usar algumas das funções de IA incorporadas em consultas simples SELECT para explorar o que elas devolvem, sem alterar a tabela.

Verifique se o espaço de trabalho criado no primeiro tutorial está aberto.

Extrair categorias da descrição

  1. Na faixa de opções Página Inicial, selecione Nova consulta SQL.

  2. No editor de consultas, cole o código a seguir. O código usa AI_EXTRACT para extrair a cor e o tamanho de descrições como Alien officer hoodie (Black) XXL. AI_EXTRACT devolve um objeto JSON, por isso usa OPENJSON para transformar os atributos em colunas separadas.

    -- 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;
    
  3. Executar a consulta.

  4. Quando a execução for concluída, renomeie a consulta como Color & Size Extraction. Verifique se Color e Size estão preenchidos em colunas separadas.

Formatar a descrição como HTML

  1. Crie uma nova consulta, cole o código seguinte e execute-a. O código usa AI_GENERATE_RESPONSE para reescrever Description como um resumo de produto em HTML com uma lista dos atributos principais, pronto a ser apresentado numa página web.

    -- 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;
    
  2. Renomeie a consulta como Short Catalog Description Generation. Inspecione CatalogDescription e confirme que inclui os elementos solicitados <p>, <dl>, <dt>, e <dd> elementos.

Resumir as informações sobre os produtos de venda

  1. Crie uma nova consulta, cole o código seguinte e execute-a. O código usa AI_GENERATE_RESPONSE para transformar colunas numéricas, em vez de Description, num resumo em texto simples do item de venda.

    -- 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;
    
  2. Renomeie a consulta como Sales Item Summary Generation. Leia alguns valores SalesItemSummary e confirme que correspondem às colunas numéricas na mesma linha.

Determinar a prioridade de cada artigo de venda

Nesta tarefa, utilize AI_GENERATE_RESPONSE uma consulta mais avançada que combine várias colunas para apoiar uma decisão de negócio, em vez de raciocinar sobre uma única coluna.

  1. Crie uma nova consulta, cole o código seguinte e execute-a. O código combina a data da fatura, a data de entrega, uma data de referência, o total da linha, o lucro e o número de itens do refrigerador que precisam de manipulação refrigerada numa única entrada, e depois pede à IA que devolva uma pontuação de prioridade que misture estes sinais num único número. fact_sale guarda vendas históricas, pelo que @AsOfDate representa a data operacional atual que utilizaria numa fila de processamento de encomendas em produção.

    -- 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;
    
  2. Renomeie a consulta como Sales Item Fulfillment Priority Scoring. Confirme que os valores PriorityScore estão entre 1 e 100, com as pontuações mais altas primeiro.

Persistir resultados de IA

Os exemplos até agora retornam resultados de IA num SELECT. Para reutilizar esses resultados sem os recalcular sempre, escreva-os de volta com UPDATE.

Corrigir erros gramaticais na descrição

  1. Crie uma nova consulta, cole o código seguinte e execute-a. O código usa AI_FIX_GRAMMAR para corrigir Description diretamente no texto, mantendo o texto original sempre que a IA não tiver nada a corrigir.

    -- 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;
    
  2. Renomeie a consulta como Grammar Correction Update. Compare algumas linhas onde Description foram alteradas e confirme que a correção está correta.

Gerar novas colunas

Esta tarefa adiciona primeiro duas colunas de destino e depois preenche-as numa única atualização.

  1. Crie uma nova consulta, cole o código seguinte e execute-a. O código adiciona colunas para uma descrição traduzida e uma categoria de produto.

    -- Add columns for the translated description and the product category.
    ALTER TABLE dbo.fact_sale ADD DescriptionFr nvarchar(max) NULL, ProductCategory nvarchar(50) NULL;
    
  2. Renomeie a consulta como Add Translation & Category Columns.

  3. Crie uma nova consulta, cole o código seguinte e execute-a. O código preenche ambas as colunas numa única atualização, usando AI_TRANSLATE para Description e AI_CLASSIFY para ordenar cada linha num conjunto fixo de categorias de produtos que correspondem ao que realmente está nesta tabela, como canecas de novidade, vestuário e materiais de embalagem.

    -- 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;
    
  4. Renomeie a consulta como Populate Translation & Category Columns. Confirme que DescriptionFr e ProductCategory estão preenchidos em cada linha.

Passo seguinte