Menggunakan data referensi untuk pencarian di Azure Stream Analytics

Data referensi adalah himpunan data terbatas yang statis atau berubah secara perlahan. Ini digunakan untuk melakukan pencarian atau untuk menambah aliran Anda. Data referensi juga dikenal sebagai tabel pencarian.

Mengambil skenario IoT sebagai contoh. Anda dapat menyimpan metadata tentang sensor, yang tidak sering berubah, dalam data referensi. Kemudian Anda bisa menggabungkannya dengan aliran data IoT real-time.

Azure Stream Analytics memuat data referensi di memori untuk mencapai pemrosesan aliran latensi-rendah. Untuk menggunakan data referensi di pekerjaan Azure Stream Analytics, Anda umumnya akan menggunakan gabungan data referensi di kueri Anda.

Contoh

Anda dapat memiliki aliran peristiwa real time yang dihasilkan ketika mobil melewati pintu tol. Pintu tol dapat menangkap pelat nomor secara real time. Data tersebut dapat digabungkan dengan himpunan data statis yang memiliki rincian pendaftaran untuk mengidentifikasi pelat nomor yang telah kedaluwarsa.

SELECT I1.EntryTime, I1.LicensePlate, I1.TollId, R.RegistrationId  
FROM Input1 I1 TIMESTAMP BY EntryTime  
JOIN Registration R  
ON I1.LicensePlate = R.LicensePlate  
WHERE R.Expired = '1'

Azure Stream Analytics mendukung Azure Blob Storage, Azure Data Lake Storage Gen2, dan Azure SQL Database sebagai lapisan penyimpanan untuk data referensi. Jika Anda memiliki data referensi di penyimpanan data lain, coba gunakan Azure Data Factory untuk mengekstrak, mengubah, dan memuat data ke salah satu penyimpanan data yang didukung. Untuk informasi selengkapnya, lihat Salin Aktivitas di gambaran umum Azure Data Factory.

Azure Blob Storage atau Azure Data Lake Storage Gen 2

Data referensi dimodelkan sebagai urutan blob dalam urutan naik dari tanggal/waktu yang ditentukan dalam nama blob. Blob dapat ditambahkan ke akhir urutan dengan menggunakan tanggal/waktu yang lebih besar dari yang ditentukan oleh blob terakhir dalam urutan tersebut. Blob didefinisikan dalam konfigurasi input.

Untuk informasi selengkapnya, lihat Menggunakan data referensi dari Blob Storage untuk pekerjaan Azure Stream Analytics.

Konfigurasikan data referensi blob

Untuk mengonfigurasi data referensi Anda, pertama-tama Anda perlu membuat input yang berdasarkan jenis data referensi. Tabel di bawah ini menjelaskan setiap properti yang perlu Anda sediakan saat membuat input data referensi dengan deskripsinya.

Nama properti Deskripsi
Alias input Nama yang mudah diingat yang akan digunakan dalam kueri pekerjaan untuk mereferensikan input ini.
Akun Penyimpanan Nama akun penyimpanan tempat blob Anda berada. Jika langganan berada dalam langganan yang sama dengan pekerjaan Azure Stream Analytics, Anda dapat memilihnya dari daftar drop-down.
Kunci akun penyimpanan Kunci rahasia yang terkait dengan akun penyimpanan. Kunci ini akan diisi secara otomatis jika akun penyimpanan berada dalam langganan yang sama dengan pekerjaan Azure Stream Analytics Anda.
Wadah penyimpanan Kontainer menyediakan pengelompokan logis untuk blob yang disimpan dalam Azure Blob Storage. Ketika Anda mengunggah blob ke Azure Blob Storage, Anda harus menentukan kontainer untuk blob itu.
Pola Jalur Properti yang diperlukan ini digunakan untuk menemukan blob Anda dalam kontainer yang ditentukan. Dalam jalur tersebut, Anda dapat memilih untuk menentukan satu atau lebih contoh dari variabe {tanggal} dan {waktu}.
Contoh 1: products/{date}/{time}/product-list.csv
Contoh 2: products/{date}/product-list.csv
Contoh 3: product-list.csv

Jika blob tidak ada di jalur yang ditentukan, pekerjaan Azure Stream Analytics akan menunggu tanpa batas waktu hingga blob tersedia.
Format tanggal [opsional] Jika Anda telah menggunakan {tanggal} dalam pola jalur yang Anda tentukan, pilih format tanggal tempat blob Anda diatur dari format drop-down yang didukung.
Contoh: YYYY/MM/DD atau MM/DD/YYYY
Format waktu [opsional] Jika Anda menggunakan {time} dalam pola jalur yang Anda tentukan, pilih format waktu di mana blob Anda diatur dari daftar drop-down format yang didukung.
Contoh: HH, HH/mm, atau HH-mm
Format serialisasi peristiwa Untuk memastikan bahwa kueri berfungsi sesuai harapan, Analisis Aliran perlu mengetahui format serialisasi yang Anda gunakan untuk aliran data yang masuk. Untuk data referensi, format yang didukung adalah CSV dan JSON.
Pengodean UTF-8 adalah satu-satunya format pengodean yang didukung saat ini.

