Compartilhar via


Tutorial: Viagem no tempo com T-SQL em um Warehouse

Neste tutorial, saiba como usar instruções T-SQL para viagem no tempo em uma tabela de repositório. Viagem no tempo significa consultar dados como eles existiam em um ponto específico no tempo, o que é possibilitado automaticamente pela retenção de dados do Fabric Warehouse.

Observação

Este tutorial faz parte de um cenário de ponta a ponta. Para concluir este tutorial, primeiro você deve concluir estes tutoriais:

  1. Criar um espaço de trabalho
  2. Criar um repositório
  3. Ingerir dados em um repositório

Trabalhar com consultas sobre viagem no tempo

Nesta tarefa, saiba como criar uma exibição dos 10 principais clientes por vendas. Você usará a visualização na próxima tarefa para executar consultas de viagem no tempo.

  1. Verifique se o workspace que você criou no primeiro tutorial está aberto.

  2. Na faixa de opções Página Inicial, selecione Nova consulta SQL.

    Captura de tela da opção Nova consulta SQL na barra de ferramentas.

  3. No editor de consultas, cole o código a seguir. O código cria uma exibição chamada Top10Customers. A exibição usa uma consulta para recuperar os 10 principais clientes com base nas vendas.

    --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. Execute a consulta.

  5. Quando a execução for concluída, renomeie a consulta como Create Top 10 Customer View.

  6. No painel Explorer, na pasta Exibições para o esquema dbo, verifique se o modo de exibição Top10Customers existe.

    Captura de tela do painel Explorer, realçando o modo de exibição recém-criado.

  7. Crie uma nova consulta para trabalhar com pesquisas de viagem no tempo.

  8. No editor de consultas, cole o código a seguir. O código atualiza o valor TotalIncludingTax para uma única linha de fatos para inflar deliberadamente o total de vendas. Ele também recupera a marca temporal atual.

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

    Observação

    Atualmente, você só pode usar o fuso horário UTC (Tempo Universal Coordenado) para viagem de tempo.

  9. Execute a consulta.

  10. Quando a execução for concluída, renomeie a consulta como Time Travel.

  11. No painel Resultados, observe o valor do carimbo de data/hora (seu valor será a data e hora atuais em UTC).

    Captura de tela do painel Resultados, destacando o valor do timestamp a ser copiado.

  12. Para recuperar os 10 principais clientes agora, em um novo editor de consultas, cole a instrução a seguir. O código recupera os 10 principais clientes usando a dica de consulta FOR TIMESTAMP AS OF.

     --Retrieve the top 10 customers as of now.
     SELECT *
     FROM [dbo].[Top10Customers]
     OPTION (FOR TIMESTAMP AS OF 'YOUR_TIMESTAMP');
    
  13. Renomeie a consulta como Time Travel Now.

  14. Retorne à consulta Time Travel e use o comando Copiar para copiar os resultados da consulta.

    captura de tela do comando Copiar, realçando os resultados da Consulta de Cópia.

  15. Retorne à consulta Time Travel Now e substitua YOUR_TIMESTAMP pelo carimbo de data/hora que você copiou para a área de transferência.

  16. Execute a consulta e observe que o segundo valor de CustomerKey superior é 49 para Tailspin Toys (Muir, MI).

  17. Modifique o valor do timestamp para um horário anterior subtraindo um minuto do timestamp.

  18. Execute a consulta novamente e observe que o segundo valor de CustomerKey superior é 381 para Wingtip Toys (Sarversville, PA).

Dica

Para obter mais exemplos de viagem no tempo, confira Como consultar usando a viagem no tempo no nível da instrução.

Próxima etapa