Partager via


Tutoriel : Voyage dans le temps avec T-SQL dans un entrepôt

Dans ce tutoriel, apprenez à utiliser des instructions T-SQL pour effectuer un voyage temporel dans une table d’entrepôt. Le voyage dans le temps signifie interroger les données telles qu’elles existaient à un moment précis, ce qui est rendu automatiquement possible par le mécanisme de conservation des données de Fabric Warehouse .

Remarque

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

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

Travailler avec des requêtes de voyage dans le temps

Dans cette tâche, découvrez comment créer une vue des 10 premiers clients par ventes. Vous utiliserez l’affichage dans la tâche suivante pour exécuter des requêtes de voyage dans le temps.

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

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

    Capture d’écran de l’option Nouvelle requête SQL sur le ruban.

  3. Dans l'éditeur de requête, collez le code suivant. Le code crée une vue nommée Top10Customers. La vue utilise une requête pour récupérer les 10 principaux clients en fonction des ventes.

    --Create the Top10Customers view.
    CREATE VIEW [dbo].[Top10Customers]
    AS
    SELECT TOP(10)
        FS.[CustomerKey],
        DC.[Customer],
        SUM(FS.[TotalIncludingTax]) AS [TotalSalesAmount]
    FROM
        [dbo].[dimension_customer] AS DC
        INNER JOIN [dbo].[fact_sale] AS FS
            ON DC.[CustomerKey] = FS.[CustomerKey]
    GROUP BY
        FS.[CustomerKey],
        DC.[Customer]
    ORDER BY
        [TotalSalesAmount] DESC;
    
  4. Exécutez la requête.

  5. Une fois l’exécution terminée, renommez la requête en tant que Create Top 10 Customer View.

  6. Dans le volet de l’explorateur, à partir du dossier Vues pour le dbo schéma, vérifiez que la vue Top10Customers existe.

    Capture d’écran du volet Explorateur, mettant en évidence l’affichage nouvellement créé.

  7. Créez une nouvelle requête pour travailler avec des requêtes de parcours temporel.

  8. Dans l'éditeur de requête, collez le code suivant. Le code met à jour la valeur TotalIncludingTax pour une seule ligne de données factuelles afin de gonfler délibérément le total de ses ventes. Cette opération permet également de récupérer l’horodatage actuel.

     --Update the TotalIncludingTax for a single fact row to deliberately inflate its total sales.
     UPDATE [dbo].[fact_sale]
     SET [TotalIncludingTax] = 200000000
     WHERE [SaleKey] = 22632918; --For customer 'Tailspin Toys (Muir, MI)'
     GO
    
     --Retrieve the current (UTC) timestamp.
     SELECT CURRENT_TIMESTAMP;
    

    Remarque

    Actuellement, vous ne pouvez utiliser que le fuseau horaire UTC (Temps universel coordonné) pour les déplacements horaires.

  9. Exécutez la requête.

  10. Une fois l’exécution terminée, renommez la requête en tant que Time Travel.

  11. Dans le volet Résultats, notez la valeur d’horodatage (votre valeur sera la date et l’heure UTC actuelles).

    Capture d’écran du volet Résultats, mettant en surbrillance la valeur d’horodatage à copier.

  12. Pour récupérer les 10 premiers clients à partir de maintenant, dans un nouvel éditeur de requête, collez l’instruction suivante. Le code récupère les 10 premiers clients à l’aide de l’indicateur de requête FOR TIMESTAMP AS OF.

     --Retrieve the top 10 customers as of now.
     SELECT *
     FROM [dbo].[Top10Customers]
     OPTION (FOR TIMESTAMP AS OF 'YOUR_TIMESTAMP');
    
  13. Renommez la requête en Time Travel Now.

  14. Revenez à la requête Time Travel, puis utilisez la commande Copier pour copier les résultats de la requête.

    Capture d’écran de la commande Copier, mettant en surbrillance les résultats de la requête de copie.

  15. Revenez à la requête Time Travel Now, puis remplacez YOUR_TIMESTAMP par l’horodatage que vous avez copié dans le Presse-papiers.

  16. Exécutez la requête et notez que la deuxième valeur de CustomerKey supérieure est 49 pour Tailspin Toys (Muir, MI).

  17. Modifiez la valeur de l'horodatage pour qu'elle corresponde à une heure antérieure en soustrayant une minute à l'horodatage.

  18. Réexécutez la requête et notez que la deuxième valeur CustomerKey supérieure est 381 pour Wingtip Toys (Sarversville, PA).

Étape suivante