Sdílet prostřednictvím


Kurz: Cestování časem s využitím T-SQL na úrovni příkazu (Preview)

V tomto článku se dozvíte, jak v tomto článku cestovat ve skladu na úrovni prohlášení pomocí jazyka T-SQL. Tato funkce umožňuje dotazovat se na data, která se zobrazují v minulosti během doby uchovávání.

Poznámka:

V současné době se pro časovou cestu používá pouze časové pásmo UTC (Coordinated Universal Time).

Časová cesta

V tomto příkladu aktualizujeme řádek a ukážeme, jak pomocí nápovědy k dotazu snadno zadat dotaz na FOR TIMESTAMP AS OF předchozí hodnotu.

  1. Na kartě Domů na pásu karet vyberte Nový dotaz SQL.

    Snímek obrazovky z portálu Fabric s tlačítkem Nový dotaz SQL

  2. V editoru dotazů vložte následující kód pro vytvoření zobrazení Top10CustomerView. Vyberte Spustit a spusťte dotaz.

    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. V Průzkumníku ověřte, že nově vytvořené zobrazení Top10CustomersView můžete zobrazit rozbalením uzlu Zobrazit ve dbo schématu.

    Snímek obrazovky s obrázkem uživatele

  4. Vytvořte další nový dotaz podobný kroku 1. Na kartě Domů na pásu karet vyberte Nový dotaz SQL.

  5. V editoru dotazů vložte následující kód. Tím se TotalIncludingTax aktualizuje hodnota 200000000 sloupce pro záznam, který má SaleKey hodnotu 22632918. Vyberte Spustit a spusťte dotaz.

    /*Update the TotalIncludingTax value of the record with SaleKey value of 22632918*/
    UPDATE [dbo].[fact_sale]
    SET TotalIncludingTax = 200000000
    WHERE SaleKey = 22632918;
    
  6. V editoru dotazů vložte následující kód. Funkce CURRENT_TIMESTAMP T-SQL vrátí aktuální časové razítko UTC jako datum a čas. Vyberte Spustit a spusťte dotaz.

    SELECT CURRENT_TIMESTAMP;
    
  7. Zkopírujte hodnotu časového razítka vrácenou do schránky.

  8. Do editoru dotazů vložte následující kód a nahraďte hodnotu časového razítka aktuální hodnotou časového razítka získanou z předchozího kroku. Formát syntaxe časového razítka je YYYY-MM-DDTHH:MM:SS[.FFF].

  9. Odeberte koncové nuly, například: 2024-04-24T20:59:06.097.

  10. Následující příklad vrátí seznam prvních deseti zákazníků podle TotalIncludingTax, včetně nové hodnoty pro SaleKey 22632918. Vyberte Spustit a spusťte dotaz.

    /*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. Do editoru dotazů vložte následující kód a nahraďte hodnotu časového razítka na čas před spuštěním aktualizačního skriptu, aby se hodnota aktualizovala TotalIncludingTax . Tím by se vrátil seznam prvních deseti zákazníků před TotalIncludingTax aktualizací pro SaleKey 22632918. Vyberte Spustit a spusťte dotaz.

    /*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');
    

Další příklady najdete v tématu Postupy: Dotazování pomocí časového cestování na úrovni příkazu.

Další krok