다음을 통해 공유


자습서: 웨어하우스에서 T-SQL을 사용하는 시간 이동

이 자습서에서는 T-SQL 문을 사용하여 웨어하우스 테이블에서 시간 이동 를 수행하는 방법을 배워봅니다. 시간 여행은 특정 시점에 존재했던 데이터를 질의하는 것을 의미하며, 패브릭 웨어하우스에서 데이터 보존 덕분에 자동으로 가능합니다.

참고 항목

이 자습서는 엔드 투 엔드 시나리오일부를 구성합니다. 이 자습서를 완료하려면 먼저 다음 자습서를 완료해야 합니다.

  1. 작업 영역 만들기
  2. 창고 만들기
  3. 웨어하우스 에 데이터 입력

시간 여행 쿼리 작업하기

이 작업에서는 판매별로 상위 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. 쿼리 편집기에 다음 코드를 붙여 넣습니다. 이 코드는 단일 팩트 행에 대한 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;
    

    참고 항목

    현재는 시간 이동에 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 쿼리로 돌아가서 복사 명령을 사용하여 쿼리 결과를 복사합니다.

    복사 명령의 스크린샷으로, 쿼리 복사 결과를 강조 표시합니다.

  15. Time Travel Now 쿼리로 돌아간 다음, YOUR_TIMESTAMP을 클립보드에 복사한 타임스탬프로 교체합니다.

  16. 쿼리를 실행하고, 두 번째로 높은 CustomerKey 값이 Tailspin Toys (Muir, MI)에 대해 49임을 확인하세요.

  17. 타임스탬프에서 1분을 빼서 타임스탬프 값을 이전 시간 으로 수정합니다.

  18. 쿼리를 다시 실행하고 두 번째로 높은 CustomerKey 값이 Wingtip Toys (Sarversville, PA)에 대해 381임을 확인하세요.

다음 단계