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
.
Nella scheda Home della barra multifunzione, selezionare Nuova query SQL.
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;
In Esplora, verificare che sia possibile visualizzare la visualizzazione
Top10CustomersView
appena creata espandendo il nodo Visualizza sotto allo schemadbo
.Creare un'altra nuova query, simile al passaggio 1. Nella scheda Home della barra multifunzione, selezionare Nuova query SQL.
Incollare il seguente codice nell'editor di query. In questo modo viene aggiornato il valore della colonna
TotalIncludingTax
a200000000
per il record con il valoreSaleKey
di22632918
. 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;
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;
Copiare il valore timestamp restituito negli Appunti.
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]
.Rimuovere gli zeri finali, ad esempio:
2024-04-24T20:59:06.097
.Nell'esempio seguente viene restituito l'elenco dei primi dieci clienti di
TotalIncludingTax
, incluso il nuovo valore perSaleKey
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');
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 diTotalIncludingTax
perSaleKey
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.