Condividi tramite


Esercitazione: Spostamento temporale con T-SQL a livello di istruzione

Questo articolo illustra come viaggiare in tempo nel magazzino a livello di istruzione usando T-SQL. Questa funzionalità consente di eseguire query sui dati come sono apparsi in passato, entro un periodo di conservazione.

Nota

Attualmente, per il tempo per spostamento fisico, viene usato solo il fuso orario Coordinated Universal Time (UTC).

Spostamento cronologico

In questo esempio si aggiornerà una riga e si mostrerà come eseguire facilmente una query sul valore precedente usando l'hint per la query FOR TIMESTAMP AS OF.

  1. Nella scheda Home della barra multifunzione, selezionare Nuova query SQL.

    Screenshot del portale infrastruttura del pulsante Nuova query SQL.

  2. Nell'editor di query incollare il codice seguente per creare la vista Top10CustomerView. Selezionare Esegui per eseguire la query.

    CREATE VIEW dbo.Top10CustomersView
    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;
    
  3. In Esplora, verificare che sia possibile visualizzare la visualizzazione Top10CustomersView appena creata espandendo il nodo Visualizza sotto allo schema dbo.

    Screenshot dell'immagine dell’utente.

  4. Creare un'altra nuova query, simile al passaggio 1. Nella scheda Home della barra multifunzione, selezionare Nuova query SQL.

  5. Incollare il seguente codice nell'editor di query. In questo modo viene aggiornato il valore della colonna TotalIncludingTax a 200000000 per il record con il valore SaleKey di 22632918. Selezionare Esegui per eseguire la query.

    /*Update the TotalIncludingTax value of the record with SaleKey value of 22632918*/
    UPDATE [dbo].[fact_sale]
    SET TotalIncludingTax = 200000000
    WHERE SaleKey = 22632918;
    
  6. Incollare il seguente codice nell'editor di query. La funzione T-SQL CURRENT_TIMESTAMP restituisce il timestamp UTC corrente come datetime. Selezionare Esegui per eseguire la query.

    SELECT CURRENT_TIMESTAMP;
    
  7. Copiare il valore timestamp restituito negli Appunti.

  8. Incollare il codice seguente nell'editor di query e sostituire il valore timestamp con il valore timestamp corrente ottenuto dal passaggio precedente. Il formato della sintassi timestamp è YYYY-MM-DDTHH:MM:SS[.FFF].

  9. Rimuovere gli zeri finali, ad esempio: 2024-04-24T20:59:06.097.

  10. Nell'esempio seguente viene restituito l'elenco dei primi dieci clienti di TotalIncludingTax, incluso il nuovo valore per SaleKey 22632918. Selezionare Esegui per eseguire la query.

    /*View of Top10 Customers as of today after record updates*/
    SELECT *
    FROM [WideWorldImporters].[dbo].[Top10CustomersView]
    OPTION (FOR TIMESTAMP AS OF '2024-04-24T20:59:06.097');
    
  11. Incollare il codice seguente nell'editor di query e sostituire il valore timestamp in un'ora prima di eseguire lo script di aggiornamento per aggiornare il valore TotalIncludingTax. Verrà restituito l'elenco dei primi dieci clienti prima dell'aggiornamento di TotalIncludingTax per SaleKey 22632918. Selezionare Esegui per eseguire la query.

    /*View of Top10 Customers as of today before record updates*/
    SELECT *
    FROM [WideWorldImporters].[dbo].[Top10CustomersView]
    OPTION (FOR TIMESTAMP AS OF '2024-04-24T20:49:06.097');
    

Per altri esempi, vedere Come fare a: Eseguire query usando il tempo per spostamento fisico.

Passaggio successivo