Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 |