Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sorgu hızlandırma, blob içeriği üzerinden sorguları ifade etmek için ANSI SQL benzeri bir dili destekler. Sorgu hızlandırma SQL diyalekt, desteklenen veri türleri, işleçler vb. sınırlı bir kümeyle ANSI SQL'in bir alt kümesidir, ancak JSON gibi hiyerarşik yarı yapılandırılmış veri biçimleri üzerindeki sorguları desteklemek için ANSI SQL'de de genişler.
SELECT Söz Dizimi
Sorgu hızlandırma tarafından desteklenen tek SQL deyimi SELECT deyimidir. Bu örnek, ifadenin true döndürdüğü her satırı döndürür.
SELECT * FROM table [WHERE expression] [LIMIT limit]
CSV biçimli veriler için tablo olmalıdır BlobStorage. Bu, sorgunun REST çağrısında belirtilen bloba karşı çalıştırılacağı anlamına gelir. JSON biçimli veriler için tablo bir "tablo tanımlayıcısı"dır. Bu makalenin Tablo Tanımlayıcıları bölümüne bakın.
Aşağıdaki örnekte, WHERE ifadesinin true döndürdüğü her satır için bu deyim, projeksiyon ifadelerinin her birinin değerlendirilmesinden elde edilen yeni bir satır döndürür.
SELECT expression [, expression ...] FROM table [WHERE expression] [LIMIT limit]
SELECT ifadesinin bir parçası olarak bir veya daha fazla belirli sütun belirtebilirsiniz (örneğin, SELECT Title, Author, ISBN).
Uyarı
SELECT ifadesinde kullanabileceğiniz en fazla belirli sütun sayısı 49'dur. SELECT deyiminizin 49'dan fazla sütun döndürmesi gerekiyorsa, SELECT ifadesi için bir joker karakter (*) kullanın (Örneğin: SELECT *).
Aşağıdaki örnek, ifadenin true döndürdüğü satırların her biri üzerinde bir toplama hesaplaması (örneğin: belirli bir sütunun ortalama değeri) döndürür.
SELECT aggregate_expression FROM table [WHERE expression] [LIMIT limit]
Aşağıdaki örnek, CSV biçimli blobu bölmek için uygun uzaklıkları döndürür. Bu makalenin Sys.Split bölümüne bakın.
SELECT sys.split(split_size)FROM BlobStorage
Veri Türleri
| Veri Türü | Açıklama |
|---|---|
| INT | 64-bit işaretli tam sayı. |
| yüzen nesne | 64 bit ("çift duyarlıklı") kayan nokta. |
| İPLİK | Değişken uzunlukta Unicode dizesi. |
| ZAMAN DAMGASI | Zaman içinde bir nokta. |
| boolean | Doğru ya da yanlış. |
CSV biçimli verilerden değerler okunurken, tüm değerler dize olarak okunur. Dize değerleri CAST ifadeleri kullanılarak diğer türlere dönüştürülebilir. Değerler, bağlama bağlı olarak diğer türlere örtük olarak dönüştürülebilir. Daha fazla bilgi için bkz. Veri türü önceliği (Transact-SQL).
İfadeler
Alanlara referans verme
JSON biçimli veriler veya üst bilgi satırı içeren CSV biçimli veriler için alanlara ada göre başvurulabilir. Alan adları tırnak içine alınabilir veya tırnak içine alınmayabilir. Tırnak içine alınan alan adları çift tırnak karakterleri (") ile çevrelenir, boşluk içerebilir ve büyük/küçük harfe duyarlıdır. Harfsiz alan adları büyük/küçük harfe duyarlı değildir ve özel karakter içermeyebilir.
CSV biçimli verilerde alanlara, önüne alt çizgi (_) karakteri eklenmiş sıra numarası ile de başvurulabilir. Örneğin, ilk alan _1 olarak kullanılabilir veya on birinci alan _11 olarak kullanılabilir. Alanlara sıralı olarak başvurmak, üst bilgi satırı içermeyen CSV biçimli veriler için kullanışlıdır ve bu durumda belirli bir alana başvurmanın tek yolu sıralı olarak yapılır.
Operatörler
Aşağıdaki standart SQL işleçleri desteklenir:
| Operatör | Açıklama |
|---|---|
= |
İki ifadenin eşitliğini karşılaştırır (karşılaştırma işleci). |
!= |
Bir ifadenin başka bir ifadeye (karşılaştırma işleci) eşit olup olmadığını sınar. |
<> |
İki ifadeyi eşit olmadığını belirlemek amacıyla karşılaştırır (bir karşılaştırma işleci). |
< |
Bir ifadenin diğerinden küçük olup olmadığını (karşılaştırma operatörü) değerlendirir. |
<= |
İki ifadeyi küçük veya eşit (karşılaştırma işleci) için karşılaştırır. |
> |
büyüktür (karşılaştırma işleci) için iki ifadeyi karşılaştırır. |
>= |
İki ifadeyi büyüktür veya eşittir durumuna göre (karşılaştırma işleci olarak) karşılaştırır. |
+ |
İki sayı ekler. Bu toplama aritmetik işleci, tarihe gün olarak bir sayı da ekleyebilir. |
- |
İki sayıyı çıkarır (aritmetik çıkarma işleci). |
/ |
Bir sayıyı diğerine böler (aritmetik bölme işleci). |
* |
İki ifadeyi çarpar (aritmetik çarpma işleci). |
% |
Bir sayının başka bir sayıya bölünmesi sonucunda kalan kısmı döndürür. |
AND |
İki tamsayı değeri arasında bit düzeyinde mantıksal AND işlemi gerçekleştirir. |
OR |
Transact-SQL deyimleri içindeki ikili ifadelere çevrildiği şekilde belirtilen iki tamsayı değeri arasında bit düzeyinde mantıksal OR işlemi gerçekleştirir. |
NOT |
Boole girişini olumsuzlar. |
CAST |
Bir veri türünün ifadesini başka bir veri türüne dönüştürür. |
BETWEEN |
Test etmek için bir aralık belirtir. |
IN |
Belirtilen değerin bir alt sorgudaki veya listedeki herhangi bir değerle eşleşip eşleşmediğini belirler. |
NULLIF |
Belirtilen iki ifade eşitse null değer döndürür. |
COALESCE |
Bağımsız değişkenleri sırayla değerlendirir ve başlangıçta NULL olarak değerlendirilmeyen ilk ifadenin geçerli değerini döndürür. |
Bir işlecin solundaki ve sağındaki veri türleri farklıysa, otomatik dönüştürme burada belirtilen kurallara göre gerçekleştirilir: Veri türü önceliği (Transact-SQL).
Sorgu hızlandırma SQL dili, bu makalede açıklanan veri türlerinin yalnızca çok küçük bir alt kümesini destekler. Bu makalenin Veri Türleri bölümüne bakın.
Çevirir
Sorgu hızlandırma SQL dili, buradaki kurallara göre CAST işlecini destekler: Veri türü dönüştürme (Veritabanı Altyapısı).
Sorgu hızlandırma SQL dili, bu makalede açıklanan veri türlerinin yalnızca küçük bir alt kümesini destekler. Bu makalenin Veri Türleri bölümüne bakın.
Dize işlevleri
Sorgu hızlandırma SQL dili aşağıdaki standart SQL dizesi işlevlerini destekler:
| İşlev | Açıklama |
|---|---|
| CHAR_LENGTH | Dize ifadesi bir karakter veri türündeyse, dize ifadesinin karakter cinsinden uzunluğunu döndürür; aksi takdirde, dize ifadesinin bayt cinsinden uzunluğunu döndürür (8'e bölünen bit sayısından küçük olmayan en küçük tamsayı). (Bu işlev, CHARACTER_LENGTH işleviyle aynıdır.) |
| CHARACTER_LENGTH | Dize ifadesi bir karakter veri türündeyse, dize ifadesinin karakter cinsinden uzunluğunu döndürür; aksi takdirde, dize ifadesinin bayt cinsinden uzunluğunu döndürür (8'e bölünen bit sayısından küçük olmayan en küçük tamsayı). (Bu işlev, CHAR_LENGTH işleviyle aynıdır |
| DÜŞÜR | Büyük harf karakter verilerini küçük harfe dönüştürdükten sonra bir karakter ifadesi döndürür. |
| ÜST | Küçük harf karakter verilerinin büyük harfe dönüştürüldüğü bir karakter ifadesi döndürür. |
| ALT DİZİ | SQL Server'da karakter, ikili, metin veya görüntü ifadesinin bir bölümünü döndürür. |
| SÜSLEMEK | Dizenin başlangıcından ve sonundan boşluk karakterini (32) veya belirtilen diğer karakterleri kaldırır. |
| ÖNDE GELEN | Dizenin başlangıcından boşluk karakterini (32) veya belirtilen diğer karakterleri kaldırır. |
| IZLEYEN | Dizenin sonundaki boşluk karakteri karakterlerini (32) veya belirtilen diğer karakterleri kaldırır. |
İşte birkaç örnek:
| İşlev | Örnek | Sonuç |
|---|---|---|
| CHARACTER_LENGTH | SELECT CHARACTER_LENGTH('abcdefg') from BlobStorage |
7 |
| CHAR_LENGTH | SELECT CHAR_LENGTH(_1) from BlobStorage |
1 |
| DÜŞÜR | SELECT LOWER('AbCdEfG') from BlobStorage |
abcdefg |
| ÜST | SELECT UPPER('AbCdEfG') from BlobStorage |
ABCDEFG |
| Alt Dizi | SUBSTRING('123456789', 1, 5) |
23456 |
| SÜSLEMEK | TRIM(BOTH '123' FROM '1112211Microsoft22211122') |
Microsoft |
Tarih işlevleri
Aşağıdaki standart SQL tarih işlevleri desteklenir:
DATE_ADDDATE_DIFFEXTRACTTO_STRINGTO_TIMESTAMP
Şu anda standart IS08601'in tüm tarih biçimleri dönüştürülmektedir.
DATE_ADD işlevi
Sorgu hızlandırma SQL dili işlev için yıl, ay, gün, saat, dakika, saniyeyi DATE_ADD destekler.
Örnekler:
DATE_ADD(datepart, quantity, timestamp)
DATE_ADD('minute', 1, CAST('2017-01-02T03:04:05.006Z' AS TIMESTAMP)
DATE_DIFF işlevi
Sorgu hızlandırma SQL dili işlev için yıl, ay, gün, saat, dakika, saniyeyi DATE_DIFF destekler.
DATE_DIFF(datepart, timestamp, timestamp)
DATE_DIFF('hour','2018-11-09T00:00+05:30','2018-11-09T01:00:23-08:00')
EXTRACT fonksiyonu
EXTRACT işlevi için tarihin desteklenen bölümleri haricinde, sorgu hızlandırma SQL dili timezone_hour ve timezone_minute'yi tarih bölümü olarak destekler.
Örnekler:
EXTRACT(datepart FROM timestampstring)
EXTRACT(YEAR FROM '2010-01-01T')
TO_STRING işlevi
Örnekler:
TO_STRING(TimeStamp , format)
TO_STRING(CAST('1969-07-20T20:18Z' AS TIMESTAMP), 'MMMM d, y')
Bu tabloda, işlevin çıkış biçimini TO_STRING belirtmek için kullanabileceğiniz dizeler açıklanmaktadır.
| Dizeyi biçimlendir | Çıktı |
|---|---|
| Yy | Yılın 2 basamaklı formatı - 1999, '99' olarak yazılır |
| y | Yılın 4 basamaklı formatı |
| yyyy | Yılın 4 basamaklı formatı |
| M | Yılın ayı - 1 |
| MM | Sıfır doldurulmuş ay - 01 |
| MMM | Yılın kısaltılmış ayı - OCA |
| MMMM | Tam ay - Mayıs |
| d | Ayın günü (1-31) |
| Dd | Ayın sıfır doldurulmuş günü (01-31) |
| a | AM veya PM |
| h | Günün saati (1-12) |
| Hh | Sıfırla doldurulmuş günün saatleri (01-12) |
| H | Günün saati (0-23) |
| HH | Günün sıfır doldurulmuş saati (00-23) |
| m | Saatin dakikası (0-59) |
| Mm | Sıfır doldurulmuş dakika (00-59) |
| s | Dakikanın saniyesi (0-59) |
| ss | Sıfır doldurulmuş saniyeler (00-59) |
| S | Saniyenin kesirleri (0,1-0,9) |
| SS | Saniyenin kesir kısmı (0,01-0,99) |
| SSS | Saniye kesri (0,001-0,999) |
| X | Saat cinsinden uzaklık |
| XX veya XXXX | Saat ve dakika cinsinden zaman farkı (+0430) |
| XXX veya XXXXX | Saat ve dakika cinsinden fark (-07:00) |
| x | Saat cinsinden uzaklık (7) |
| xx veya xxxx | Saat ve dakika olarak zaman dilimi farkı (+0530) |
| Xxx veya xxxxx | Saat ve dakika olarak fark (+05:30) |
TO_TIMESTAMP işlevi
Yalnızca IS08601 biçimleri desteklenir.
Örnekler:
TO_TIMESTAMP(string)
TO_TIMESTAMP('2007T')
Uyarı
Sistem saatini almak için işlevini de kullanabilirsiniz UTCNOW .
Toplama İfadeleri
SELECT deyimi bir veya daha fazla projeksiyon ifadesi veya tek bir toplama ifadesi içerebilir. Aşağıdaki toplama ifadeleri desteklenir:
| İfade | Açıklama |
|---|---|
| COUNT(*) | Koşul ifadesiyle eşleşen kayıt sayısını döndürür. |
| BAĞ_DEĞ_SAY(ifade) | İfade için null olmayan kayıtların sayısını döndürür. |
| AVG(ifade) | İfadenin null olmayan değerlerinin ortalamasını döndürür. |
| MIN(ifade) | İfadenin null olmayan en düşük değerini döndürür. |
| MAX(ifade) | İfadenin null olmayan en büyük değerini döndürür. |
| TOPLA(ifade) | İfadenin null olmayan tüm değerlerinin toplamını döndürür. |
EKSİK
IS MISSING işleç, sorgu hızlandırma SQL dilinin desteklediği standart olmayan tek dildir. JSON verileri için, belirli bir giriş kaydında bir alan eksikse, ifade alanı IS MISSING True Boole değerini değerlendirir.
Tablo Tanımlayıcıları
CSV verileri için tablo adı her zaman BlobStorageşeklindedir. Örneğin:
SELECT * FROM BlobStorage
JSON verileri için ek seçenekler sağlanır:
SELECT * FROM BlobStorage[*].path
Bu, JSON verilerinin alt kümeleri üzerinden sorgu yapılmasını sağlar.
JSON sorguları için FROM yan tümcesinin bir bölümündeki yoldan bahsedebilirsiniz. Bu yollar JSON verilerinin alt kümesini ayrıştırmaya yardımcı olur. Bu yollar JSON Dizisi ve Nesne değerlerine başvurabilir.
Şimdi bunu daha ayrıntılı anlamak için bir örnek alalım.
Örnek verilerimiz:
{
"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
}
]
}
Yukarıdaki verilerden yalnızca warehouses JSON nesnesiyle ilgileniyor olabilirsiniz.
warehouses nesnesi bir JSON dizi türüdür, bu nedenle FROM yan tümcesinde bundan bahsedebilirsiniz. Örnek sorgunuz şuna benzer olabilir.
SELECT latitude FROM BlobStorage[*].warehouses[*]
Sorgu tüm alanları alır ancak yalnızca enlemi seçer.
Yalnızca dimensions JSON nesne değerine erişmek istiyorsanız, sorgunuzda bu nesneye başvurmayı kullanabilirsiniz. Örneğin:
SELECT length FROM BlobStorage[*].dimensions
Bu, nesnenin dimensions üyelerine erişiminizi de sınırlar. JSON alanlarının diğer üyelerine ve JSON nesnelerinin iç değerlerine erişmek istiyorsanız, aşağıdaki örnekte gösterildiği gibi bir sorgu kullanabilirsiniz:
SELECT weight,warehouses[0].longitude,id,tags[1] FROM BlobStorage[*]
Uyarı
BlobStorage ve BlobStorage[*] her ikisi de nesnenin tamamına başvurur. Ancak FROM yan tümcesinde bir yolunuz varsa BlobStorage[*].path kullanmanız gerekir
Sys.Split
Bu, SELECT deyiminin yalnızca CSV biçimli veriler için kullanılabilen özel bir biçimidir.
SELECT sys.split(split_size) FROM BlobStorage
CSV veri kayıtlarını toplu olarak indirip işlemek istediğiniz durumlarda bu deyimi kullanın. Bu şekilde, tüm kayıtları bir kerede indirmek zorunda kalmadan kayıtları paralel olarak işleyebilirsiniz. Bu ifade CSV dosyasından kayıtları döndürmez. Bunun yerine, işlem grubu boyutlarından oluşan bir koleksiyon döndürür. Ardından her toplu iş boyutunu kullanarak bir grup veri kaydı alabilirsiniz.
Her toplu işlemin içermesini istediğiniz bayt sayısını belirtmek için split_size parametresini kullanın. Örneğin, bir kerede yalnızca 10 MB veri işlemek istiyorsanız, deyiminiz şöyle görünür: SELECT sys.split(10485760)FROM BlobStorage 10 MB, 10.485.760 bayta eşittir. Her toplu işlem, bu 10 MB'a sığabilecek kadar çok kayıt içerir.
Çoğu durumda, her toplu işlemin boyutu belirttiğiniz sayıdan biraz daha yüksek olur. Bunun nedeni toplu işlemin kısmi kayıt içerememesidir. Bir toplu işteki son kayıt, eşik sona ermeden önce başlarsa, toplu iş tüm kaydı içerebilmesi için daha büyük olur. Son toplu işlemin boyutu büyük olasılıkla belirttiğiniz boyuttan küçük olacaktır.
Uyarı
split_size en az 10 MB (10485760) olmalıdır.