チュートリアル: T-SQL を使用したステートメント レベルでのタイム トラベル
この記事では、T-SQL を使用して、ステートメント レベルでウェアハウスでのタイム トラベルを行う方法について説明します。 この機能を使用すると、保持期間内であり過去に表示されたデータに対してクエリを実行できます。
Note
現在、タイム トラベルには協定世界時 (UTC) タイム ゾーンのみが使用されています。
タイム トラベル
この例では、行を更新し、FOR TIMESTAMP AS OF
クエリ ヒントを使用して前の値に簡単にクエリを実行する方法を示します。
リボンの [ホーム] タブで、[新規 SQL クエリ] を選択します。
クエリ エディターで、ビュー
Top10CustomerView
を作成するための次のコードを貼り付けます。 [実行] を選択して、クエリを実行します。CREATE VIEW dbo.Top10CustomersView 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;
エクスプローラーで、
dbo
スキーマの下にある [ビュー] ノードを展開して、新しく作成されたビューTop10CustomersView
を表示できることを確認します。手順 1 と同様に、別の新しいクエリを作成します。 リボンの [ホーム] タブで、[新規 SQL クエリ] を選択します。
クエリ エディターで、以下のコードを貼り付けます。 これにより、
SaleKey
値が22632918
のレコードのTotalIncludingTax
列の値が200000000
に更新されます。 [実行] を選択して、クエリを実行します。/*Update the TotalIncludingTax value of the record with SaleKey value of 22632918*/ UPDATE [dbo].[fact_sale] SET TotalIncludingTax = 200000000 WHERE SaleKey = 22632918;
クエリ エディターで、次のコードを貼り付けます。
CURRENT_TIMESTAMP
T-SQL 関数は、現在の UTC タイムスタンプを datetime として返します。 [実行] を選択して、クエリを実行します。SELECT CURRENT_TIMESTAMP;
クリップボードに返されたタイムスタンプ値をコピーします。
クエリ エディターに次のコードを貼り付け、タイムスタンプ値を前の手順で取得した現在のタイムスタンプ値に置き換えます。 タイムスタンプ構文の形式は
YYYY-MM-DDTHH:MM:SS[.FFF]
です。末尾のゼロを削除します。例:
2024-04-24T20:59:06.097
次の例では、
SaleKey
22632918
の新しい値を含め、TotalIncludingTax
ごとに上位 10 人の顧客の一覧を返します。 [実行] を選択して、クエリを実行します。/*View of Top10 Customers as of today after record updates*/ SELECT * FROM [WideWorldImporters].[dbo].[Top10CustomersView] OPTION (FOR TIMESTAMP AS OF '2024-04-24T20:59:06.097');
クエリ エディターに次のコードを貼り付け、タイムスタンプ値を、
TotalIncludingTax
を更新するために更新スクリプトを実行する前の時刻に置き換えます。 これにより、SaleKey
22632918 のTotalIncludingTax
が更新される前の上位 10 人の顧客の一覧が返されます。 [実行] を選択して、クエリを実行します。/*View of Top10 Customers as of today before record updates*/ SELECT * FROM [WideWorldImporters].[dbo].[Top10CustomersView] OPTION (FOR TIMESTAMP AS OF '2024-04-24T20:49:06.097');
その他の例については、「使い方: ステートメント レベルでタイム トラベルを使用してクエリを実行する」を参照してください。