Bagikan melalui


Jendela rekam jepret (Azure Stream Analytics)

Jendela snapshot mengelompokkan peristiwa yang memiliki tanda waktu yang sama. Tidak seperti jenis windowing lainnya, yang memerlukan fungsi jendela tertentu (seperti SessionWindow(), Anda dapat menerapkan jendela snapshot dengan menambahkan System.Timestamp() ke klausa GROUP BY.

Diagram berikut mengilustrasikan aliran dengan serangkaian peristiwa dan bagaimana mereka dipetakan ke dalam jendela rekam jepret.

Diagram jendela rekam jepret

System.Timestamp() dapat dipertimbangkan dalam klausa GROUP BY sebagai kolom kunci atau definisi jendela rekam jepret karena mengelompokkan peristiwa ke dalam jendela berdasarkan kesetaraan tanda waktu. Ketika dikombinasikan dengan fungsi jendela lain, System.Timestamp() diperlakukan sebagai kunci dan bukan sebagai definisi jendela. System.Timestamp() tidak menghasilkan kesalahan saat digunakan dengan fungsi jendela lain tidak seperti ketika beberapa fungsi jendela digunakan dalam klausa GROUP BY. Menggunakan System.Timestamp() dan fungsi jendela di GROUP BY dapat berguna untuk membuat batch hasil.

Ekspresi apa pun yang berisi System.Timestamp() tidak dianggap sebagai jendela. Misalnya, GROUP BY DATEPART(minute, System.Timestamp()) gagal dengan kesalahan "jendela harus ditentukan".

Sintaks

System.Timestamp()

Contoh

Contoh dasar

Contoh berikut mengembalikan jumlah tweet dengan jenis topik yang sama yang terjadi pada saat yang sama persis:

SELECT Topic, COUNT(*)
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()

Contoh rekam jepret jendela tumbling

Penggunaan umum untuk jendela rekam jepret adalah menggabungkan peristiwa setelah dikelompokkan pada satu tanda waktu melalui fungsi jendela sebelumnya, seperti TumblingWindow di bawah ini.

Contoh berikut mengembalikan jumlah tweet dengan jenis topik yang sama oleh pengguna yang sama dalam interval 30 menit:

WITH PerInterval AS (
    SELECT Topic, User, COUNT(*)
    FROM TwitterStream TIMESTAMP BY CreatedAt
    GROUP BY Topic, User, TumblingWindow(minute, 30)
)
SELECT * INTO UserTopicsCount FROM PerInterval

Untuk menemukan jumlah pengguna dan total tweet per topik dalam interval yang sama, Anda dapat menggunakan hasil kueri sebelumnya. Karena hasil jendela tumbling semuanya akan memiliki tanda waktu yang selaras dengan batas 30 menit, Anda dapat menggunakan jendela rekam jepret untuk mengembalikan peristiwa di setiap batas karena semuanya memiliki nilai tanda waktu yang sama.

SELECT Topic, Users = COUNT(*), Total = SUM (count)
FROM PerInterval
GROUP BY Topic, System.Timestamp()

Kueri sebelumnya mengembalikan jumlah pengguna dan total tweet per topik dalam interval 30 menit yang sama. Untuk mendapatkan hasil yang sama sekali per 2 jam, tambahkan jendela tumbling 2 jam ke klausa GROUP BY.

Kueri berikut mengembalikan hasil dari keempat interval 30 menit di akhir setiap jendela 2 jam.

SELECT Topic, Users = COUNT(*), Total = SUM (count)
FROM PerInterval
GROUP BY Topic, System.Timestamp(), Tumbling (hour, 2)

Contoh jendela agregat

Anda dapat menggunakan System.Timestamp() sebagai salah satu jendela dalam konstruksi Windows() agregat.

SELECT 
    TollId, 
    COUNT(*) 
FROM Input TIMESTAMP BY EntryTime 
GROUP BY 
    TollId, 
    Windows(
        TumblingWindow(minute, 10),
        TumblingWindow(minute, 20),
        System.Timestamp())