Bagikan melalui


Jenis Data (Azure Stream Analytics)

Di Azure Stream Analytics, setiap rekaman memiliki jenis data terkait. Jenis data menjelaskan (dan membatasi) kumpulan nilai yang dapat ditahan oleh rekaman jenis tersebut atau ekspresi jenis tersebut.

Harap dicatat bahwa itu adalah rekaman yang memiliki jenis dan bukan kolom. Setiap rekaman kolom bisa memiliki jenis yang berbeda. Jika ini akan transparan untuk sebagian besar aplikasi, ini memungkinkan penanganan langsung skenario penyimpangan skema dan pola pengetikan lain yang tidak biasa.

Tipe data yang didukung

Di bawah ini adalah daftar jenis data yang didukung.

Jenis data Deskripsi
bigint Bilangan bulat dalam rentang -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 rentang - 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 khusus untuk Azure Stream Analytics tetapi terjadi di semua implementasi angka floating-point.
nvarchar(maks) Nilai teks, terdiri dari karakter Unicode. Catatan: Nilai selain maks tidak didukung.
tanggalwaktu 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 (offset zona waktu 0).
bit Bilangan bulat yang dapat mengambil nilai 1, 0, atau NULL. Ini didukung dalam tingkat kompatibilitas 1.2 ke atas.
rekaman Kumpulan pasangan nama/nilai. Nilai harus dari jenis data yang didukung.
array Kumpulan nilai yang diurutkan. Nilai harus dari jenis data yang didukung.

Anda dapat bergabung pada (atau membandingkan) jenis data bigint dan float. Ini akan bekerja dengan benar dalam semua kasus kecuali untuk kasus nilai besar yang sangat besar yang tidak dapat diwakili.

Catatan

Saat membaca jenis data bigint di luar rentang, Azure Stream Analytics mendukung, pekerjaan Azure Stream Analytics Anda akan gagal mendeserialisasi peristiwa dengan pesan kesalahan: InputDeserializationError. Anda dapat memproses data terlebih dahulu dan mengonversinya menjadi string. Salah satu opsinya adalah menggunakan fungsi Azure untuk memproses data terlebih dahulu dan mengonversi bilangan bulat besar tersebut menjadi string.

Konversi jenis

Ini adalah aturan yang mengatur konversi jenis data:

  • Konversi tanpa kehilangan presisi selama operasi baca input dan tulis output bersifat implisit dan selalu berhasil
  • Kehilangan presisi dan luapan di dalam operasi penulisan output ditangani oleh kebijakan kesalahan yang dikonfigurasi (diatur ke Hilangkan atau Coba Lagi)
  • Kesalahan konversi jenis yang terjadi selama operasi tulis output ditangani oleh kebijakan kesalahan
  • Kesalahan konversi jenis yang terjadi selama operasi baca input menyebabkan pekerjaan menghilangkan peristiwa

Hilangnya presisi dapat terjadi dalam mengonversi nilai menjadi float. Ini tidak khusus untuk Azure Stream Analytics tetapi untuk jenis data float secara umum. Dengan demikian tidak dianggap sebagai kesalahan. Dalam kasus di mana setiap digit perlu dilestarikan, data harus dibaca sebagai string.

Data transmisi

Ada empat fungsi dalam bahasa SQL streaming yang berguna untuk mengamati dan menyesuaikan jenis data data Anda.

  • CAST : mentransmisikan satu kolom ke jenis tertentu - akan gagal dalam kasus kesalahan konversi
  • TRY_CAST : transmisikan satu kolom ke jenis tertentu - kesalahan dibiarkan 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 dalam kesalahan oleh NULL. Baris tidak dihilangkan, dan nilai asli tersebut 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 tertentu, tanpa risiko penyimpangan. Trade-off adalah bahwa hanya satu skema yang dapat didefinisikan pada input tertentu, dan baris yang tidak sesuai akan dihilangkan.

