วิธีการ: สอบถามโดยใช้เวลาในการเดินทางไปที่ระดับใบแจ้งยอด
ใน Microsoft Fabric ความสามารถในการ เดินทาง ในเวลาจะปลดล็อกความสามารถในการคิวรีข้อมูลเวอร์ชันก่อนหน้าโดยไม่จําเป็นต้องสร้างสําเนาข้อมูลหลายฉบับ ซึ่งประหยัดค่าใช้จ่ายในการจัดเก็บข้อมูล บทความนี้อธิบายวิธีการคิวรีตารางคลังโดยใช้การเดินทางเวลาในระดับคําสั่ง โดยใช้ส่วนคําสั่ง T-SQL OPTION และไวยากรณ์ FOR TIMESTAMP AS OF ขณะนี้ คุณลักษณะนี้อยู่ในการการแสดงตัวอย่าง
ตารางคลังสินค้าสามารถสอบถามถึงระยะเวลาการเก็บรักษาของวันปฏิทินสามสิบวันได้โดยใช้ OPTION
คําสั่ง ที่ระบุรูปแบบ yyyy-MM-ddTHH:mm:ss[.fff]
วันที่
ตัวอย่างต่อไปนี้สามารถดําเนินการได้ใน SQL ตัวแก้ไขคิวรี, SQL Server Management Studio (SSMS), Azure Data Studio หรือตัวแก้ไขคิวรี T-SQL ใด ๆ
หมายเหตุ
ในปัจจุบัน เฉพาะโซนเวลามาตรฐานสากล (UTC) เท่านั้นที่จะใช้สําหรับการเดินทางเวลา
การเดินทางเวลาในตารางคลังสินค้า
ตัวอย่างนี้แสดงวิธีการเดินทางตามเวลาของแต่ละตารางในคลังสินค้า
ส่วนคําสั่ง T-SQL ของ OPTION ระบุจุดในเวลาที่จะส่งกลับข้อมูล
/* Time travel using a SELECT statement */
SELECT *
FROM [dbo].[dimension_customer]
OPTION (FOR TIMESTAMP AS OF '2024-05-02T20:44:13.700');
การเดินทางเวลาในตารางคลังสินค้าหลายตาราง
มีการ ประกาศส่วนคําสั่ง OPTION หนึ่งครั้งต่อคิวรี และผลลัพธ์ของคิวรีจะแสดงสถานะของข้อมูลตามการประทับเวลาที่ระบุในคิวรีสําหรับตารางทั้งหมด
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');
การเดินทางในเวลาในขั้นตอนการจัดเก็บ
กระบวนงานที่เก็บไว้คือ ชุดของคําสั่ง SQL ที่ถูกจัดทําและจัดเก็บไว้ล่วงหน้าเพื่อให้สามารถใช้ซ้ําได้ สามารถประกาศส่วนคําสั่ง OPTION ได้ครั้งเดียวในขั้นตอนที่จัดเก็บไว้ และชุดผลลัพธ์จะแสดงสถานะของตารางทั้งหมดในเวลาที่ระบุไว้
คําสั่ง FOR TIMESTAMP AS OF
ย่อยไม่สามารถยอมรับตัวแปรได้โดยตรง เนื่องจากค่าในคําสั่งนี้ OPTION
ต้องเป็นค่าเชิงกําหนด คุณสามารถใช้ sp_executesql เพื่อส่งผ่านค่าวันที่เวลาที่มีชนิดอย่างเข้มแข็งไปยังกระบวนงานที่เก็บไว้ ตัวอย่างง่าย ๆ นี้ส่งผ่านตัวแปรและแปลงพารามิเตอร์ datetime เป็นรูปแบบที่จําเป็นด้วยรูปแบบวันที่ 126
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
จากนั้น คุณสามารถเรียกใช้กระบวนงานที่เก็บไว้และส่งผ่านตัวแปรเป็นพารามิเตอร์ที่พิมพ์อย่างเข้มแข็งได้ ตัวอย่างเช่น:
--Execute the stored procedure
DECLARE @pointInTime DATETIME;
SET @pointInTime = '2024-05-10T22:56:15.457';
EXEC dbo.sales_by_city @pointInTime;
หรือ ตัวอย่างเช่น:
--Execute the stored procedure
DECLARE @pointInTime DATETIME;
SET @pointInTime = DATEADD(dd, -7, GETDATE())
EXEC dbo.sales_by_city @pointInTime;
การเดินทางในเวลาในมุมมอง
มุมมองแสดงคิวรีที่บันทึกไว้ซึ่งดึงข้อมูลแบบไดนามิกจากตารางหนึ่งหรือหลายตารางเมื่อใดก็ตามที่มีการคิวรีมุมมอง สามารถใช้ คําสั่ง OPTION เพื่อคิวรีมุมมองเพื่อให้ผลลัพธ์แสดงสถานะของข้อมูลณ เวลาประทับที่ระบุไว้ในคิวรี
--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');
- ข้อมูลในอดีตจากตารางในมุมมองสามารถคิวรีสําหรับการเดินทางในเวลาที่เริ่มต้นจากเวลาที่มีการสร้างมุมมองได้เท่านั้น
- หลังจากที่มีการเปลี่ยนแปลงมุมมอง การสืบค้นเพื่อเดินทางเวลาจะใช้ได้หลังจากที่มีการเปลี่ยนแปลงเท่านั้น
- ถ้าตารางพื้นฐานของมุมมองมีการเปลี่ยนแปลงโดยไม่เปลี่ยนแปลงมุมมอง แบบสอบถามการเดินทางเวลาในมุมมองสามารถส่งกลับข้อมูลจาก ก่อนเปลี่ยนตาราง ตามที่คาดไว้
- เมื่อตารางพื้นฐานของมุมมองถูกปล่อยและสร้างขึ้นใหม่โดยไม่มีการปรับเปลี่ยนมุมมอง ข้อมูลสําหรับคิวรีการเดินทางเวลาจะพร้อมใช้งานเฉพาะจากเวลาหลังจากที่ตารางถูกสร้างขึ้นใหม่
ข้อจำกัด
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการเดินทางในเวลาที่ข้อจํากัดระดับใบแจ้งยอดด้วย FOR TIMESTAMP AS OF
โปรดดู ข้อจํากัดการเดินทางเวลา