Tutoriel : Utilisez des fonctions d’IA dans un entrepôt

S’applique à :✅Entrepôt dans Microsoft Fabric

Dans ce tutoriel, vous apprenez à utiliser des fonctions d’IA intégrées en T-SQL pour raisonner sur les données de tables d’entrepôt en langage naturel. Utilisez le dbo.fact_sale tableau pour explorer les fonctions d’IA dans des requêtes simples SELECT , utilisez-les dans une requête analytique plus avancée, et faites persister leurs résultats en colonnes.

Note

Ce tutoriel fait partie d’un scénario de bout en bout. Pour compléter ce tutoriel, vous devez d’abord suivre ces tutoriels :

  1. Créer un espace de travail
  2. Créer un entrepôt
  3. Ingérer des données dans un entrepôt

Explorez les données avec des fonctions d’IA

Dans cette tâche, apprenez à utiliser quelques-unes des fonctions d’IA intégrées dans des requêtes simples SELECT afin d’explorer ce qu’elles renvoient, sans modifier la table.

Vérifiez que l’espace de travail que vous avez créé dans le premier didacticiel est ouvert.

Extraire les catégories à partir de la description

  1. Dans le ruban Accueil, sélectionnez nouvelle requête SQL.

  2. Dans l’éditeur de requête, collez le code suivant. Le code utilise AI_EXTRACT pour extraire la couleur et la taille de descriptions telles que Alien officer hoodie (Black) XXL. AI_EXTRACT renvoie un objet JSON, donc utilise OPENJSON pour transformer les attributs en colonnes séparées.

    -- 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. Exécutez la requête.

  4. Une fois l’exécution terminée, renommez la requête en tant que Color & Size Extraction. Vérifiez cela Color et Size sont répartis dans des colonnes séparées.

Description du format sous forme HTML

  1. Créez une nouvelle requête, collez le code suivant, puis exécutez-la. Le code utilise AI_GENERATE_RESPONSE pour réécrire Description en un résumé produit en HTML avec une liste des principaux attributs, prêt à être affiché sur une page 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. Renommez la requête Short Catalog Description Generation. Inspectez CatalogDescription et confirmez qu’il comprend les éléments demandés <p>, <dl>, <dt> et <dd>.

Résumez les informations sur les articles de vente

  1. Créez une nouvelle requête, collez le code suivant, puis exécutez-la. Le code utilise AI_GENERATE_RESPONSE pour transformer des colonnes numériques, plutôt que Description, en un résumé en texte brut de l’article vendu.

    -- 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. Renommez la requête Sales Item Summary Generation. Lisez quelques SalesItemSummary valeurs et confirmez qu’elles reflètent les colonnes numériques dans la même ligne.

Déterminez la priorité de chaque article de vente

Dans cette tâche, utilisez AI_GENERATE_RESPONSE une requête plus avancée qui combine plusieurs colonnes pour soutenir une décision métier, au lieu de raisonner sur une seule colonne.

  1. Créez une nouvelle requête, collez le code suivant, puis exécutez-la. Le code combine la date de facture, la date de livraison, une date de référence, le total de lignes, le profit et le nombre d’articles de refroidissement nécessitant une manipulation réfrigérée en une seule entrée, puis demande à l’IA de renvoyer un score de priorité qui fusionne ces signaux en un seul chiffre. fact_sale contient les ventes historiques, donc @AsOfDate remplace la date d’activité du jour que vous utiliseriez dans une file d’attente de traitement en temps réel.

    -- 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. Renommez la requête Sales Item Fulfillment Priority Scoring. Les valeurs de confirmation PriorityScore se situent entre 1 et 100, les meilleurs scores étant d’abord classés.

Résultats de Persist AI

Les exemples jusqu’ici renvoient des résultats d’IA dans un SELECT. Pour réutiliser ces résultats sans les recalculer à chaque fois, écrivez-les en retour avec UPDATE.

Corriger les erreurs de grammaire dans la description

  1. Créez une nouvelle requête, collez le code suivant, puis exécutez-la. Le code utilise AI_FIX_GRAMMAR pour corriger Description directement, en conservant le texte d’origine chaque fois que l’IA n’a rien à corriger.

    -- 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. Renommez la requête Grammar Correction Update. Comparez quelques lignes dans lesquelles Description a été modifié et confirmez que la correction est exacte.

Générer de nouvelles colonnes

Cette tâche ajoute d’abord deux colonnes de destination, puis les remplit en une seule mise à jour.

  1. Créez une nouvelle requête, collez le code suivant, puis exécutez-la. Le code ajoute des colonnes pour une description traduite et une catégorie de produit.

    -- 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. Renommez la requête Add Translation & Category Columns.

  3. Créez une nouvelle requête, collez le code suivant, puis exécutez-la. Le code peuple les deux colonnes dans une seule mise à jour, utilisant AI_TRANSLATE pour Description et AI_CLASSIFY pour trier chaque ligne dans un ensemble fixe de catégories de produits correspondant à ce qui se trouve réellement dans ce tableau, comme les mugs fantaisie, les vêtements et les fournitures d’emballage.

    -- 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. Renommez la requête Populate Translation & Category Columns. Confirmez que DescriptionFr et ProductCategory sont renseignés pour chaque ligne.

Étape suivante