Data referensi statis

Data referensi Anda mungkin tidak diharapkan berubah. Untuk mengaktifkan dukungan untuk data referensi statis, tentukan jalur statis dalam konfigurasi input.

Azure Stream Analytics mengambil blob dari jalur yang ditentukan. Token substitusi {tanggal} dan {waktu} tidak diperlukan. Karena data referensi tidak dapat diubah di Azure Stream Analytics, tidak disarankan untuk mengganti blob data referensi statis.

Membuat data referensi sesuai jadwal

Data referensi Anda mungkin merupakan himpunan data yang berubah secara perlahan. Untuk menyegarkan data referensi, tentukan pola jalur dalam konfigurasi input dengan menggunakan token substitusi {tanggal} dan {waktu}. Analisis Aliran mengambil definisi data referensi terbaru berdasarkan pola jalur ini.

Misalnya, pola sample/{date}/{time}/products.csv dengan format tanggal "YYYY-MM-DD" dan format waktu "HH-mm" menginstruksikan Azure Stream Analytics untuk mengambil blob yang diperbarui sample/2015-04-16/17-30/products.csv pada pukul 17:30 zona waktu UTC 16 April 2015.

Azure Stream Analytics secara otomatis memindai blob data referensi yang di-refresh pada interval satu menit. Blob dengan stempel waktu 10:30:00 mungkin diunggah dengan sedikit penundaan, misalnya, 10:30:30. Anda melihat penundaan kecil dalam pekerjaan Azure Stream Analytics yang merujuk pada blob ini.

Untuk menghindari skenario seperti itu, unggah blob lebih awal dari target waktu efektif, yaitu 10:30:00 dalam contoh ini. Pekerjaan Azure Stream Analytics sekarang memiliki cukup waktu untuk menemukan dan memuat blob dalam memori dan melakukan operasi.

Catatan

Saat ini pekerjaan Azure Stream Analytics mencari refresh blob hanya ketika waktu mesin maju ke waktu yang dikodekan dalam nama blob. Misalnya, pekerjaan mencari sample/2015-04-16/17-30/products.csv secepat mungkin tetapi tidak lebih awal dari 16 April 2015, jam 17:30 zona waktu UTC. Pekerjaan tidak akan pernah mencari blob dengan kode waktu yang lebih awal dari blob terakhir yang ditemukan.

Misalnya, setelah pekerjaan menemukan blob sample/2015-04-16/17-30/products.csv, pekerjaan akan mengabaikan file apa pun dengan tanggal yang dikodekan lebih awal dari 16 April 2015, pukul 17:30. Jika blob yang datang terlambat sample/2015-04-16/17-25/products.csv dibuat dalam kontainer yang sama, pekerjaan tidak akan menggunakannya.

Dalam contoh lain, sample/2015-04-16/17-30/products.csv hanya diproduksi pada tanggal 16 April 2015, pukul 10:03 PM, tetapi tidak ada blob dengan tanggal sebelumnya yang ada dalam kontainer. Kemudian pekerjaan menggunakan file ini mulai tanggal 16 April 2015, pukul 10:03 dan menggunakan data referensi sebelumnya hingga saat itu.

Pengecualian pada perilaku ini adalah saat pekerjaan perlu memproses ulang data kembali ke waktu atau saat pekerjaan pertama kali dimulai.

Pada waktu pertama mulai, pekerjaan mencari blob terbaru yang diproduksi sebelum waktu mulai pekerjaan ditentukan. Perilaku ini memastikan ada himpunan data referensi yang tidak-kosong saat pekerjaan dimulai. Jika tidak ada data yang ditemukan, pekerjaan menampilkan diagnostik berikut: Initializing input without a valid reference data blob for UTC time <start time>.

Saat himpunan data referensi disegarkan, log diagnostik dihasilkan: Loaded new reference data from <blob path>. Karena berbagai alasan, pekerjaan mungkin perlu memuat ulang himpunan data referensi sebelumnya. Paling sering, alasannya adalah untuk memproses ulang data masa lalu. Log diagnostik yang sama dihasilkan pada saat itu. Tindakan ini tidak menyiratkan bahwa data aliran saat ini menggunakan data referensi sebelumnya.

