次の方法で共有


チュートリアル: ウェアハウスでの T-SQL を使用したタイム トラベル

このチュートリアルでは、T-SQL ステートメントを使用してウェアハウス テーブル内で "タイム トラベル" する方法について説明します。 タイム トラベルとは、特定の時点に存在していたデータを照会することを意味します。これは、Fabric Warehouse データ保持によって自動的に可能になります。

Note

このチュートリアルでは、エンド ツー エンドのシナリオの一部を構成します。 このチュートリアルを完了するには、まず次のチュートリアルを完了する必要があります。

  1. ワークスペース を作成する
  2. 倉庫 を作成する
  3. Warehouse にデータを取り込む

タイム トラベル クエリを操作する

このタスクでは、売上別に上位 10 人の顧客のビューを作成する方法について説明します。 次のタスクのビューを使用して、タイムトラベル クエリを実行します。

  1. 最初のチュートリアル で作成したワークスペースが開かれていることを確認します。

  2. [ホーム] リボンの [新しい SQL クエリ] を選択します。

    リボンの [新しい SQL クエリ] オプションのスクリーンショット。

  3. クエリ エディターで、以下のコードを貼り付けます。 このコードでは、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;
    
  4. クエリを実行します。

  5. 実行が完了したら、クエリの名前を Create Top 10 Customer Viewに変更します。

  6. エクスプローラーの ペインで、dbo スキーマの Views フォルダー内から、Top10Customers ビューが存在することを確認します。

    エクスプローラー ウィンドウのスクリーンショット。新しく作成されたビューが強調表示されています。

  7. タイム トラベル クエリを操作する新しいクエリを作成します。

  8. クエリ エディターで、以下のコードを貼り付けます。 このコードは、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) タイム ゾーンのみを使用できます。

  9. クエリを実行します。

  10. 実行が完了したら、クエリの名前を Time Travelに変更します。

  11. 結果 ペインで、タイムスタンプの値に注目します (値は現在の UTC 日時になります)。

    結果ウィンドウのスクリーンショット。コピーするタイムスタンプ値が強調表示されています。

  12. 現在上位 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');
    
  13. クエリの名前を Time Travel Nowに変更します。

  14. Time Travel クエリに戻り、Copy コマンドを使用してクエリ結果をコピーします。

    コピー コマンドのスクリーンショット。[クエリのコピー] の結果が強調表示されています。

  15. Time Travel Now クエリに戻り、YOUR_TIMESTAMP をクリップボードにコピーしたタイムスタンプに置き換えます。

  16. クエリを実行し、2 番目の先頭 CustomerKey 値が Tailspin Toys (Muir, MI)の場合は 49 であることに注意してください。

  17. タイムスタンプから 1 分間の を減算して、タイムスタンプ値を以前の時刻 に変更します。

  18. もう一度クエリを実行し、2 番目の一番上の CustomerKey 値が Wingtip Toys (Sarversville, PA)の場合は 381 であることに注意してください。

ヒント

タイム トラベルの例については、「方法: ステートメント レベルでタイム トラベルを使用してクエリを実行」を参照してください。

次のステップ

チュートリアル: Warehouse でビジュアル クエリ ビルダーを使用してクエリを作成する