Поделиться через


Руководство. Путешествие по времени с помощью T-SQL на уровне инструкции

Из этой статьи вы узнаете, как перемещаться по времени в хранилище на уровне инструкции с помощью T-SQL. Эта функция позволяет запрашивать данные по мере его появления в прошлом в течение периода хранения.

Примечание.

В настоящее время для перемещения по времени используется только часовой пояс UTC.

Переход по времени

В этом примере мы обновим строку и покажем, как легко запрашивать предыдущее значение с помощью FOR TIMESTAMP AS OF указания запроса.

  1. На вкладке "Главная" ленты выберите новый SQL-запрос.

    Снимок экрана: портал Fabric кнопки

  2. В редакторе запросов вставьте следующий код, чтобы создать представление 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;
    
  3. В обозревателе убедитесь, что только что созданное представление Top10CustomersView можно просмотреть, разверив узел представления в схемеdbo.

    Снимок экрана: изображение пользователя.

  4. Создайте другой запрос, аналогичный шагу 1. На вкладке "Главная" ленты выберите новый SQL-запрос.

  5. В редакторе запросов вставьте следующий код. Это обновляет значение столбца 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;
    
  6. В редакторе запросов вставьте следующий код. Функция CURRENT_TIMESTAMP T-SQL возвращает текущую метку времени UTC в качестве даты и времени. Выберите Выполнить для выполнения запроса.

    SELECT CURRENT_TIMESTAMP;
    
  7. Скопируйте значение метки времени, возвращенное в буфер обмена.

  8. Вставьте следующий код в редактор запросов и замените значение метки времени текущим значением метки времени, полученным на предыдущем шаге. Формат синтаксиса метки времени .YYYY-MM-DDTHH:MM:SS[.FFF]

  9. Удалите конечные нули, например: 2024-04-24T20:59:06.097

  10. В следующем примере возвращается список первых десяти клиентов 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');
    
  11. Вставьте следующий код в редактор запросов и замените значение метки времени на время до выполнения скрипта обновления для обновления 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');
    

Дополнительные примеры см . в статье "Практическое руководство. Запрос с использованием перемещения по времени на уровне инструкции".

Следующий шаг