Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Abfragebeschleunigung unterstützt eine ANSI SQL-ähnliche Sprache zum Ausdrücken von Abfragen über BLOB-Inhalte. Der SQL-Dialekt der Abfragebeschleunigung ist eine Teilmenge von ANSI SQL, die eine begrenzte Gruppe unterstützter Datentypen, Operatoren usw. umfasst. Gleichzeitig erweitert er ANSI SQL um die Unterstützung von Abfragen über hierarchische, halbstrukturierte Datenformate wie JSON.
SELECT-Syntax
Die einzige SQL-Anweisung, die von der Abfragebeschleunigung unterstützt wird, ist die SELECT-Anweisung. In diesem Beispiel wird jede Zeile zurückgegeben, für die der Ausdruck "true" zurückgibt.
SELECT * FROM table [WHERE expression] [LIMIT limit]
Für CSV-formatierte Daten muss die Tabelle sein BlobStorage
. Dies bedeutet, dass die Abfrage für das im REST-Aufruf angegebene Blob ausgeführt wird. Bei JSON-formatierten Daten ist die Tabelle ein "Tabellendeskriptor". Weitere Informationen finden Sie im Abschnitt "Tabellenbeschreibungen " in diesem Artikel.
Im folgenden Beispiel gibt diese Anweisung für jede Zeile, für die der WHERE-Ausdruck "true" zurückgibt, eine neue Zeile zurück, die aus der Auswertung der einzelnen Projektionsausdrücke erstellt wird.
SELECT expression [, expression ...] FROM table [WHERE expression] [LIMIT limit]
Sie können eine oder mehrere bestimmte Spalten als Teil des SELECT-Ausdrucks angeben (z. B. SELECT Title, Author, ISBN
).
Hinweis
Die maximale Anzahl bestimmter Spalten, die Sie im SELECT-Ausdruck verwenden können, beträgt 49. Wenn Ihre SELECT-Anweisung mehr als 49 Spalten zurückgibt, verwenden Sie ein Wildcardzeichen (*
) für den SELECT-Ausdruck (z. B.: SELECT *
).
Im folgenden Beispiel wird eine Aggregatberechnung (z. B. der Mittelwert einer bestimmten Spalte) über jede der Zeilen zurückgegeben, für die der Ausdruck "true" zurückgibt.
SELECT aggregate_expression FROM table [WHERE expression] [LIMIT limit]
Im folgenden Beispiel werden geeignete Offsets zum Teilen eines CSV-formatierten Blobs zurückgegeben. Weitere Informationen finden Sie im Abschnitt "Sys.Split " in diesem Artikel.
SELECT sys.split(split_size)FROM BlobStorage
Datentypen
Datentyp | BESCHREIBUNG |
---|---|
INT | Eine 64-Bit-Ganzzahl mit Vorzeichen. |
SCHWEBEN | 64-Bit-Gleitkommazahl (mit doppelter Genauigkeit). |
SCHNUR | Unicode-Zeichenfolge mit variabler Länge. |
ZEITSTEMPEL | Ein Punkt in der Zeit. |
BOOLESCH | „true“ oder „false“. |
Beim Lesen von Werten aus CSV-formatierten Daten werden alle Werte als Zeichenfolgen gelesen. Zeichenfolgenwerte können mithilfe von CAST-Ausdrücken in andere Typen konvertiert werden. Werte können in Abhängigkeit vom Kontext implizit in andere Typen umgegossen werden. Weitere Informationen finden Sie unter "Datentyprangfolge (Transact-SQL)".
Ausdrücke
Verweisen auf Felder
Bei JSON-formatierten Daten oder CSV-formatierten Daten mit einer Kopfzeile können Felder anhand des Namens referenziert werden. Feldnamen können mit oder ohne Anführungszeichen angegeben werden. Feldnamen in Anführungszeichen werden in doppelte Anführungszeichen ("
) eingeschlossen und dürfen Leerzeichen enthalten. Außerdem wird die Groß-/Kleinschreibung beachtet. Bei Feldnamen ohne Anführungszeichen wird die Groß-/Kleinschreibung nicht beachtet, und Sie dürfen keine Sonderzeichen enthalten.
In CSV-formatierten Daten kann auch durch eine Ordnungszahl, der ein Unterstrich (_
) vorangestellt ist, auf Felder verwiesen werden. So kann beispielsweise auf das erste Feld als _1
verwiesen werden, oder auf das elfte Feld als _11
. Das Verweisen auf Felder nach Ordnungszahl ist für CSV-formatierte Daten nützlich, die keine Kopfzeile enthalten. In diesem Fall ist die einzige Möglichkeit, auf ein bestimmtes Feld zu verweisen, nach Ordnungszahl festgelegt.
Betriebspersonal
Die folgenden SQL-Standardoperatoren werden unterstützt:
Bediener | BESCHREIBUNG |
---|---|
= |
Vergleicht die Gleichheit von zwei Ausdrücken (einem Vergleichsoperator). |
!= |
Überprüft, ob ein Ausdruck nicht mit einem anderen Ausdruck (einem Vergleichsoperator) identisch ist. |
<> |
Vergleicht zwei Ausdrücke nach dem Kriterium „ungleich“ (ein Vergleichsoperator). |
< |
Vergleicht zwei Ausdrücke nach dem Kriterium „kleiner als“ (ein Vergleichsoperator). |
<= |
Vergleicht zwei Ausdrücke nach dem Kriterium „kleiner als oder gleich“ (ein Vergleichsoperator). |
> |
Vergleicht zwei Ausdrücke nach dem Kriterium „größer als“ (ein Vergleichsoperator). |
>= |
Vergleicht zwei Ausdrücke nach dem Kriterium „größer als“ oder „gleich“ (ein Vergleichsoperator). |
+ |
Addition zweier Zahlen. Mit diesem arithmetischen Operator für die Addition kann auch eine Anzahl von Tagen zu einem Datum addiert werden. |
- |
Subtrahiert zwei Zahlen (ein arithmetischer Subtraktionsoperator). |
/ |
Dividiert eine Zahl durch eine andere (arithmetische Divisionsoperator). |
* |
Multipliziert zwei Ausdrücke (ein arithmetischer Multiplikationsoperator). |
% |
Gibt den Rest einer Zahl zurück, die durch eine andere geteilt wird. |
AND |
Führt eine bitweise logische AND-Operation zwischen zwei ganzzahligen Werten aus. |
OR |
Führt eine bitweise logische OR-Operation zwischen zwei angegebenen ganzzahligen Werten aus, die in binäre Ausdrücke innerhalb von Transact-SQL-Anweisungen übersetzt werden. |
NOT |
Negiert eine boolesche Eingabe. |
CAST |
Konvertiert einen Ausdruck eines Datentyps in einen anderen. |
BETWEEN |
Gibt einen zu testenden Bereich an. |
IN |
Bestimmt, ob ein angegebener Wert mit einem beliebigen Wert in einer Unterabfrage oder einer Liste übereinstimmt. |
NULLIF |
Gibt einen NULL-Wert zurück, wenn die beiden angegebenen Ausdrücke gleich sind. |
COALESCE |
Wertet die Argumente in der Reihenfolge aus und gibt den aktuellen Wert des ersten Ausdrucks zurück, der anfangs nicht als NULL ausgewertet wird. |
Wenn Datentypen links und rechts von einem Operator unterschiedlich sind, wird die automatische Konvertierung gemäß den hier angegebenen Regeln ausgeführt: Datentyprang (Transact-SQL).
Die SQL-Sprache für die Abfragebeschleunigung unterstützt nur eine sehr kleine Teilmenge der in diesem Artikel erläuterten Datentypen. Weitere Informationen finden Sie im Abschnitt "Datentypen " in diesem Artikel.
Umwandlungen
Die SQL-Sprache für die Abfragebeschleunigung unterstützt den CAST-Operator gemäß den hier aufgeführten Regeln: Datentypkonvertierung (Datenbankmodul).
Die SQL-Sprache für die Abfragebeschleunigung unterstützt nur eine kleine Teilmenge der in diesem Artikel erläuterten Datentypen. Weitere Informationen finden Sie im Abschnitt "Datentypen " in diesem Artikel.
Zeichenfolgenfunktionen
Die SQL-Sprache für die Abfragebeschleunigung unterstützt die folgenden STANDARDMÄßIGen SQL-Zeichenfolgenfunktionen:
Funktion | BESCHREIBUNG |
---|---|
CHAR_LENGTH | Gibt die Länge des Zeichenfolgenausdrucks in Zeichen zurück, wenn der Zeichenfolgenausdruck den Zeichenfolgendatentyp aufweist. Anderenfalls wird die Länge des Zeichenfolgenausdrucks in Byte zurückgegeben (die kleinste ganze Zahl, die nicht weniger als die Anzahl von Bits ist, dividiert durch 8). (Diese Funktion entspricht der CHARACTER_LENGTH-Funktion.) |
CHARACTER_LENGTH | Gibt die Länge des Zeichenfolgenausdrucks in Zeichen zurück, wenn der Zeichenfolgenausdruck den Zeichenfolgendatentyp aufweist. Anderenfalls wird die Länge des Zeichenfolgenausdrucks in Byte zurückgegeben (die kleinste ganze Zahl, die nicht weniger als die Anzahl von Bits ist, dividiert durch 8). (Diese Funktion ist identisch mit der funktion CHAR_LENGTH |
SENKEN | Gibt einen Zeichenausdruck zurück, nachdem Großbuchstaben in Kleinbuchstaben konvertiert wurden. |
OBERER | Gibt einen Zeichenausdruck zurück, bei dem Kleinbuchstaben in Großbuchstaben umgewandelt werden. |
Substring | Gibt einen Teil eines Zeichen-, Binär-, Text- oder Bildausdrucks in SQL Server zurück. |
STUTZEN | Entfernt das Leerzeichen (32) oder andere angegebene Zeichen vom Anfang und Ende einer Zeichenfolge. |
FÜHREND | Entfernt das Leerzeichen (32) oder andere angegebene Zeichen vom Anfang einer Zeichenfolge. |
NACHFOLGEND | Entfernt das Leerzeichen (32) oder andere angegebene Zeichen vom Ende einer Zeichenfolge. |
Hier einige Beispiele:
Funktion | Beispiel | Ergebnis |
---|---|---|
CHARACTER_LENGTH | SELECT CHARACTER_LENGTH('abcdefg') from BlobStorage |
7 |
CHAR_LENGTH | SELECT CHAR_LENGTH(_1) from BlobStorage |
1 |
SENKEN | SELECT LOWER('AbCdEfG') from BlobStorage |
abcdefg |
OBERER | SELECT UPPER('AbCdEfG') from BlobStorage |
ABCDEFG |
Substring | SUBSTRING('123456789', 1, 5) |
23456 |
STUTZEN | TRIM(BOTH '123' FROM '1112211Microsoft22211122') |
Microsoft |
Datumsfunktionen
Die folgenden SQL-Standarddatumsfunktionen werden unterstützt:
DATE_ADD
DATE_DIFF
EXTRACT
TO_STRING
TO_TIMESTAMP
Derzeit werden alle Datumsformate von Standard-IS08601 konvertiert.
DATE_ADD-Funktion
Die SQL-Sprache für die Abfragebeschleunigung unterstützt Jahr, Monat, Tag, Stunde, Minute, Sekunde für die DATE_ADD
Funktion.
Beispiele
DATE_ADD(datepart, quantity, timestamp)
DATE_ADD('minute', 1, CAST('2017-01-02T03:04:05.006Z' AS TIMESTAMP)
DATE_DIFF-Funktion
Die SQL-Sprache für die Abfragebeschleunigung unterstützt Jahr, Monat, Tag, Stunde, Minute, Sekunde für die DATE_DIFF
Funktion.
DATE_DIFF(datepart, timestamp, timestamp)
DATE_DIFF('hour','2018-11-09T00:00+05:30','2018-11-09T01:00:23-08:00')
EXTRACT-Funktion
Bei EXTRACT unterstützt die SQL-Sprache für die Abfragebeschleunigung im Gegensatz zum Datumsteil für die DATE_ADD
-Funktion „timezone_hour“ und „timezone_minute“ als Datumsteil.
Beispiele
EXTRACT(datepart FROM timestampstring)
EXTRACT(YEAR FROM '2010-01-01T')
TO_STRING-Funktion
Beispiele
TO_STRING(TimeStamp , format)
TO_STRING(CAST('1969-07-20T20:18Z' AS TIMESTAMP), 'MMMM d, y')
In dieser Tabelle werden Zeichenfolgen beschrieben, mit denen Sie das Ausgabeformat der TO_STRING
Funktion angeben können.
Formatzeichenfolge | Ausgabe |
---|---|
Yy | Jahr im 2-stelligen Format - 1999 als "99" |
y | Jahr im 4-stelligen Format |
yyyy | Jahr im 4-stelligen Format |
M | Monat des Jahres - 1 |
MM | Monat mit Nullen aufgefüllt: 01 |
MMM | Abgekürzter Monat des Jahres - JAN |
MMMM | Vollständiger Monat - Mai |
d | Tag des Monats (1-31) |
Dd | Tag des Monats mit Nullen aufgefüllt (01–31) |
ein | AM oder PM |
h | Stunde des Tages (1-12) |
Hh | Stunden des Tages mit Nullen aufgefüllt (01–12) |
H | Stunde des Tages (0-23) |
HH | Stunde des Tages mit Nullen aufgefüllt (00–23) |
m | Minute der Stunde (0-59) |
Mm | Minute mit Nullen aufgefüllt (00–59) |
s | Sekunde der Minuten (0–59) |
ß | Sekunden mit Nullen aufgefüllt (00–59) |
E | Bruchteil von Sekunden (0,1-0,9) |
ß | Bruchteil von Sekunden (0,01-0,99) |
SSS | Sekundenbruchteil (0,001-0,999) |
X | Abweichung in Stunden |
XX oder XXXX | Abweichung in Stunden und Minuten (+0430) |
XXX oder XXXXX | Abweichung in Stunden und Minuten (-07:00) |
x | Abweichung in Stunden (7) |
xx oder xxxx | Abweichung in Stunden und Minuten (+0530) |
Xxx oder xxxxx | Abweichung in Stunden und Minuten (+05:30) |
TO_TIMESTAMP-Funktion
Nur IS08601 Formate werden unterstützt.
Beispiele
TO_TIMESTAMP(string)
TO_TIMESTAMP('2007T')
Hinweis
Sie können die UTCNOW
Funktion auch verwenden, um die Systemzeit abzurufen.
Aggregatausdrücke
Eine SELECT-Anweisung kann einen oder mehrere Projektionsausdrücke oder einen einzelnen Aggregatausdruck enthalten. Die folgenden Aggregatausdrücke werden unterstützt:
Ausdruck | BESCHREIBUNG |
---|---|
ANZAHL(*) | Gibt die Anzahl der Datensätze zurück, die dem Prädikatausdruck entsprechen. |
COUNT(Ausdruck) | Gibt die Anzahl der Datensätze zurück, für die der Ausdruck ungleich Null ist. |
AVG(Ausdruck) | Gibt den Mittelwert der Nicht-NULL-Werte des Ausdrucks zurück. |
MIN(Ausdruck) | Gibt den kleinsten Wert des Ausdrucks zurück, der ungleich NULL ist. |
MAX(Ausdruck | Gibt den größten Wert des Ausdrucks zurück, der ungleich NULL ist. |
SUMME(Ausdruck) | Gibt die Summe aller Nicht-Null-Werte des Ausdrucks zurück. |
FEHLEND
Der IS MISSING
Operator ist der einzige Nichtstandard, den die SQL-Sprache für die Abfragebeschleunigung unterstützt. Wenn für JSON-Daten ein Feld aus einem bestimmten Eingabedatensatz fehlt, wird das Ausdrucksfeld IS MISSING
auf den booleschen Wert true ausgewertet.
Tabellendeskriptoren
Für CSV-Daten ist der Tabellenname immer BlobStorage
. Beispiel:
SELECT * FROM BlobStorage
Für JSON-Daten stehen weitere Optionen zur Verfügung:
SELECT * FROM BlobStorage[*].path
Dies ermöglicht Abfragen über Teilmengen der JSON-Daten.
Bei JSON-Abfragen können Sie den Pfad in einem Teil der FROM-Klausel angeben. Diese Pfade helfen bei der Analyse der Teilmenge von JSON-Daten. Diese Pfade können auf JSON-Array- und Object-Werte verweisen.
Sehen wir uns ein Beispiel an, um dies ausführlicher zu verstehen.
Dies sind unsere Beispieldaten:
{
"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
}
]
}
Möglicherweise interessieren Sie sich nur für das warehouses
JSON-Objekt aus den obigen Daten. Das warehouses
Objekt ist ein JSON-Arraytyp, sodass Sie dies in der FROM-Klausel erwähnen können. Ihre Beispielabfrage kann etwa wie folgt aussehen.
SELECT latitude FROM BlobStorage[*].warehouses[*]
Die Abfrage ruft alle Felder ab, wählt jedoch nur den Breitengrad aus.
Wenn Sie nur auf den dimensions
JSON-Objektwert zugreifen möchten, können Sie in Ihrer Abfrage auf dieses Objekt verweisen. Beispiel:
SELECT length FROM BlobStorage[*].dimensions
Dadurch wird auch der Zugriff auf Elemente des dimensions
Objekts beschränkt. Wenn Sie auf andere Elemente von JSON-Feldern und inneren Werten von JSON-Objekten zugreifen möchten, können Sie eine Abfrage wie im folgenden Beispiel verwenden:
SELECT weight,warehouses[0].longitude,id,tags[1] FROM BlobStorage[*]
Hinweis
BlobStorage und BlobStorage[*] verweisen beide auf das gesamte Objekt. Wenn Sie jedoch über einen Pfad in der FROM-Klausel verfügen, müssen Sie BlobStorage[*].path verwenden.
Sys.Split
Dies ist eine spezielle Form der SELECT-Anweisung, die nur für CSV-formatierte Daten verfügbar ist.
SELECT sys.split(split_size) FROM BlobStorage
Verwenden Sie diese Anweisung in Fällen, in denen Sie CSV-Datensätze in Batches herunterladen und verarbeiten möchten. Auf diese Weise können Sie Datensätze parallel verarbeiten, anstatt alle Datensätze gleichzeitig herunterladen zu müssen. Diese Anweisung gibt keine Datensätze aus der CSV-Datei zurück. Stattdessen wird eine Auflistung von Batchgrößen zurückgegeben. Anschließend können Sie jede Batchgröße verwenden, um einen Batch von Datensätzen abzurufen.
Verwenden Sie den parameter split_size , um die Anzahl der Bytes anzugeben, die jeder Batch enthalten soll. Wenn Sie beispielsweise jeweils nur 10 MB Daten verarbeiten möchten, würde Ihre Anweisung wie folgt aussehen: SELECT sys.split(10485760)FROM BlobStorage
da 10 MB gleich 10.485.760 Bytes sind. Jeder Batch enthält so viele Datensätze wie in diese 10 MB passen.
In den meisten Fällen ist die Größe jedes Batches etwas höher als die von Ihnen angegebene Zahl. Das liegt daran, dass ein Batch keinen Teildatensatz enthalten kann. Wenn der letzte Datensatz in einem Batch vor dem Ende des Schwellenwerts beginnt, ist der Batch größer, sodass er den vollständigen Datensatz enthalten kann. Die Größe des letzten Batches ist wahrscheinlich kleiner als die von Ihnen angegebene Größe.
Hinweis
Die split_size muss mindestens 10 MB (10485760) betragen.