Udostępnij za pośrednictwem


Samouczek: podróż w czasie za pomocą języka T-SQL w usłudze Warehouse

Z tego samouczka dowiesz się, jak używać instrukcji języka T-SQL do podróży w czasie w tabeli magazynu. Podróż w czasie oznacza wykonywanie zapytań dotyczących danych, które istniały w określonym momencie, co jest automatycznie umożliwiane przez Fabryczny Magazyn i przechowywanie danych.

Uwaga

Ten samouczek stanowi część kompleksowego scenariusza . Aby ukończyć ten samouczek, należy najpierw wykonać następujące samouczki:

  1. Tworzenie obszaru roboczego
  2. Tworzenie magazynu
  3. pozyskiwanie danych do magazynu

Praca z zapytaniami dotyczącymi podróży w czasie

W tym zadaniu dowiesz się, jak utworzyć widok 10 pierwszych klientów według sprzedaży. Użyjesz widoku w następnym zadaniu, aby uruchomić zapytania dotyczące podróży w czasie.

  1. Upewnij się, że obszar roboczy utworzony w pierwszym samouczku jest otwarty.

  2. Na wstążce Narzędzia główne wybierz pozycję Nowe zapytanie SQL.

    Zrzut ekranu przedstawiający opcję Nowe zapytanie SQL na wstążce.

  3. W edytorze zapytań wklej następujący kod. Kod tworzy widok o nazwie Top10Customers. Widok używa zapytania, aby pobrać 10 najlepszych klientów na podstawie sprzedaży.

    --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. Uruchom zapytanie.

  5. Po zakończeniu wykonywania zmień nazwę zapytania na Create Top 10 Customer View.

  6. W okienku Eksploratora , w folderze Widoki dla schematu dbo, sprawdź, czy widok Top10Customers istnieje.

    Zrzut ekranu przedstawiający okienko Eksplorator z wyróżnionym nowo utworzonym widokiem.

  7. Utwórz nowe zapytanie do obsługi zapytań dotyczących podróży w czasie.

  8. W edytorze zapytań wklej następujący kod. Kod aktualizuje wartość TotalIncludingTax dla pojedynczego wiersza faktów, aby celowo zawyżać łączną sprzedaż. Pobiera również bieżący znacznik czasu.

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

    Uwaga

    Obecnie można używać tylko strefy czasowej uniwersalnej koordynowanej (UTC) na potrzeby podróży czasowej.

  9. Uruchom zapytanie.

  10. Po zakończeniu wykonywania zmień nazwę zapytania na Time Travel.

  11. W panelu Wyniki zwróć uwagę na wartość pola znacznika czasu (ta wartość będzie bieżącą datą i godziną UTC).

    Zrzut ekranu przedstawiający okienko Wyniki z wyróżnioną wartością znacznika czasu do skopiowania.

  12. Aby pobrać 10 najlepszych klientów na dzień dzisiejszy, w nowym edytorze zapytań wklej następujące polecenie. Kod pobiera 10 najlepszych klientów używając wskazówki zapytania FOR TIMESTAMP AS OF.

     --Retrieve the top 10 customers as of now.
     SELECT *
     FROM [dbo].[Top10Customers]
     OPTION (FOR TIMESTAMP AS OF 'YOUR_TIMESTAMP');
    
  13. Zmień nazwę zapytania na Time Travel Now.

  14. Wróć do zapytania Time Travel, a następnie skopiuj wyniki zapytania za pomocą polecenia Copy.

    Zrzut ekranu przedstawiający polecenie Kopiuj z wyróżnionymi wynikami kopiowania zapytania.

  15. Wróć do zapytania Time Travel Now, a następnie zastąp YOUR_TIMESTAMP znacznikiem czasu skopiowanym do schowka.

  16. Uruchom zapytanie i zwróć uwagę, że druga górna wartość CustomerKey wynosi 49 dla Tailspin Toys (Muir, MI).

  17. Zmodyfikuj wartość znacznika czasu na wcześniejszą , odejmując jedną minutę od znacznika czasu.

  18. Ponownie uruchom zapytanie i zwróć uwagę, że druga górna wartość CustomerKey wynosi 381 dla Wingtip Toys (Sarversville, PA).

Napiwek

Aby uzyskać więcej przykładów podróży w czasie, zobacz Jak: Przeprowadzać zapytania z użyciem podróży w czasie na poziomie instrukcji.

Następny krok