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.
Akselerasi kueri mendukung bahasa seperti ANSI SQL untuk mengekspresikan kueri melalui konten blob. Dialek SQL untuk akselerasi kueri adalah subset ANSI SQL, dengan sekumpulan terbatas jenis data yang didukung, operator, dll., tetapi juga memperluas ANSI SQL untuk mendukung kueri terhadap format data semi terstruktur yang bersifat hierarkis seperti JSON.
Sintaks SELECT
Satu-satunya pernyataan SQL yang didukung oleh akselerasi kueri adalah pernyataan SELECT. Contoh ini mengembalikan setiap baris di mana ekspresinya menghasilkan benar.
SELECT * FROM table [WHERE expression] [LIMIT limit]
Untuk data berformat CSV, tabel harus BlobStorage. Ini berarti bahwa kueri akan dijalankan terhadap blob mana pun yang ditentukan dalam panggilan REST. Untuk data berformat JSON, tabel adalah "deskriptor tabel." Lihat bagian Deskriptor Tabel di artikel ini.
Dalam contoh berikut, untuk setiap baris yang memenuhi kondisi di mana ekspresi WHERE bernilai true, pernyataan ini akan mengembalikan baris baru yang dihasilkan dari evaluasi masing-masing ekspresi proyeksi.
SELECT expression [, expression ...] FROM table [WHERE expression] [LIMIT limit]
Anda dapat menentukan satu atau beberapa kolom tertentu sebagai bagian dari ekspresi SELECT (misalnya, SELECT Title, Author, ISBN).
Nota
Jumlah maksimum kolom tertentu yang bisa Anda gunakan dalam ekspresi SELECT adalah 49. Jika Anda memerlukan pernyataan SELECT untuk mengembalikan lebih dari 49 kolom, gunakan karakter kartubebas (*) untuk ekspresi SELECT (Misalnya: SELECT *).
Contoh berikut mengembalikan komputasi agregat (Misalnya: nilai rata-rata kolom tertentu) di setiap baris yang ekspresinya mengembalikan true.
SELECT aggregate_expression FROM table [WHERE expression] [LIMIT limit]
Contoh berikut mengembalikan offset yang sesuai untuk memisahkan blob berformat CSV. Lihat bagian Sys.Split di artikel ini.
SELECT sys.split(split_size)FROM BlobStorage
Tipe Data
| Jenis Data | Deskripsi |
|---|---|
| INT | Bilangan bulat bertanda 64-bit. |
| Mengapung | Titik mengambang 64-bit ("presisi ganda"). |
| TALI | String Unicode dengan panjang variabel. |
| TIMESTAMP | Suatu titik waktu. |
| Boolean | Benar atau salah. |
Saat membaca nilai dari data berformat CSV, semua nilai dibaca sebagai string. Nilai string dapat dikonversi ke jenis lain menggunakan ekspresi CAST. Nilai mungkin secara implisit dilemparkan ke jenis lain tergantung pada konteks. Untuk informasi selengkapnya, lihat Prioritas jenis data (Transact-SQL).
Ekspresi
Mereferensikan bidang
Untuk data berformat JSON, atau data berformat CSV dengan baris header, bidang dapat dirujuk berdasarkan nama. Nama bidang dapat dikutip atau tidak dikutip. Nama bidang yang dikutip diapit dalam karakter tanda kutip ganda ("), mungkin berisi spasi, dan membedakan huruf besar/kecil. Nama bidang yang tidak dikutip tidak peka huruf besar/kecil, dan mungkin tidak berisi karakter khusus apa pun.
Dalam data berformat CSV, bidang juga dapat direferensikan oleh ordinal, diawali dengan karakter garis bawah (_). Misalnya, bidang pertama dapat dirujuk sebagai _1, atau bidang kesebelas dapat dirujuk sebagai _11. Mereferensikan bidang menurut ordinal berguna untuk data berformat CSV yang tidak berisi baris header, dalam hal ini satu-satunya cara untuk mereferensikan bidang tertentu adalah dengan ordinal.
Para Operator
Operator SQL standar berikut didukung:
| Pengoperasi | Deskripsi |
|---|---|
= |
Membandingkan kesetaraan dua ekspresi (operator perbandingan). |
!= |
Menguji apakah satu ekspresi tidak sama dengan ekspresi lain (operator perbandingan). |
<> |
Membandingkan dua ekspresi agar tidak sama dengan (operator perbandingan). |
< |
Membandingkan dua ekspresi untuk kurang dari (operator perbandingan). |
<= |
Membandingkan dua pernyataan apakah kurang dari atau sama dengan (sebagai operator perbandingan). |
> |
Membandingkan dua ekspresi untuk lebih besar dari (operator perbandingan). |
>= |
Membandingkan dua ekspresi untuk lebih besar dari atau sama dengan (operator perbandingan). |
+ |
Menambahkan dua angka. Operator aritmatika tambahan ini juga dapat menambahkan angka, dalam hari, ke tanggal. |
- |
Mengurangi dua angka (operator pengurangan aritmatika). |
/ |
Membagi satu angka dengan angka lainnya (operator divisi aritmatika). |
* |
Mengalikan dua ekspresi (operator perkalian aritmatika). |
% |
Mengembalikan sisa satu angka yang dibagi dengan angka lainnya. |
AND |
Melakukan operasi AND logis bitwise antara dua nilai bilangan bulat. |
OR |
Melakukan operasi OR logis bitwise antara dua nilai bilangan bulat tertentu seperti yang diterjemahkan ke ekspresi biner dalam pernyataan Transact-SQL. |
NOT |
Negasikan input Boolean. |
CAST |
Mengonversi ekspresi satu jenis data ke jenis data lainnya. |
BETWEEN |
Menentukan rentang yang akan diuji. |
IN |
Menentukan apakah nilai yang ditentukan cocok dengan nilai apa pun dalam subkueri atau daftar. |
NULLIF |
Mengembalikan nilai null jika dua ekspresi yang ditentukan sama. |
COALESCE |
Mengevaluasi argumen secara berurutan dan mengembalikan nilai ekspresi pertama saat ini yang awalnya tidak dievaluasi ke NULL. |
Jika jenis data di sebelah kiri dan kanan operator berbeda, konversi otomatis akan dilakukan sesuai dengan aturan yang ditentukan di sini: Prioritas jenis data (Transact-SQL).
Bahasa SQL akselerasi kueri hanya mendukung subset yang sangat kecil dari jenis data yang dibahas dalam artikel tersebut. Lihat bagian Tipe Data di artikel ini.
Pemeran
Bahasa SQL akselerasi kueri mendukung operator CAST, sesuai dengan aturan di sini: Konversi jenis data (Mesin Database).
Bahasa SQL akselerasi kueri hanya mendukung subset kecil dari jenis data yang dibahas dalam artikel tersebut. Lihat bagian Tipe Data di artikel ini.
Fungsi string
Bahasa SQL akselerasi kueri mendukung fungsi string SQL standar berikut:
| Fungsi | Deskripsi |
|---|---|
| CHAR_LENGTH | Mengembalikan panjang dalam karakter dari ekspresi teks, jika ekspresi tersebut adalah jenis data teks; sebaliknya, mengembalikan panjang dalam byte dari ekspresi teks (bilangan bulat terkecil yang tidak kurang dari jumlah bit dibagi dengan 8). (Fungsi ini sama dengan fungsi CHARACTER_LENGTH.) |
| PANJANG_KARAKTER | Mengembalikan panjang dalam karakter dari ekspresi teks, jika ekspresi tersebut adalah jenis data teks; sebaliknya, mengembalikan panjang dalam byte dari ekspresi teks (bilangan bulat terkecil yang tidak kurang dari jumlah bit dibagi dengan 8). (Fungsi ini sama dengan fungsi CHAR_LENGTH |
| KECIL | Mengembalikan ekspresi karakter setelah mengonversi data karakter huruf besar menjadi huruf kecil. |
| ATAS | Mengembalikan ekspresi karakter dengan data karakter huruf kecil yang dikonversi menjadi huruf besar. |
| Substring | Mengembalikan bagian dari ekspresi karakter, biner, teks, atau gambar di SQL Server. |
| TRIM | Menghapus karakter spasi(32) atau karakter tertentu lainnya dari awal dan akhir string. |
| Terkemuka | Menghapus karakter spasi(32) atau karakter tertentu lainnya dari awal string. |
| Tertinggal | Menghapus karakter spasi(32) atau karakter tertentu lainnya dari akhir string. |
Berikut adalah beberapa contoh:
| Fungsi | Contoh | Hasil |
|---|---|---|
| PANJANG_KARAKTER | SELECT CHARACTER_LENGTH('abcdefg') from BlobStorage |
7 |
| CHAR_LENGTH | SELECT CHAR_LENGTH(_1) from BlobStorage |
1 |
| RENDAH | SELECT LOWER('AbCdEfG') from BlobStorage |
abcdefg |
| ATAS | SELECT UPPER('AbCdEfG') from BlobStorage |
ABCDEFG |
| substring | SUBSTRING('123456789', 1, 5) |
23456 |
| TRIM | TRIM(BOTH '123' FROM '1112211Microsoft22211122') |
Microsoft |
Fungsi tanggal
Fungsi tanggal SQL standar berikut didukung:
DATE_ADDDATE_DIFFEXTRACTTO_STRINGTO_TIMESTAMP
Saat ini, semua format tanggal standar ISO8601 dikonversi.
fungsi DATE_ADD
Bahasa SQL akselerasi kueri mendukung tahun, bulan, hari, jam, menit, dan detik untuk fungsi DATE_ADD.
Contoh:
DATE_ADD(datepart, quantity, timestamp)
DATE_ADD('minute', 1, CAST('2017-01-02T03:04:05.006Z' AS TIMESTAMP)
fungsi DATE_DIFF
Bahasa SQL akselerasi kueri mendukung tahun, bulan, hari, jam, menit, dan detik untuk fungsi DATE_DIFF.
DATE_DIFF(datepart, timestamp, timestamp)
DATE_DIFF('hour','2018-11-09T00:00+05:30','2018-11-09T01:00:23-08:00')
Fungsi EXTRACT
Untuk EXTRACT bagian selain tanggal yang biasa didukung oleh fungsi DATE_ADD, bahasa SQL untuk akselerasi kueri kini juga mendukung bagian tanggal timezone_hour dan timezone_minute.
Contoh:
EXTRACT(datepart FROM timestampstring)
EXTRACT(YEAR FROM '2010-01-01T')
Fungsi TO_STRING
Contoh:
TO_STRING(TimeStamp , format)
TO_STRING(CAST('1969-07-20T20:18Z' AS TIMESTAMP), 'MMMM d, y')
Tabel ini menjelaskan string yang dapat Anda gunakan untuk menentukan format TO_STRING output fungsi.
| Format string | Keluaran |
|---|---|
| Yy | Tahun dalam format 2 digit - 1999 sebagai '99' |
| y | Tahun dalam format 4 digit |
| yyyy | Tahun dalam format 4 digit |
| M | Bulan dalam setahun - 1 |
| MM (milimeter) | Bulan Berlapis Nol - 01 |
| MMM | Bulan yang disingkat Tahun Ini - JAN |
| MMMM | Bulan penuh - Mei |
| d | Hari dalam sebulan (1-31) |
| Dd | Hari dengan isian nol dalam bulan (01-31) |
| sebuah | AM atau PM |
| h | Jam dalam sehari (1-12) |
| Hh | Jam Berlapis nol dalam sehari (01-12) |
| H | Jam dalam sehari (0-23) |
| HH | Zero Padded jam dalam sehari (00-23) |
| m | Menit dalam satu jam (0-59) |
| Mm | Nol menit berlapis (00-59) |
| s | Detik ke dalam menit (0-59) |
| Ss | Detik dengan angka nol di depan (00-59) |
| S | Pecahan detik (0,1-0,9) |
| SS | Pecahan detik (0,01-0,99) |
| SSS | Pecahan detik (0,001-0,999) |
| X | Perbedaan waktu dalam jam |
| XX atau XXXX | Offset dalam jam dan menit (+0430) |
| XXX atau XXXXX | Offset dalam jam dan menit (-07:00) |
| x | Selisih waktu dalam jam (7) |
| xx atau xxxx | Perbedaan waktu dalam jam dan menit (+0530) |
| Xxx atau xxxxx | Offset dalam jam dan menit (+05:30) |
Fungsi TO_TIMESTAMP
Hanya format IS08601 yang didukung.
Contoh:
TO_TIMESTAMP(string)
TO_TIMESTAMP('2007T')
Nota
Anda juga dapat menggunakan UTCNOW fungsi untuk mendapatkan waktu sistem.
Ekspresi Agregat
Pernyataan SELECT mungkin berisi satu atau beberapa ekspresi proyeksi atau ekspresi agregat tunggal. Ekspresi agregat berikut ini didukung:
| Ekspresi | Deskripsi |
|---|---|
| COUNT(*) | Mengembalikan jumlah rekaman yang cocok dengan ekspresi predikat. |
| COUNT(ekspresi) | Mengembalikan jumlah rekaman yang expression-nya tidak null. |
| AVG(ekspresi) | Mengembalikan rata-rata nilai ekspresi non-null. |
| MIN(ekspresi) | Mengembalikan nilai ekspresi non-null minimum. |
| MAX(ekspresi) | Mengembalikan nilai maksimum dari ekspresi yang tidak null. |
| SUM(ekspresi) | Mengembalikan jumlah semua nilai ekspresi yang tidak null. |
HILANG
Operator IS MISSING adalah satu-satunya elemen nonstandar yang didukung oleh bahasa SQL untuk akselerasi kueri. Untuk data JSON, jika sebuah field hilang dari rekaman input tertentu, IS MISSING akan dievaluasi menjadi nilai Boolean true.
Deskripsi Tabel
Untuk data CSV, nama tabel selalu BlobStorage. Contohnya:
SELECT * FROM BlobStorage
Untuk data JSON, tersedia opsi tambahan:
SELECT * FROM BlobStorage[*].path
Ini memungkinkan kueri melalui subset data JSON.
Untuk kueri JSON, Anda dapat menyebutkan jalur di bagian dari klausa FROM. Jalur ini akan membantu mengurai subset data JSON. Jalur ini dapat mereferensikan ke nilai JSON Array dan Object.
Mari kita ambil contoh untuk memahami ini secara lebih rinci.
Ini adalah data sampel kami:
{
"id": 1,
"name": "mouse",
"price": 12.5,
"tags": [
"wireless",
"accessory"
],
"dimensions": {
"length": 3,
"width": 2,
"height": 2
},
"weight": 0.2,
"warehouses": [
{
"latitude": 41.8,
"longitude": -87.6
}
]
}
Anda mungkin hanya tertarik pada warehouses objek JSON dari data di atas. Objek warehouses adalah jenis array JSON, sehingga Anda dapat menyebutkan ini dalam klausa FROM. Kueri sampel Anda bisa terlihat seperti ini.
SELECT latitude FROM BlobStorage[*].warehouses[*]
Kueri memperoleh semua kolom tetapi hanya memilih garis lintang.
Jika Anda hanya ingin mengakses nilai objek JSON dimensions, Anda dapat merujuk ke objek tersebut dalam kueri Anda. Contohnya:
SELECT length FROM BlobStorage[*].dimensions
Ini juga membatasi akses Anda ke anggota dimensions objek. Jika Anda ingin mengakses anggota bidang JSON lain dan nilai dalam objek JSON, maka Anda mungkin menggunakan kueri seperti yang diperlihatkan dalam contoh berikut:
SELECT weight,warehouses[0].longitude,id,tags[1] FROM BlobStorage[*]
Nota
BlobStorage dan BlobStorage[*] keduanya merujuk ke seluruh objek. Namun, jika Anda memiliki jalur dalam klausul FROM, maka Anda harus menggunakan BlobStorage[*].path
Sys.Split
Ini adalah bentuk khusus dari pernyataan SELECT, yang hanya tersedia untuk data berformat CSV.
SELECT sys.split(split_size) FROM BlobStorage
Gunakan pernyataan ini dalam kasus di mana Anda ingin mengunduh lalu memproses rekaman data CSV dalam batch. Dengan demikian, Anda dapat memproses rekaman secara paralel alih-alih harus mengunduh semua rekaman pada satu waktu. Pernyataan ini tidak mengembalikan rekaman dari file CSV. Sebaliknya, ia mengembalikan koleksi ukuran batch. Anda kemudian dapat menggunakan setiap ukuran batch untuk mengambil kumpulan rekaman data.
Gunakan parameter split_size untuk menentukan jumlah byte yang Anda inginkan untuk dimuat setiap batch. Misalnya, jika Anda hanya ingin memproses 10 MB data pada satu waktu, pernyataan Anda akan terlihat seperti ini: SELECT sys.split(10485760)FROM BlobStorage karena 10 MB sama dengan 10.485.760 byte. Setiap batch akan berisi rekaman sebanyak yang dapat masuk ke dalam 10 MB tersebut.
Dalam kebanyakan kasus, ukuran setiap batch akan sedikit lebih tinggi dari angka yang Anda tentukan. Itu karena batch tidak boleh berisi rekaman parsial. Jika rekaman terakhir dalam batch dimulai sebelum akhir ambang Batas Anda, batch akan lebih besar sehingga dapat berisi rekaman lengkap. Ukuran batch terakhir kemungkinan akan lebih kecil dari ukuran yang Anda tentukan.
Nota
split_size harus minimal 10 MB (10485760).