Partilhar via


Tutorial: Viagem no tempo com T-SQL em um armazém

Neste tutorial, aprenda a usar instruções T-SQL para viagem no tempo numa tabela de armazém. Viagem no tempo significa consultar dados como eles existiam em um ponto específico no tempo, o que é automaticamente possível pelo Fabric Warehouse retenção de dados.

Nota

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

  1. Criar um espaço de trabalho
  2. Criar um Armazém
  3. Ingerir dados num armazém de dados

Trabalhar com consultas sobre viagens no tempo

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

  1. Verifique se o espaço de trabalho criado no primeiro tutorial está aberto.

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

    Captura de ecrã da opção Nova consulta SQL no friso.

  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 do Explorer, de dentro da pasta Modos de Exibição do para o esquema , verifique se o modo de exibição existe.

    Captura de ecrã do painel Explorador, realçando a vista recém-criada.

  7. Crie uma nova consulta para trabalhar com consultas 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 suas vendas totais. Também recupera a marca de tempo 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;
    

    Nota

    Atualmente, você só pode usar o fuso horário UTC (Tempo Universal Coordenado) para viagens no 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 (o seu valor será a data e a hora UTC atuais).

    Captura de tela do painel Resultados, destacando o valor de carimbo de data/hora a ser copiado.

  12. Para recuperar os 10 principais clientes no momento, num 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. Regresse à consulta Time Travel e, em seguida, utilize o comando Copiar para copiar os resultados da consulta.

    Captura de ecrã do comando Copiar, realçando os resultados da Consulta de Cópia.

  15. Regresse à consulta Time Travel Now e, em seguida, substitua YOUR_TIMESTAMP pelo timestamp copiado 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 carimbo de data/hora para um de data/hora anterior subtraindo um minuto do carimbo de data/hora.

  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, consulte Como consultar usando a viagem no tempo no nível da instrução.

Próximo passo