Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:✅ SQL Analytics-végpont és -raktár a Microsoft Fabricben
A Microsoft Fabric az időutazás lehetővé teszi az adatok korábbi verzióinak lekérdezését anélkül, hogy több adatmásolatot kellene létrehoznia, és így megtakaríthatja a tárolási költségeket. Ez a cikk azt ismerteti, hogyan kérdezhetők le a raktártáblák az időutazással az utasítás szintjén, a T-SQL OPTION záradék és a FOR TIMESTAMP AS OF szintaxis használatával.
Az alábbi példákat a SQL Lekérdezésszerkesztő, SQL Server Management Studio (SSMS), a Visual Studio Code MSSQL-bővítményében vagy bármely T-SQL-query editor lehet végrehajtani.
Megjegyzés
Az időutazáshoz jelenleg csak az egyezményes világidő (UTC) időzónája használható.
Időutazás egy raktártáblán
Ez a példa bemutatja, hogyan lehet időutazást végrehajtani egyéni táblán a raktárban.
Az OPTION T-SQL záradék az adatok visszaadásához megadott időpontot adja meg. A OPTION záradék a dátumformátumot yyyy-MM-ddTHH:mm:ss[.fff]használja.
/* Time travel using a SELECT statement */
SELECT *
FROM [dbo].[dimension_customer]
OPTION (FOR TIMESTAMP AS OF '2024-05-02T20:44:13.700');
Időutazás több raktártáblán
Az OPTION záradékot lekérdezésenként egyszer deklarálja a rendszer, és a lekérdezés eredményei az adatok állapotát tükrözik az összes tábla lekérdezésében megadott időbélyegen.
SELECT Sales.StockItemKey,
Sales.Description,
CAST (Sales.Quantity AS int)) AS SoldQuantity,
c.Customer
FROM [dbo].[fact_sale] AS Sales INNER JOIN [dbo].[dimension_customer] AS c
ON Sales.CustomerKey = c.CustomerKey
GROUP BY Sales.StockItemKey, Sales.Description, Sales.Quantity, c.Customer
ORDER BY Sales.StockItemKey
OPTION (FOR TIMESTAMP AS OF '2024-05-02T20:44:13.700');
Időutazás tárolt eljárásban
A tárolt eljárások olyan SQL-utasítások készletei, amelyek előre le vannak állítva és tárolva, hogy azok ismételten felhasználhatók legyenek. Az OPTION záradék egyszer deklarálható a tárolt eljárásban, az eredményhalmaz pedig az összes tábla állapotát tükrözi a megadott időbélyegen.
A FOR TIMESTAMP AS OF záradék nem fogad el közvetlenül változót, mivel az ebben OPTION a záradékban szereplő értékeknek determinisztikusnak kell lenniük. A sp_executesql használatával egy erősen beírt datetime értéket adhat át a tárolt eljárásnak. Ez az egyszerű példa egy változót ad át, és a datetime paramétert a szükséges formátumra alakítja 126-os dátumstílussal.
CREATE PROCEDURE [dbo].[sales_by_city] (@pointInTime DATETIME)
AS
BEGIN
DECLARE @selectForTimestampStatement NVARCHAR(4000);
DECLARE @pointInTimeLiteral VARCHAR(33);
SET @pointInTimeLiteral = CONVERT(VARCHAR(33), @pointInTime, 126);
SET @selectForTimestampStatement = '
SELECT *
FROM [dbo].[fact_sale]
OPTION (FOR TIMESTAMP AS OF ''' + @pointInTimeLiteral + ''')';
EXEC sp_executesql @selectForTimestampStatement
END
Ezután meghívhatja a tárolt eljárást, és átadhat egy változót erősen típusos paraméterként. Példa:
--Execute the stored procedure
DECLARE @pointInTime DATETIME;
SET @pointInTime = '2024-05-10T22:56:15.457';
EXEC dbo.sales_by_city @pointInTime;
Vagy például:
--Execute the stored procedure
DECLARE @pointInTime DATETIME;
SET @pointInTime = DATEADD(dd, -7, GETDATE())
EXEC dbo.sales_by_city @pointInTime;
Időutazás egy nézetben
A nézetek egy mentett lekérdezést jelölnek, amely dinamikusan lekéri az adatokat egy vagy több táblából, amikor lekérdezik a nézetet. Az OPTION záradékkal lekérdezhetők a nézetek, így az eredmények a lekérdezésben megadott időbélyegen tükrözik az adatok állapotát.
--Create View
CREATE VIEW 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;
/*View of Top10 Customers as of a point in time*/
SELECT *
FROM [Timetravel].[dbo].[Top10CustomersView]
OPTION (FOR TIMESTAMP AS OF '2024-05-01T21:55:27.513');
- A nézetben lévő táblák előzményadatai csak a nézet létrehozásának időpontjától kezdődő időutazásra kérdezhetők le.
- A nézet módosítása után az időutazási lekérdezések csak a módosítás után érvényesek.
- Ha egy nézet alapjául szolgáló táblázatot a nézet módosítása nélkül módosítanak, a nézet időutazó lekérdezései a várt módon visszaadhatják az adatokat a tábla módosítása előtt.
- Ha a nézet alapjául szolgáló táblázatot a rendszer elveti és újra létrehozza a nézet módosítása nélkül, az időutazási lekérdezések adatai csak a tábla újbóli létrehozása utáni időponttól érhetők el.
DML-műveletek időutazása
A következőkre vonatkozik: Csak raktár
A Fabric Data Warehouse az adatmanipulációs nyelv (DML) használatával szúrja be, hozza létre és töltse fel a táblákat a meglévő adatok módosításával és átalakításával. Az OPTION záradék , és OPTION (FOR TIMESTAMP AS OF ... használható olyan DML-műveletekkel együtt, mint a INSERT INTO ... SELECT, CREATE TABLE AS SELECT (CTAS) és SELECT INTO.
/*Time travel for INSERT INTO...SELECT*/
INSERT INTO dbo.Fact_Sale_History
(SalesKey, StockItemKey, Quantity, Description, UnitPrice, InvoiceDateKey)
SELECT
SaleKey AS SalesKey,
StockItemKey,
Quantity,
Description,
UnitPrice,
InvoiceDateKey
FROM dbo.[Fact_Sale]
OPTION (FOR TIMESTAMP AS OF '2025-06-18T19:55:13.853');
/*Time travel for CREATE TABLE AS SELECT*/
CREATE TABLE dbo.SalesHistory AS
SELECT * FROM dbo.fact_sale
OPTION (FOR TIMESTAMP AS OF '2025-06-18T19:55:13.853');
/*Time travel for SELECT INTO*/
SELECT * INTO dbo.SalesHistory1
FROM dbo.fact_sale
OPTION (FOR TIMESTAMP AS OF '2025-06-18T19:55:13.853');
Korlátozások
További információ az időutazásról az utasítási szintű korlátozásoknál FOR TIMESTAMP AS OF: Időutazás korlátozásai.