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 :
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.
Vérifiez que l’espace de travail que vous avez créé dans le premier didacticiel est ouvert.
Dans le ruban Accueil, sélectionnez nouvelle requête SQL.
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;
Exécutez la requête.
Une fois l’exécution terminée, renommez la requête en tant que
Create Top 10 Customer View
.Dans le volet de l’explorateur, à partir du dossier Vues pour le
dbo
schéma, vérifiez que la vueTop10Customers
existe.Créez une nouvelle requête pour travailler avec des requêtes de parcours temporel.
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.
Exécutez la requête.
Une fois l’exécution terminée, renommez la requête en tant que
Time Travel
.Dans le volet Résultats, notez la valeur d’horodatage (votre valeur sera la date et l’heure UTC actuelles).
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');
Renommez la requête en
Time Travel Now
.Revenez à la requête
Time Travel
, puis utilisez la commande Copier pour copier les résultats de la requête.Revenez à la requête
Time Travel Now
, puis remplacezYOUR_TIMESTAMP
par l’horodatage que vous avez copié dans le Presse-papiers.Exécutez la requête et notez que la deuxième valeur de
CustomerKey
supérieure est 49 pourTailspin Toys (Muir, MI)
.Modifiez la valeur de l'horodatage pour qu'elle corresponde à une heure antérieure en soustrayant une minute à l'horodatage.
Réexécutez la requête et notez que la deuxième valeur
CustomerKey
supérieure est 381 pourWingtip Toys (Sarversville, PA)
.
Conseil
Pour obtenir d’autres exemples, consultez Guide pratique pour interroger à l’aide du voyage dans le temps au niveau de l’instruction.