Dela via


Självstudie: Tidsresa med T-SQL i ett lager

I den här handledningen lär du dig hur du använder T-SQL-instruktioner för att tidsresa i en lagertabell. Tidsresa innebär att fråga efter data som existerade vid en viss tidpunkt, vilket möjliggörs automatiskt av Fabric Warehouse :s datalagring.

Kommentar

Den här självstudien är en del av ett heltäckande scenario . För att kunna slutföra den här självstudien måste du först slutföra de här självstudierna:

  1. Skapa en arbetsyta
  2. Skapa ett lager
  3. ladda in data i ett datalager

Arbeta med frågor om tidsresor

I den här uppgiften får du lära dig hur du skapar en vy över de 10 främsta kunderna efter försäljning. Du använder vyn i nästa uppgift för att köra frågor om tidsresor.

  1. Säkerställ att arbetsytan som du skapade i den första handledningen är öppen.

  2. I menyfliksområdet Start väljer du Ny SQL-fråga.

    Skärmbild av alternativet Ny SQL-fråga i menyfliksområdet.

  3. Klistra in följande kod i frågeredigeraren. Koden skapar en vy med namnet Top10Customers. Vyn använder en fråga för att hämta de 10 främsta kunderna baserat på försäljning.

    --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. Kör sökningen.

  5. När körningen är klar byter du namn på sökfrågan till Create Top 10 Customer View.

  6. I fönstret Explorer, i mappen för Vy inom dbo-schemat, verifiera att Top10Customers-vyn finns.

    Skärmbild av explorer-fönstret som markerar den nyligen skapade vyn.

  7. Skapa en ny fråga för att arbeta med tidsresefrågor.

  8. Klistra in följande kod i frågeredigeraren. Koden uppdaterar TotalIncludingTax värdet för en enda faktarad för att avsiktligt blåsa upp den totala försäljningen. Den hämtar också den aktuella tidsstämpeln.

     --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;
    

    Kommentar

    För närvarande kan du bara använda tidszonen Coordinated Universal Time (UTC) för tidsresor.

  9. Kör frågan.

  10. När körningen är klar byter du namn på frågan till Time Travel.

  11. Observera tidsstämpelvärdet i fönstret Resultat (ditt värde är aktuellt UTC-datum och tid).

    Skärmbild av fönstret Resultat som markerar tidsstämpelvärdet som ska kopieras.

  12. Om du vill hämta de 10 främsta kunderna från och med nuklistrar du in följande instruktion i en ny frågeredigerare. Koden hämtar de främsta 10 kunderna med hjälp av FOR TIMESTAMP AS OF frågehint.

     --Retrieve the top 10 customers as of now.
     SELECT *
     FROM [dbo].[Top10Customers]
     OPTION (FOR TIMESTAMP AS OF 'YOUR_TIMESTAMP');
    
  13. Byt namn på frågan till Time Travel Now.

  14. Gå tillbaka till den Time Travel frågan och använd sedan kommandot Kopiera för att kopiera frågeresultatet.

    Skärmbild av kommandot Kopiera, med fokus på kopieringsresultaten för frågan.

  15. Gå tillbaka till fråga Time Travel Now och ersätt sedan YOUR_TIMESTAMP med tidsstämpeln som du kopierade till urklipp.

  16. Kör frågan och observera att det näst översta CustomerKey värdet är 49 för Tailspin Toys (Muir, MI).

  17. Ändra tidsstämpelvärdet till en tidigare tid genom att subtrahera en minut från tidsstämpeln.

  18. Kör frågan igen och observera att det näst översta CustomerKey värdet är 381 för Wingtip Toys (Sarversville, PA).

Gå vidare