Condividi tramite


Esercitazione: Viaggio nel tempo con T-SQL in un magazzino

Questa esercitazione illustra come usare istruzioni T-SQL per tempo di viaggio in una tabella warehouse. Viaggio nel tempo significa eseguire query sui dati come esistevano in un momento specifico, il che è reso automaticamente possibile dalla conservazione dei dati di Fabric Warehouse .

Nota

Questa esercitazione fa parte di uno scenario end-to-end . Per completare questa esercitazione, è prima necessario completare queste esercitazioni:

  1. Creare un'area di lavoro
  2. Creare un magazzino
  3. Inserire dati in un magazzino dati

Utilizzare query di viaggio nel tempo

In questa attività viene illustrato come creare una visualizzazione dei primi 10 clienti in base alle vendite. Userai la visualizzazione nell'attività successiva per eseguire query di viaggio nel tempo.

  1. Assicurarsi che l'area di lavoro creata nel prima esercitazione sia aperta.

  2. Nella barra multifunzione Home, selezionare Nuova query SQL.

    Screenshot dell'opzione Nuova query SQL sulla barra multifunzione.

  3. Incollare il seguente codice nell'editor di query. Il codice crea una vista denominata Top10Customers. La vista usa un'interrogazione per recuperare i primi 10 clienti in base alle vendite.

    --Create the Top10Customers view.
    CREATE VIEW [dbo].[Top10Customers]
    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;
    
  4. Esegui la query.

  5. Al termine dell'esecuzione, rinominare la query come Create Top 10 Customer View.

  6. Nel riquadro di Esplora , dalla cartella Visualizzazioni per lo schema dbo, verificare che esista la vista Top10Customers.

    Screenshot del riquadro Esplora risorse, evidenziando la visualizzazione appena creata.

  7. Creare una nuova query per lavorare con le query di viaggio nel tempo.

  8. Incollare il seguente codice nell'editor di query. Il codice aggiorna il valore TotalIncludingTax per una singola riga di dati per gonfiare deliberatamente il totale delle vendite. Recupera anche il timestamp corrente.

     --Update the TotalIncludingTax for a single fact row to deliberately inflate its total sales.
     UPDATE [dbo].[fact_sale]
     SET [TotalIncludingTax] = 200000000
     WHERE [SaleKey] = 22632918; --For customer 'Tailspin Toys (Muir, MI)'
     GO
    
     --Retrieve the current (UTC) timestamp.
     SELECT CURRENT_TIMESTAMP;
    

    Nota

    Attualmente, è possibile usare solo il fuso orario UTC (Coordinated Universal Time) per il viaggio temporale.

  9. Eseguire la query.

  10. Al termine dell'esecuzione, rinominare la query come Time Travel.

  11. Nel riquadro Risultati, notare il valore del timestamp (il valore sarà la data e l'ora UTC correnti).

    Screenshot del riquadro Risultati, evidenziando il valore del timestamp da copiare.

  12. Per recuperare i primi 10 clienti ad oggi, in un nuovo editor di query, incolla l'istruzione seguente. Il codice recupera i primi 10 clienti utilizzando il suggerimento di query FOR TIMESTAMP AS OF.

     --Retrieve the top 10 customers as of now.
     SELECT *
     FROM [dbo].[Top10Customers]
     OPTION (FOR TIMESTAMP AS OF 'YOUR_TIMESTAMP');
    
  13. Rinominare la query come Time Travel Now.

  14. Tornare alla query e quindi usare il comando copia per copiare i risultati della query.

    Screenshot del comando Copia, evidenziando i risultati di Copia query.

  15. Tornare alla query Time Travel Now e quindi sostituire YOUR_TIMESTAMP con il timestamp copiato negli Appunti.

  16. Eseguire la query e notare che il secondo valore CustomerKey più alto è 49 per Tailspin Toys (Muir, MI).

  17. Modificare il valore del timestamp a un momento precedente sottraendo un minuto dal timestamp.

  18. Eseguire di nuovo la query e notare che il secondo valore più alto di CustomerKey è 381 per Wingtip Toys (Sarversville, PA).

Mancia

Per altri esempi di viaggio nel tempo, vedere Procedura: Eseguire query usando il viaggio nel tempo a livello di istruzione.

Passaggio successivo