Jika memungkinkan, semua operasi transmisi harus dilakukan secara eksplisit melalui fungsi-fungsi ini, daripada secara implisit (diam-diam) dalam fungsi lain. Ini menghindari ketidakcocokan jenis, perilaku tak terduga, dan kesalahan penyisipan untuk output yang sangat diketik 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 (FLOAT) 1.0
(BIT) 0 (FLOAT) 0,0
(BIT) NULL (FLOAT) NULL
(FLOAT) 0,0 (BIT) 0
(FLOAT) nilai lainnya (BIT) 1
(FLOAT) NULL (BIT) NULL

Jenis 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 64 bit Bilangan bulat bertanda tangan 64 bit dikonversi ke string menggunakan budaya pekerjaan angka: bilangan bulat dikonversi menjadi bilangan bulat bertanda 64 bit;

Boolean: dalam tingkat kompatibilitas 1.1 dan di bawah "false" dikonversi ke 0, "true" dikonversi menjadi 1
angka: bilangan bulat panjang dan int dikonversi menjadi bilangan bulat bertanda 64 bit;

Boolean: dalam tingkat kompatibilitas 1.1 dan di bawah false dikonversi ke 0, true dikonversi ke 1
long
Float string dikonversi menjadi angka titik float bertanda tangan 64 bit Nomor float point bertanda tangan 64 bit dikonversi ke string menggunakan kultur pekerjaan number: pecahan dikonversi ke angka float point bertanda tangan 64 bit angka: pecahan ganda dan float dikonversi ke angka float point bertanda tangan 64 bit 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 ke nilai bilangan bulat 1, 0, atau null yang sesuai dikonversi ke string "true" atau "false" Boolean: "false" dikonversi ke 0, "true" dikonversi ke 1 Boolean: nilai boolean Boolean: false dikonversi ke 0, true dikonversi ke 1 boolean
record T/A Tidak didukung, string "Rekam" dihasilkan Objek JSON Objek JSON Jenis catatan Avro Jenis catatan Avro
array T/A Tidak didukung, string "Array" dihasilkan Objek JSON Objek JSON Jenis catatan Avro Jenis catatan Avro

Catatan

Tidak diperlukan konversi jenis data untuk Parquet.

Ketik pemetaan saat menulis ke penyimpanan data terstruktur

Jenis Data SQL Power BI Azure Cosmos DB PostgreSQL Azure Data Explorer
bigint bigint, int, smallint, tinyint, semua jenis string (ntext, nvarchar, char, ...) ya numerik: bilangan bulat bigint dinamis, int, panjang
Float float, nyata, desimal, numerik, semua jenis string ( ntext, nvarchar, char, ...) ya angka: pecahan presisi ganda, numerik. Terbatas pada 1.78E+308 dinamis, nyata, ganda
nvarchar(maks) Semua jenis string (ntext, nvarchar, char, uniqueidentifier...) ya string karakter bervariasi, teks dinamis, string
datetime datetime, datetime2, datetimeoffset, semua jenis string ( ntext, nvarchar, char, ...) ya datetime dikonversi ke string menggunakan standar ISO 8601 tanda waktu, waktu. Opsi zona waktu didukung tetapi tidak ada zona waktu yang akan disediakan dinamis, string, tanggalwaktu
bit (tingkat kompatibilitas 1.2 ke atas) bigint, int, smallint, tinyint, bit, semua jenis string (ntext, nvarchar, char, ...) ya boolean: 1 dikonversi ke true, 0 dikonversi ke false bit dinamis, bool
record Tidak didukung, string "Rekam" dihasilkan Tidak didukung, string "Rekam" dihasilkan Objek JSON Tidak didukung dinamis, bool, panjang, tanggalwaktu, byte array, nyata, ganda, string
array Tidak didukung, string "Array" dihasilkan Tidak didukung, string "Array" dihasilkan Objek JSON Tidak didukung dinamis, string