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