Tutorial: Use funções de IA em um depósito

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

Neste tutorial, você aprende a usar funções de IA embutidas no T-SQL para raciocinar sobre dados de tabelas de warehouse em linguagem natural. Use a tabela dbo.fact_sale para explorar funções de IA em consultas simples SELECT, usá-las em consultas analíticas mais avançadas e gravar seus resultados em colunas.

Note

Este tutorial faz parte de um cenário de ponta a ponta. Para completar este tutorial, você deve primeiro completar estes tutoriais:

  1. Criar um espaço de trabalho
  2. Criar um Armazém
  3. Ingerir dados em um repositório

Explore dados com funções de IA

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

Verifique se o workspace que você criou 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 retorna um objeto JSON, então use 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. Executa 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 descrição como HTML

  1. Crie uma nova consulta, cole o código a seguir e execute-a. O código usa AI_GENERATE_RESPONSE para reescrever Description como um resumo de produto em HTML com uma lista dos principais atributos, pronto para ser exibido em uma página da 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>.

Resuma as informações sobre itens de venda

  1. Crie uma nova consulta, cole o código a seguir e execute-a. O código usa AI_GENERATE_RESPONSE para transformar colunas numéricas, em vez de Description, em um 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 SalesItemSummary valores e confirme que eles refletem as colunas numéricas na mesma linha.

Determine a prioridade de cada item de venda

Nesta tarefa, use AI_GENERATE_RESPONSE em uma consulta mais avançada que combine várias colunas para embasar uma decisão de negócios, em vez de analisar uma única coluna.

  1. Crie uma nova consulta, cole o código a seguir 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 refrigerados que precisam ser tratados em refrigeração em uma única entrada, e então pede à IA que retorne uma pontuação de prioridade que misture esses sinais em um único número. fact_sale Armazena vendas históricas, então @AsOfDate representa a data comercial atual que você usaria em uma fila de atendimento ao vivo.

    -- 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 PriorityScore que os valores ficam entre 1 e 100, com as maiores pontuações sendo ordenadas primeiro.

Resultados da IA persistente

Os exemplos até agora retornam resultados de IA em um SELECT. Para reutilizar esses resultados sem recalculá-los toda vez, escreva-os de volta com UPDATE.

Corrigir erros gramaticais na descrição

  1. Crie uma nova consulta, cole o código a seguir e execute-a. O código usa AI_FIX_GRAMMAR para corrigir Description diretamente no texto, mantendo o texto original quando a IA não tiver nada para 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 se a correção está correta.

Gerar novas colunas

Essa tarefa primeiro adiciona duas colunas de destino e depois as preenche em uma única atualização.

  1. Crie uma nova consulta, cole o código a seguir 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 a seguir e execute-a. O código preenche ambas as colunas em uma única atualização, usando AI_TRANSLATE para Description e AI_CLASSIFY para ordenar cada linha em um conjunto fixo de categorias de produtos que correspondem ao que realmente está nesta tabela, como canecas de novidade, roupas e suprimentos 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 estejam preenchidos para cada linha.

Próximas etapas