Azure Data Factory dapat digunakan untuk mengatur tugas pembuatan blob yang diperbarui yang diperlukan oleh Analisis Aliran untuk memperbarui definisi data referensi.

Data Factory adalah layanan integrasi data berbasis awan yang mengatur dan mengotomatiskan pergerakan dan transformasi data. Data Factory mendukung menyambungkan ke sejumlah besar penyimpanan data berbasis cloud dan lokal. Data Factory dapat memindahkan data dengan mudah pada jadwal reguler yang Anda tentukan.

Untuk informasi selengkapnya tentang cara menyiapkan alur Data Factory untuk menghasilkan data referensi Analisis Aliran yang di-refresh pada jadwal yang telah ditentukan sebelumnya, lihat sampel GitHub ini.

Tips me-refresh data referensi blob

  • Jangan mengganti blob data referensi karena blob ini tidak dapat diubah.
  • Cara yang disarankan untuk menyegarkan data referensi adalah dengan:
    • Menggunakan {tanggal}/{waktu} dengan pola jalur.
    • Menambahkan blob baru menggunakan kontainer dan pola jalur yang sama yang ditentukan dalam input pekerjaan.
    • Gunakan tanggal/waktu yang lebih besar dari yang ditentukan oleh blob terakhir dalam urutan.
  • Blob data referensi tidak* diurutkan berdasarkan waktu Modifikasi Terakhir blob. Mereka hanya diurutkan berdasarkan tanggal dan waktu yang ditentukan dalam nama blob menggunakan substitusi {tanggal} dan {waktu}.
  • Untuk menghindari keharusan membuat daftar blob dalam jumlah besar, hapus blob lama yang pemrosesannya tidak akan lagi dilakukan. Azure Stream Analytics mungkin harus memproses ulang dalam jumlah kecil dalam beberapa skenario seperti menghidupkan ulang.

Database Azure SQL

Pekerjaan Azure Stream Analytics Anda mengambil data referensi SQL Database dan menyimpannya sebagai snapshot dalam memori untuk diproses. Snapshot data referensi Anda juga disimpan dalam kontainer di akun penyimpanan. Anda menentukan akun penyimpanan di pengaturan konfigurasi.

Kontainer dibuat secara otomatis saat pekerjaan dimulai. Jika pekerjaan berhenti atau memasuki status gagal, kontainer yang dibuat otomatis akan dihapus saat pekerjaan dimulai ulang.

Jika data referensi Anda adalah himpunan data yang berubah secara perlahan, Anda perlu me-refresh snapshot yang digunakan dalam pekerjaan Anda secara berkala.

Dengan Analisis Aliran, Anda dapat mengatur laju refresh saat mengonfigurasi koneksi input Azure SQL Database. Runtime Analisis Aliran akan melakukan kueri instans SQL Database Anda pada interval yang ditentukan oleh laju refresh. Laju refresh tercepat yang didukung adalah sekali per menit. Untuk setiap refresh, Analisis Aliran menyimpan rekam jepret baru di akun penyimpanan yang disediakan.

Azure Stream Analytics menyediakan dua opsi untuk melakukan kueri instans SQL Database Anda. Kueri rekam jepret bersifat wajib dan harus disertakan dalam setiap pekerjaan. Azure Stream Analytics menjalankan kueri snapshot secara periodik berdasarkan interval refresh. Stream Analytics Ini menggunakan hasil kueri (snapshot) sebagai himpunan data referensi.

Kueri snapshot harus sesuai dengan sebagian besar skenario. Jika Anda menjalankan ke dalam masalah performa dengan himpunan data yang besar dan tingkat refresh yang cepat, gunakan opsi kueri delta. Kueri yang membutuhkan waktu lebih dari 60 detik untuk mengembalikan himpunan data referensi akan menghasilkan waktu tunggu.

Dengan opsi kueri delta, Azure Stream Analytics menjalankan kueri snapshot pada awalnya untuk mendapatkan himpunan data referensi dasar. Setelah itu, Azure Stream Analytics menjalankan kueri delta secara berkala berdasarkan interval refresh Anda untuk mengambil perubahan tambahan. Perubahan tambahan ini terus diterapkan pada himpunan data referensi agar terus diperbarui. Menggunakan opsi kueri delta dapat membantu mengurangi biaya penyimpanan dan operasi I/O jaringan.

Mengonfigurasi data referensi SQL Database

Untuk mengonfigurasi data referensi SQL Database Anda, pertama-tama Anda perlu membuat input data referensi. Tabel di bawah ini menjelaskan setiap properti yang perlu Anda sediakan saat membuat input data referensi dengan deskripsinya. Untuk informasi selengkapnya, lihat Menggunakan data referensi dari SQL Database untuk pekerjaan Azure Stream Analytics.

