Tutorial: Usar funciones de IA en un almacén

Esto se aplica a:✅ Almacén en Microsoft Fabric

En este tutorial, aprendes a usar funciones de IA integradas en T-SQL para razonar sobre los datos de las tablas de almacén en lenguaje natural. Utiliza la tabla dbo.fact_sale para explorar funciones de IA en consultas SELECT sencillas, úsalas en una consulta de análisis más avanzada y guarda sus resultados en columnas.

Nota:

Este tutorial forma parte de un escenario de un extremo a otro. Para completar este tutorial, primero debes completar estos tutoriales:

  1. Creación de un área de trabajo
  2. Crear un almacén
  3. Ingesta de datos en un almacén de datos

Explora datos con funciones de IA

En esta tarea, aprende a usar algunas de las funciones de IA integradas en consultas sencillas SELECT para explorar qué devuelven, sin cambiar la tabla.

Asegúrese de que el área de trabajo que creó en el primer tutorial esté abierta.

Extraer categorías de la descripción

  1. En la cinta de Inicio, seleccione Nueva consulta SQL.

  2. En el editor de consultas, pegue el código siguiente. El código usa AI_EXTRACT para extraer el color y el tamaño de descripciones como Alien officer hoodie (Black) XXL. AI_EXTRACT devuelve un objeto JSON, por lo que usa OPENJSON para convertir los atributos en columnas 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. Ejecute la consulta.

  4. Cuando se complete la ejecución, cambie el nombre de la consulta como Color & Size Extraction. Comprueba que Color y Size están rellenados en columnas separadas.

Dar formato a la descripción como HTML

  1. Crea una nueva consulta, pega el siguiente código y ejecuta. El código se utiliza AI_GENERATE_RESPONSE para reescribir Description como un resumen HTML de producto con una lista de atributos clave, lista para renderizarse en una 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. Cambie el nombre de la consulta como Short Catalog Description Generation. Inspecciona CatalogDescription y confirma que incluye los elementos solicitados <p>, <dl>, <dt> y <dd>.

Resume la información sobre los artículos de venta

  1. Crea una nueva consulta, pega el siguiente código y ejecuta. El código usa AI_GENERATE_RESPONSE para convertir columnas numéricas, en lugar de Description, en un resumen en texto plano del artículo.

    -- 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. Cambie el nombre de la consulta como Sales Item Summary Generation. Lee algunos SalesItemSummary valores y confirma que reflejan las columnas numéricas de la misma fila.

Determina la prioridad de cada artículo de venta

En esta tarea, utiliza AI_GENERATE_RESPONSE una consulta más avanzada que combine varias columnas para apoyar una decisión empresarial, en lugar de razonar sobre una sola columna.

  1. Crea una nueva consulta, pega el siguiente código y ejecuta. El código combina la fecha de la factura, la fecha de entrega, una fecha de referencia, el total de la línea, el beneficio y el número de artículos del refrigerador que necesitan manipulación refrigerada en una sola entrada, y luego pide a la IA que devuelva una puntuación de prioridad que mezcle estas señales en un solo número. fact_sale contiene ventas históricas, así que @AsOfDate hace las veces de la fecha comercial actual que usarías en una cola de tramitación activa.

    -- 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. Cambie el nombre de la consulta como Sales Item Fulfillment Priority Scoring. Los valores de confirmación PriorityScore están entre 1 y 100, ordenándose primero las puntuaciones más altas.

Resultados de Persist AI

Los ejemplos hasta ahora devuelven resultados de IA en un SELECT. Para reutilizar esos resultados sin recalcularlos cada vez, escríbelos de nuevo con UPDATE.

Corregir errores gramaticales en la descripción

  1. Crea una nueva consulta, pega el siguiente código y ejecuta. El código usa AI_FIX_GRAMMAR para corregir Description directamente, manteniendo el texto original siempre que la IA no tenga nada que corregir.

    -- 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. Cambie el nombre de la consulta como Grammar Correction Update. Compara algunas filas donde Description se ha cambiado y confirma que la corrección es correcta.

Generar nuevas columnas

Esta tarea primero añade dos columnas de destino y luego las rellena en una sola actualización.

  1. Crea una nueva consulta, pega el siguiente código y ejecuta. El código añade columnas para una descripción traducida y una categoría de producto.

    -- 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. Cambie el nombre de la consulta como Add Translation & Category Columns.

  3. Crea una nueva consulta, pega el siguiente código y ejecuta. El código rellena ambas columnas en una sola actualización, usando AI_TRANSLATE para Description y AI_CLASSIFY para clasificar cada fila en un conjunto fijo de categorías de productos que coinciden con lo que realmente hay en esta tabla, como tazas originales, prendas de vestir y suministros de embalaje.

    -- 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. Cambie el nombre de la consulta como Populate Translation & Category Columns. Confirma que DescriptionFr y ProductCategory estén rellenados en cada fila.

Paso siguiente