Tipe Data (Azure Stream Analytics)
Di Azure Stream Analytics, setiap rekaman memiliki tipe data terkait. Tipe data menggambarkan (dan membatasi) kumpulan nilai yang dapat dipegang oleh rekaman jenis tersebut atau ekspresi dari jenis tersebut.
Harap dicatat bahwa itu adalah catatan yang memiliki jenis dan bukan kolom. Setiap catatan kolom dapat memiliki jenis yang berbeda. Jika ini akan transparan untuk sebagian besar aplikasi, ini memungkinkan penanganan langsung skenario drift skema dan pola pengetikan yang tidak biasa lainnya.
Tipe data yang didukung
Di bawah ini adalah daftar tipe data yang didukung.
| Jenis data | Deskripsi |
|---|---|
| bigint | Bilangan bulat dalam kisaran -2^63 (-9,223,372,036,854,775,808) hingga 2^63-1 (9.223.372.036.854.775.807). |
| float | Angka floating point dalam kisaran - 1.79E + 308 hingga -2.23E-308, 0, dan 2.23E-308 hingga 1.79E + 308. Nilai desimal floating-point umumnya tidak memiliki representasi biner yang tepat. Kehilangan presisi dapat dialami. Ini tidak spesifik untuk Azure Stream Analytics tetapi terjadi di semua implementasi nomor floating-point. |
| nvarchar(maks) | Nilai teks, terdiri dari karakter Unicode. Catatan: Nilai selain maks tidak didukung. |
| datetime | Menentukan tanggal yang dikombinasikan dengan waktu hari dengan detik pecahan (7 digit, presisi 100 nanodetik) yang didasarkan pada jam 24 jam dan relatif terhadap UTC (zona waktu offset 0). |
| bit | Bilangan bulat yang dapat mengambil nilai 1, 0, atau NULL. Ini didukung dalam kompatibilitas level 1.2 ke atas. |
| rekaman | Kumpulan pasangan nama/nilai. Nilai harus dari tipe data yang didukung. |
| array | Koleksi nilai yang dipesan. Nilai harus dari tipe data yang didukung. |
Anda dapat bergabung pada (atau membandingkan) bigint dan tipe data float. Ini akan bekerja dengan benar dalam semua kasus kecuali untuk kasus nilai-nilai bigint yang sangat besar yang tidak dapat diwakili.
Konversi jenis
Berikut adalah aturan yang mengatur konversi tipe data:
- Konversi tanpa kehilangan presisi selama operasi baca dan tulis input bersifat implisit dan selalu berhasil
- Kehilangan presisi dan overflow di dalam operasi tulis output ditangani oleh kebijakan kesalahan yang dikonfigurasi (diatur ke Drop atau Coba lagi)
- Kesalahan konversi tipe yang terjadi selama operasi penulisan output ditangani oleh kebijakan kesalahan
- Ketik kesalahan konversi yang terjadi selama operasi baca input menyebabkan pekerjaan membatalkan acara
Hilangnya presisi dapat terjadi dalam mengubah nilai menjadi mengambang. Ini tidak spesifik untuk Azure Stream Analytics tetapi untuk tipe data float secara umum. Dengan demikian tidak dianggap sebagai kesalahan. Dalam kasus di mana setiap digit perlu dilestarikan, data harus dibaca sebagai string.
Data casting
Ada empat fungsi dalam bahasa SQL streaming yang berguna untuk mengamati dan menyesuaikan jenis data data Anda.
- CAST : cast satu kolom ke jenis tertentu - akan gagal pekerjaan dalam kasus kesalahan konversi
- TRY_CAST : melemparkan satu kolom ke jenis tertentu - kesalahan dibiarkan melalui sebagai NULL. Lihat validasi input untuk cara terbaik menggunakan
TRY_CAST - CREATE TABLE : tentukan satu skema eksplisit ke input. Baris dengan kesalahan konversi dihapus dari aliran
- GetType : mengembalikan jenis kolom
Untuk sebagian besar kasus penggunaan, opsi yang disarankan adalah menggunakan TRY_CAST. Fungsi ini melindungi pemrosesan hilir dengan memastikan jenis output, sekaligus mencegah hilangnya data dengan mengganti nilai kesalahan dengan NULL. Baris tidak dijatuhkan, dan nilai aslinya masih dapat diproyeksikan di kolom lain.
Untuk jaminan yang kuat, opsi yang disarankan adalah menggunakan CREATE TABLE. Pendekatan ini memungkinkan untuk menginformasikan pekerjaan skema input yang diberikan, tanpa risiko penyimpangan. Trade-off adalah bahwa hanya satu skema yang dapat didefinisikan pada input yang diberikan, dan baris yang tidak sesuai akan dijatuhkan.
Jika memungkinkan, semua operasi pengecoran harus dilakukan secara eksplisit melalui fungsi-fungsi ini, bukan secara implisit (diam-diam) dalam fungsi lain. Ini menghindari ketidakcocokan jenis, perilaku tak terduga, dan kesalahan penyisipan untuk output yang diketik dengan kuat seperti database SQL. Lihat validasi input untuk cara melindungi logika kueri utama dari kesalahan tersebut.
Konversi ke bit
Nilai akan dikonversi antara float dan bit dengan aturan berikut:
| Dari | Untuk |
|---|---|
| (BIT) 1 | (MENGAPUNG) 1.0 |
| (BIT) 0 | (MENGAPUNG) 0.0 |
| (BIT) NOL | (MENGAPUNG) NOL |
| (MENGAPUNG) 0.0 | (BIT) 0 |
| (MENGAPUNG) nilai lainnya | (BIT) 1 |
| (MENGAPUNG) NOL | (BIT) NOL |
Ketik pemetaan dan format serialisasi:
| Jenis Data | CSV di | CSV keluar | JSON di | JSON keluar | Avro di | Avro keluar |
|---|---|---|---|---|---|---|
| bigint | string dikonversi menjadi bilangan bulat bertanda tangan 64 bit | Bilangan bulat bertanda tangan 64 bit dikonversi menjadi string menggunakan budaya kerja | angka: bilangan bulat dikonversi menjadi bilangan bulat bertanda tangan 64 bit; Boolean: dalam kompatibilitas level 1.1 dan di bawah "false" diubah menjadi 0, "true" diubah menjadi 1 |
angka: bilangan bulat | panjang dan tidak dikonversi menjadi bilangan bulat bertanda tangan 64 bit; Boolean: dalam kompatibilitas level 1.1 dan di bawah false dikonversi ke 0, true dikonversi ke 1 |
long |
| Float | string dikonversi menjadi nomor titik float yang ditandatangani 64 bit | Nomor floating point bertanda tangan 64 bit dikonversi menjadi string menggunakan budaya kerja | nomor: pecahan dikonversi ke nomor floating point bertanda tangan 64 bit | jumlah: pecahan | double dan float dikonversi menjadi nomor floating point 64 bit yang ditandatangani | double |
| nvarchar(maks) | string | string | string | string | string | string |
| datetime | string dikonversi ke datetime mengikuti standar ISO 8601 | string menggunakan standar ISO 8601 | string dikonversi ke datetime mengikuti standar ISO 8601 | datetime dikonversi ke string menggunakan standar ISO 8601 | string dikonversi ke datetime mengikuti standar ISO 8601 | datetime dikonversi ke string menggunakan standar ISO 8601 |
| bit (tingkat kompatibilitas 1.2 ke atas) | string "true", "false", atau "null" dikonversi menjadi nilai integer 1, 0, atau null sesuai | dikonversi menjadi string "true" atau "false" | Boolean: "false" diubah menjadi 0, "true" diubah menjadi 1 | Boolean: nilai boolean | Boolean: false dikonversi ke 0, true dikonversi menjadi 1 | boolean |
| rekaman | T/A | Tidak didukung, string "Rekam" dikeluarkan | Objek JSON | Objek JSON | Tipe rekaman Avro | Tipe rekaman Avro |
| array | T/A | Tidak didukung, string "Array" dikeluarkan | Objek JSON | Objek JSON | Tipe rekaman Avro | Tipe rekaman Avro |
Catatan
Tidak diperlukan konversi tipe data untuk Parket.
Ketik pemetaan saat menulis ke penyimpanan data terstruktur:
| Jenis Data | SQL | Power BI | DB Dokumen | PostgreSQL |
|---|---|---|---|---|
| bigint | bigint, int, smallint, tinyint, semua jenis string (ntext, nvarchar, char, ...) | ya | numerik: integer | bigint |
| Float | float, real, desimal, numerik, semua jenis string ( ntext, nvarchar, char, ...) | ya | jumlah: pecahan | presisi ganda, numerik. Terbatas pada 1.78E+308 |
| nvarchar(maks) | Semua jenis string (ntext, nvarchar, char, uniqueidentifier...) | ya | string | karakter bervariasi, teks |
| datetime | datetime, datetime2, datetimeoffset, semua jenis string ( ntext, nvarchar, char, ...) | ya | datetime dikonversi ke string menggunakan standar ISO 8601 | stempel waktu, waktu. Opsi zona waktu didukung tetapi tidak ada zona waktu yang akan disediakan |
| bit (tingkat kompatibilitas 1.2 ke atas) | bigint, int, smallint, tinyint, bit, semua jenis string (ntext, nvarchar, char, ...) | ya | boolean: 1 dikonversi menjadi true, 0 dikonversi menjadi false | bit |
| rekaman | Tidak didukung, string "Rekam" dikeluarkan | Tidak didukung, string "Rekam" dikeluarkan | Objek JSON | Tidak didukung |
| array | Tidak didukung, string "Array" dikeluarkan | Tidak didukung, string "Array" dikeluarkan | Objek JSON | Tidak didukung |