Anda dapat menggunakan Azure SQL Managed Instance sebagai input data referensi. Anda harus mengonfigurasi titik akhir publik dalam Azure SQL Managed Instance. Kemudian Anda mengonfigurasi pengaturan berikut secara manual di Azure Stream Analytics. Komputer virtual Azure yang menjalankan SQL Server dengan database terlampir juga didukung dengan mengonfigurasi pengaturan secara manual.

Nama properti Deskripsi
Alias input Nama yang mudah diingat yang akan digunakan dalam kueri pekerjaan untuk mereferensikan input ini.
Langganan Langganan Anda.
Database Instans SQL Database yang berisi data referensi Anda. Untuk SQL Managed Instance, Anda harus menentukan port 3342. Contohnya sampleserver.public.database.windows.net,3342.
Nama Pengguna Nama pengguna yang dikaitkan dengan instans SQL Database Anda.
Kata sandi Kata sandi yang dikaitkan dengan instans SQL Database Anda.
Refresh secara berkala Opsi ini memungkinkan Anda memilih laju refresh. Pilih Aktif untuk menentukan kecepatan refresh di DD:HH:MM.
Kueri rekam jepret Opsi kueri default ini mengambil data referensi dari instans SQL Database Anda.
Kueri delta Untuk skenario tingkat lanjut dengan himpunan data besar dan laju refresh singkat, tambahkan kueri delta.

Batasan ukuran

Menggunakan himpunan data referensi yang kurang dari 300 MB untuk performa terbaik. Himpunan data referensi 5 GB atau lebih rendah didukung dalam pekerjaan dengan enam unit streaming atau lebih. Menggunakan himpunan data referensi besar dapat memengaruhi latensi end-to-end pekerjaan Anda.

Kompleksitas kueri dapat meningkat untuk menyertakan pemrosesan stateful seperti agregat berjendela, gabungan temporal, dan fungsi analitik temporal. Ketika kompleksitas meningkat, ukuran maksimum data referensi yang didukung menurun.

Jika Azure Stream Analytics tidak dapat memuat data referensi dan melakukan operasi yang kompleks, pekerjaan akan kehabisan memori dan gagal. Dalam kasus seperti itu, metrik pemanfaatan persentase unit streaming mencapai 100%.

Jumlah Unit Streaming Ukuran yang Direkomendasikan
1 50 MB atau lebih rendah
3 150 MB atau lebih rendah
6 dan lebih tinggi 5 GB atau lebih rendah

Dukungan untuk kompresi tidak tersedia untuk data referensi. Untuk himpunan data referensi yang lebih besar dari 300 MB, gunakan Azure SQL Database sebagai sumber dengan opsi kueri delta untuk performa yang optimal. Jika opsi kueri delta tidak digunakan dalam skenario seperti itu, Anda akan melihat lonjakan metrik penundaan marka air setiap kali himpunan data referensi di-refresh.

Menggabungkan beberapa himpunan data referensi dalam satu pekerjaan

Anda hanya dapat menggabungkan input data referensi ke input streaming. Jadi untuk menggabungkan beberapa himpunan data referensi, bagi kueri Anda menjadi beberapa langkah. Berikut contohnya:

With Step1 as (
    --JOIN input stream with reference data to get 'Desc'
    SELECT streamInput.*, refData1.Desc as Desc
    FROM    streamInput
    JOIN    refData1 ON refData1.key = streamInput.key 
)
--Now Join Step1 with second reference data
SELECT *
INTO    output 
FROM    Step1
JOIN    refData2 ON refData2.Desc = Step1.Desc 

Pekerjaan IoT Edge

Hanya data referensi lokal yang didukung untuk pekerjaan tepi Analisis Aliran. Ketika satu pekerjaan disebarkan ke perangkat IoT Edge, pekerjaan tersebut memuat data referensi dari jalur file yang ditentukan-pengguna. Siapkan file data referensi di perangkat.

Untuk kontainer Windows, letakkan file data referensi pada drive lokal dan bagikan drive lokal dengan kontainer Docker. Untuk kontainer Linux, buat volume Docker dan isi file data ke volume.

Data referensi pada pembaruan IoT Edge dipicu oleh penyebaran. Setelah dipicu, modul Azure Stream Analytics memilih data yang diperbarui tanpa menghentikan pekerjaan yang sedang berjalan.

Anda dapat memperbarui data referensi dengan dua cara:

  • Perbarui jalur data referensi di pekerjaan Azure Stream Analytics dari portal Microsoft Azure.
  • Perbarui penyebaran IoT Edge.

Langkah berikutnya