チュートリアル: ウェアハウスでの T-SQL を使用したタイム トラベル
このチュートリアルでは、T-SQL ステートメントを使用してウェアハウス テーブル内で "タイム トラベル" する方法について説明します。 タイム トラベルとは、特定の時点に存在していたデータを照会することを意味します。これは、Fabric Warehouse データ保持によって自動的に可能になります。
Note
このチュートリアルでは、エンド ツー エンドのシナリオの一部を構成します。 このチュートリアルを完了するには、まず次のチュートリアルを完了する必要があります。
タイム トラベル クエリを操作する
このタスクでは、売上別に上位 10 人の顧客のビューを作成する方法について説明します。 次のタスクのビューを使用して、タイムトラベル クエリを実行します。
最初のチュートリアル で作成したワークスペースが開かれていることを確認します。
[ホーム] リボンの [新しい SQL クエリ] を選択します。
クエリ エディターで、以下のコードを貼り付けます。 このコードでは、
Top10Customers
という名前のビューが作成されます。 このビューでは、クエリを使用して、売上に基づいて上位 10 人の顧客を取得します。--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;
クエリを実行します。
実行が完了したら、クエリの名前を
Create Top 10 Customer View
に変更します。エクスプローラーの ペインで、
dbo
スキーマの Views フォルダー内から、Top10Customers
ビューが存在することを確認します。タイム トラベル クエリを操作する新しいクエリを作成します。
クエリ エディターで、以下のコードを貼り付けます。 このコードは、1 つのファクト行の
TotalIncludingTax
値を更新して、売上の合計を意図的に拡大します。 また、現在のタイムスタンプも取得します。--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;
Note
現在、タイム トラベルには世界協定時刻 (UTC) タイム ゾーンのみを使用できます。
クエリを実行します。
実行が完了したら、クエリの名前を
Time Travel
に変更します。結果 ペインで、タイムスタンプの値に注目します (値は現在の UTC 日時になります)。
現在
上位 10 人の顧客を取得するには、新しいクエリ エディターに次のステートメントを貼り付けます。 このコードでは、 FOR TIMESTAMP AS OF
クエリ ヒントを使用して上位 10 人の顧客を取得します。--Retrieve the top 10 customers as of now. SELECT * FROM [dbo].[Top10Customers] OPTION (FOR TIMESTAMP AS OF 'YOUR_TIMESTAMP');
クエリの名前を
Time Travel Now
に変更します。Time Travel
クエリに戻り、Copy コマンドを使用してクエリ結果をコピーします。Time Travel Now
クエリに戻り、YOUR_TIMESTAMP
をクリップボードにコピーしたタイムスタンプに置き換えます。クエリを実行し、2 番目の先頭
CustomerKey
値がTailspin Toys (Muir, MI)
の場合は 49 であることに注意してください。タイムスタンプから 1 分間の を減算して、タイムスタンプ値を以前の時刻
に変更します。 もう一度クエリを実行し、2 番目の一番上の
CustomerKey
値がWingtip Toys (Sarversville, PA)
の場合は 381 であることに注意してください。
ヒント
タイム トラベルの例については、「方法: ステートメント レベルでタイム トラベルを使用してクエリを実行」を参照してください。
次のステップ
チュートリアル: Warehouse でビジュアル クエリ ビルダーを使用してクエリを作成する