Руководство. Путешествие по времени с помощью T-SQL на уровне инструкции
Из этой статьи вы узнаете, как перемещаться по времени в хранилище на уровне инструкции с помощью T-SQL. Эта функция позволяет запрашивать данные по мере его появления в прошлом в течение периода хранения.
Примечание.
В настоящее время для перемещения по времени используется только часовой пояс UTC.
Переход по времени
В этом примере мы обновим строку и покажем, как легко запрашивать предыдущее значение с помощью FOR TIMESTAMP AS OF
указания запроса.
На вкладке "Главная" ленты выберите новый SQL-запрос.
В редакторе запросов вставьте следующий код, чтобы создать представление
Top10CustomerView
. Выберите Выполнить для выполнения запроса.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;
В обозревателе убедитесь, что только что созданное представление
Top10CustomersView
можно просмотреть, разверив узел представления в схемеdbo
.Создайте другой запрос, аналогичный шагу 1. На вкладке "Главная" ленты выберите новый SQL-запрос.
В редакторе запросов вставьте следующий код. Это обновляет значение столбца
TotalIncludingTax
для записи, в которой имеетсяSaleKey
значение22632918
.200000000
Выберите Выполнить для выполнения запроса./*Update the TotalIncludingTax value of the record with SaleKey value of 22632918*/ UPDATE [dbo].[fact_sale] SET TotalIncludingTax = 200000000 WHERE SaleKey = 22632918;
В редакторе запросов вставьте следующий код. Функция
CURRENT_TIMESTAMP
T-SQL возвращает текущую метку времени UTC в качестве даты и времени. Выберите Выполнить для выполнения запроса.SELECT CURRENT_TIMESTAMP;
Скопируйте значение метки времени, возвращенное в буфер обмена.
Вставьте следующий код в редактор запросов и замените значение метки времени текущим значением метки времени, полученным на предыдущем шаге. Формат синтаксиса метки времени .
YYYY-MM-DDTHH:MM:SS[.FFF]
Удалите конечные нули, например:
2024-04-24T20:59:06.097
В следующем примере возвращается список первых десяти клиентов
TotalIncludingTax
, включая новое значение дляSaleKey
22632918
. Выберите Выполнить для выполнения запроса./*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');
Вставьте следующий код в редактор запросов и замените значение метки времени на время до выполнения скрипта обновления для обновления
TotalIncludingTax
значения. Это вернет список лучших десяти клиентов доTotalIncludingTax
обновления дляSaleKey
22632918. Выберите Выполнить для выполнения запроса./*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');
Дополнительные примеры см . в статье "Практическое руководство. Запрос с использованием перемещения по времени на уровне инструкции".