Öğretici: Bir Ambarda T-SQL ile zaman yolculuğu
Bu öğreticide, bir ambar tablosunda zaman yolculuğu için T-SQL deyimlerini kullanmayı öğrenin. Zaman yolculuğu, verileri belirli bir zaman noktasında mevcut olduğu gibi sorgulamak anlamına gelir ve bu da Doku Ambarı veri saklamatarafından otomatik olarak mümkün hale getirilir.
Not
Bu öğretici, uçtan uca senaryonunbir parçasını oluşturur. Bu kılavuzu tamamlamak için önce şu kılavuzları tamamlamanız gerekir:
- çalışma alanı oluşturma
- Ambar oluşturma
- Verileri Bir Ambar'a Yükleme
Zaman yolculuğu sorguları ile çalışma
Bu görevde, satışa göre ilk 10 müşterinin görünümünü oluşturmayı öğrenin. Zaman yolculuğu sorguları çalıştırmak için bir sonraki görevde görünümü kullanacaksınız.
İlk öğretici oluşturduğunuz çalışma alanının açık olduğundan emin olun.
Ana Sayfa şeridinde Yeni SQL Sorgususeçin.
Sorgu düzenleyicisinde aşağıdaki kodu yapıştırın. Kod,
Top10Customers
adlı bir görünüm oluşturur. Satışlara göre en iyi 10 müşteriyi belirlemek için görünümde bir sorgu kullanılır.--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;
Sorguyu çalıştırın.
Yürütme tamamlandığında sorguyu
Create Top 10 Customer View
olarak yeniden adlandırın.Gezgini bölmesinde,
dbo
şemasının Görünümler klasörünün içindenTop10Customers
görünümünün var olduğunu doğrulayın.Zaman yolculuğu sorgularıyla çalışmak için yeni bir sorgu oluşturun.
Sorgu düzenleyicisinde aşağıdaki kodu yapıştırın. Kod, tek bir olgu satırının
TotalIncludingTax
değerini güncelleştirerek toplam satışlarını kasıtlı olarak şişirir. Ayrıca geçerli zaman damgasını da alır.--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;
Not
Şu anda, zaman yolculuğu için yalnızca Eşgüdümlü Evrensel Saat (UTC) saat dilimini kullanabilirsiniz.
Sorguyu çalıştırın.
Yürütme tamamlandığında sorguyu
Time Travel
olarak yeniden adlandırın.Sonuçlar bölmesinde zaman damgası değerine dikkat edin (değeriniz geçerli UTC tarih ve saati olacaktır).
itibarıyla ilk 10 müşteriyi almak
yeni bir sorgu düzenleyicisine aşağıdaki deyimi yapıştırın. Kod, FOR TIMESTAMP AS OF
sorgu ipucunu kullanarak ilk 10 müşteriyi alır.--Retrieve the top 10 customers as of now. SELECT * FROM [dbo].[Top10Customers] OPTION (FOR TIMESTAMP AS OF 'YOUR_TIMESTAMP');
Sorguyu
Time Travel Now
olarak yeniden adlandırın.Time Travel
sorgusuna dönün ve sorgu sonuçlarını kopyalamak için Kopyala komutunu kullanın.Time Travel Now
sorgusuna dönün veYOUR_TIMESTAMP
'i panoya kopyaladığınız zaman bilgisiyle değiştirin.Sorguyu çalıştırın ve ikinci üst
CustomerKey
değerininTailspin Toys (Muir, MI)
için 49 olduğuna dikkat edin.Zaman damgasından bir dakika çıkararak zaman damgası değerini daha önceki bir zaman
değiştirin. Sorguyu yeniden çalıştırın ve
Wingtip Toys (Sarversville, PA)
için ikinci en yüksekCustomerKey
değerinin 381 olduğuna dikkat edin.
Bahşiş
Daha fazla zaman yolculuğu örneği için bkz. Nasıl yapılır:deyim düzeyinde zaman yolculuğu kullanarak sorgulama.