Mit der Abfragesprache der Google Visualization API können Sie verschiedene Datenbearbeitungen an der Abfrage an die Datenquelle vornehmen.
Inhaltsverzeichnis
Einführung
In der Regel erwarten Visualisierungen Daten in einer bestimmten Form. Ein Kreisdiagramm könnte beispielsweise Daten in zwei Spalten erwarten: ein Textlabel und einen numerischen Wert. Die Daten in der Datenquelle stimmen möglicherweise nicht genau mit dieser Struktur überein. Beispielsweise kann die Datenquelle mehr als zwei Spalten haben oder die Reihenfolge der Spalten stimmt möglicherweise nicht mit der im Kreisdiagramm erwarteten Reihenfolge überein.
Die Abfragesprache bietet die Möglichkeit, Anfragen zur Datenbearbeitung und -formatierung an die Datenquelle zu senden und dafür zu sorgen, dass die zurückgegebene Datenstruktur und der Inhalt der erwarteten Struktur entsprechen.
Die Syntax der Abfragesprache ähnelt der von SQL. Entwickler, die mit SQL vertraut sind, sollten diese Abfragesprache schnell erlernen und verwenden können. Im Web sind viele SQL-Anleitungen verfügbar. Es gibt einige Unterschiede zwischen dieser Abfragesprache und SQL. Diese werden im syntax beschrieben.
Datenquellen müssen nicht die Abfragesprache implementieren oder, falls doch, alle Funktionen der Sprache implementieren. Sofern Sie keinen Grund zur Annahme haben, sollten Sie sich bei der Implementierung aller Funktionen dieser Sprache nicht auf eine Datenquelle verlassen.
Query Language verwenden
Sie können einen Abfragestring auf zwei Arten an eine Datenquellenanfrage anhängen: durch Festlegen des Abfragestrings innerhalb des JavaScript-Codes oder durch Festlegen des Abfragestrings als Parameter in der Datenquellen-URL. Wenn Ihre Anfrage keinen Abfragestring enthält, werden für eine Datenquelle standardmäßig alle Zeilen und Spalten in ihrer standardmäßigen Zeilen-/Spaltenreihenfolge und -formatierung zurückgegeben. Sie können dies ändern, indem Sie einen Abfragestring in Ihre Anfrage an eine Datenquelle aufnehmen.
Abfrage über JavaScript festlegen
Wenn Sie den Abfragestring über den JavaScript-Code festlegen möchten, rufen Sie die Methode setQuery
der Klasse google.visualization.Query
auf.
var query = new google.visualization.Query(DATA_SOURCE_URL); query.setQuery('select dept, sum(salary) group by dept'); query.send(handleQueryResponse);
Abfrage in der Datenquellen-URL festlegen
Der Abfragestring kann der URL der Datenquelle mithilfe des Parameters tq
hinzugefügt werden.
Wenn Sie die Abfrage im URL-Parameter statt in JavaScript festlegen, können Sie ganz einfach Visualisierungen verwenden, die von anderen Entwicklern geschrieben wurden, und die Abfrage trotzdem anpassen.
Der Abfragestring muss ordnungsgemäß als URL-Parameter codiert sein.
Du kannst eine URL mit der JavaScript-Funktion encodeURIComponent
codieren oder sie manuell mit dem Codierungstool am Ende dieses Abschnitts codieren.
Example:
Betrachten Sie den folgenden Abfragestring für eine Google-Tabelle. (Beachten Sie, dass Spalten-IDs in Tabellen immer Buchstaben sind. Der Text der Spaltenüberschrift, der in der veröffentlichten Tabelle angezeigt wird, ist Beschriftungen und keine IDs. Sie müssen im Abfragestring die ID und nicht das Label verwenden.
select A, sum(B) group by A
Nach der Codierung wird diese Abfrage zu:
select%20A%2C%20sum(B)%20group%20by%20A
Angenommen, dies ist die URL Ihrer Tabelle:
https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4
Fügen Sie der Tabellen-URL /gviz/tq?tq=
YOUR_QUERY_STRING hinzu, um den endgültigen Abfragestring zu erhalten:
https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4/gviz/tq?tq=select%A%2C%20sum(B)%20group%20by%20A
Verwenden Sie das folgende Tool, um einen Abfragestring zu codieren oder zu decodieren:
Hinweis: Für den Zugriff auf private Tabellendaten müssen explizite Anmeldedaten zur Autorisierung mit OAuth gesendet werden. Weitere Informationen findest du im Abschnitt Google Tabellen: Autorisierung.
Sprachsyntax
Übersicht
Die Syntax der Abfragesprache der Google Visualization API ähnelt der SQL-Syntax. Es handelt sich jedoch um eine Teilmenge von SQL mit einigen eigenen Features, die Sie erlernen müssen. Wenn Sie mit SQL vertraut sind, sollte es nicht zu schwer sein, es zu erlernen.
Datentabellen
In diesem Dokument wird der Begriff Datentabelle für die Ergebnismenge einer Abfrage verwendet. Eine Datentabelle besteht aus Zeilen und Spalten. Jede Spalte in einer Datentabelle hat die folgenden Eigenschaften:
- ID (oder Spalten-ID): Wird verwendet, um auf Spalten in der Abfrage zu verweisen. Sie sollten in einer Abfrage niemals versuchen, auf eine Spalte anhand des Labels, sondern nur anhand der Kennung zu verweisen. Tipp:Verwenden Sie keine IDs, die Leerzeichen enthalten. Leerzeichen sind schwer zu verwalten und können zu kleinen, aber schwer zu findenden Fehlern bei der Codierung führen. Außerdem muss eine ID, die Leerzeichen enthält, in Anführungszeichen gesetzt werden.
- Label. Ein
string
, das Endnutzern in der Regel angezeigt wird. beispielsweise als Legende in einem Kreisdiagramm oder als Spaltenüberschrift in einer Tabelle. - Datentyp: Unterstützte Datentypen sind
string
,number
,boolean
,date
,datetime
undtimeofday
. Alle Werte einer Spalte haben einen Datentyp, der dem Spaltentyp entspricht, oder einennull
-Wert. Diese Typen ähneln den im Abschnitt Literale auf dieser Seite beschriebenen JavaScript-Typen, sind aber nicht identisch mit ihnen. - Formatierungsmuster: In der Datenquelle können Formatierungsmuster für einige oder alle Spalten definiert werden. Sie können dieses Muster durch Einfügen einer Formatklausel überschreiben.
In allen Beispielen verwendete Tabelle:
In diesem Abschnitt beziehen sich alle Beispielabfragen auf die folgende Tabelle. Die Spaltenüberschriften sind die Spaltenkennzeichnungen.
Namestring |
deptstring |
lunchTimetimeofday |
Gehalt number |
hireDatedate |
Alternumber |
isSeniorboolean |
seniorityStartTimedatetime |
---|---|---|---|---|---|---|---|
John | Kleinbuchstabe Eng | 12:00:00 | 1000 | 2005-03-19 | 35 | true | 02.12.2007 15:56:00 |
Dave | Kleinbuchstabe Eng | 12:00:00 | 500 | 2006-04-19 | 27 | false | null |
Sandra | Kleinbuchstabe Eng | 13:00:00 | 600 | 2005-10-10 | 30 | false | null |
Benno | Umsätze | 12:00:00 | 400 | 2002-10-10 | 32 | true | 09.03.2005 12:30:00 |
Logo: Daniela | Umsätze | 12:00:00 | 350 | 2004-09-08 | 25 | false | null |
Michael | Marketing | 13:00:00 | 800 | 2005-01-10 | 24 | true | 30.12.2007 14:40:00 |
Sprachklauseln
Die Syntax der Abfragesprache setzt sich aus den folgenden Klauseln zusammen. Jede Klausel beginnt mit einem oder zwei Schlüsselwörtern. Alle Klauseln sind optional. Klauseln werden durch Leerzeichen getrennt. Die Reihenfolge der Klauseln muss wie folgt aussehen:
Klausel | Nutzung |
---|---|
select |
Bestimmt, welche Spalten zurückgegeben werden sollen und in welcher Reihenfolge. Wenn nichts angegeben ist, werden alle Spalten der Tabelle in ihrer Standardreihenfolge zurückgegeben. |
where |
Gibt nur Zeilen zurück, die eine Bedingung erfüllen. Wenn keine Angabe gemacht wird, werden alle Zeilen zurückgegeben. |
group by |
Aggregiert Werte zeilenübergreifend. |
pivot |
Wandelt einzelne Werte in Spalten in neue Spalten um. |
order by |
Sortiert Zeilen nach Werten in Spalten. |
limit |
Begrenzt die Anzahl der zurückgegebenen Zeilen. |
offset |
Überspringt eine bestimmte Anzahl von ersten Zeilen. |
label |
Legt die Spaltenbeschriftungen fest. |
format |
Formatiert die Werte in bestimmten Spalten mithilfe vorgegebener Formatierungsmuster. |
options |
Legt zusätzliche Optionen fest. |
from |
Die Klausel from wurde aus der Sprache entfernt. |
Wählen Sie
Die select
-Klausel wird verwendet, um die zurückzugebenden Spalten und ihre Reihenfolge anzugeben.
Wenn diese Klausel nicht angegeben ist oder select *
verwendet wird, werden alle Spalten der Datenquellentabelle in ihrer ursprünglichen Reihenfolge zurückgegeben.
Auf die Spalten wird durch die Kennungen (nicht durch Labels) verwiesen. In einer Google-Tabelle ist die Spaltenkennung beispielsweise der ein- oder zweistellige Spaltenbuchstaben (A, B, C, ...).
Elemente in einer select
-Klausel können Spaltenkennungen oder die Ausgabe von Aggregationsfunktionen, Skalarfunktionen oder Operatoren sein.
Beispiele:
select *
select dept, salary
select max(salary)
Im folgenden Beispiel werden Back-Anführungszeichen verwendet, um auf Spalten-IDs zu verweisen, die Leerzeichen (E-Mail-Adresse) oder reservierte Wörter (Datum) enthalten:
select `email address`, name, `date`
Durch Ausführen der folgenden Abfrage an der Beispieltabelle:
select lunchTime, name
Gibt die folgende Antwort zurück:
lunchTime | name |
---|---|
12:00:00 | John |
12:00:00 | Dave |
13:00:00 | Sandra |
12:00:00 | Benno |
12:00:00 | Logo: Daniela |
13:00:00 | Michael |
Wo
Mit der where
-Klausel werden nur Zeilen zurückgegeben, die eine bestimmte Bedingung erfüllen.
Die einfachen Vergleichsoperatoren sind <=, <, >, >=, =,
!=, <>
. Die beiden Vergleichsoperatoren != <>
bedeuten nicht gleich. Strings werden anhand des lexikografischen Werts verglichen. Beachten Sie, dass die Gleichheit wie in den meisten Computersprachen durch =
und nicht durch ==
angegeben wird.
Der Vergleich mit null
erfolgt mithilfe von is null
oder is not null
.
Sie können mehrere Bedingungen mithilfe der logischen Operatoren and
, or
und not
verknüpfen. Klammern können verwendet werden, um eine explizite Rangfolge zu definieren.
Die WHERE-Klausel unterstützt auch einige komplexere Stringvergleichsoperatoren.
Diese Operatoren akzeptieren zwei Strings als Argumente. Alle Nicht-String-Argumente (z. B. Datumsangaben oder Zahlen) werden vor dem Vergleich in Strings umgewandelt. Beim Stringabgleich wird zwischen Groß- und Kleinschreibung unterschieden. Sie können dies mit den skalaren Funktionen upper()
oder lower()
umgehen.
contains
: Eine Teilstring-Übereinstimmung. ganzecontains
part ist "true", wenn part innerhalb von ganze liegt. Beispiel:where name contains 'John'
stimmt mit „John“, 'John Adams', 'Long John Silver', aber nicht mit 'john adams' überein.starts with
: Eine Präfixübereinstimmung. Wertstarts with
Präfix ist "true", wenn prefix am Anfang von value steht. Beispiele:where dept starts with 'engineering'
entspricht „engineering“ und „engineering manager“.where dept starts with 'e'
stimmt mit "engineering", "eng" und "e" überein.ends with
: Eine Suffixübereinstimmung. Wertends with
Suffix ist "true", wenn das Suffix am Ende von Wert steht. Beispiel:where role ends with 'y'
stimmt mit „cowboy“, „boy“ und „y“ überein.matches
: Eine Übereinstimmung mit einem regulären Ausdruck (preg). haystackmatches
needle ist „true“, wenn der reguläre Ausdruck in needle mit haystack übereinstimmt. Beispiele:where country matches '.*ia'
entspricht Indien und Nigeria, aber nicht Indiana. Dies ist keine globale Suche, d. h.,where country matches 'an'
liefert keine Ergebnisse für "Kanada".like
: eine Textsuche, die zwei Platzhalter unterstützt: %, das null oder mehr Zeichen beliebiger Art zurückgibt, und _ (Unterstrich), das einem beliebigen Zeichen entspricht. Dies ähnelt dem SQL-Operator LIKE. Beispiel:where name like fre%
stimmt mit „fre“, „fred“ und „freddy“ überein.
Beispiele:
where salary >= 600 where dept != 'Eng' and date '2005-01-21' < hireDate where (dept<>'Eng' and isSenior=true) or (dept='Sales') or seniorityStartTime is null
Durch Ausführen der folgenden Abfrage an der Beispieltabelle:
select name where salary > 700
Gibt die folgende Antwort zurück:
name |
---|
John |
Michael |
Gruppieren nach
Die group by
-Klausel wird verwendet, um Werte zeilenübergreifend zusammenzufassen.
Für jede eindeutige Wertekombination in der Group-by-Klausel wird eine einzelne Zeile erstellt.
Die Daten werden automatisch nach den Gruppierungsspalten sortiert, sofern durch eine order by
-Klausel nichts anderes angegeben ist.
Hinweis:Wenn Sie eine group by
-Klausel verwenden, muss jede Spalte, die in der select
-Klausel aufgeführt ist, entweder in der group by
-Klausel aufgeführt oder von einer Aggregationsfunktion eingeschlossen sein.
Beispiele:
select dept, max(salary) group by dept
Durch Ausführen der folgenden Abfrage an der Beispieltabelle:
select lunchTime, avg(salary), count(age) group by isSenior,lunchTime
Gibt die folgende Antwort zurück:
lunchTime | Durchschnittsgehalt | Anzahl-Alter |
---|---|---|
12:00:00 | 425 | 2 |
13:00:00 | 600 | 1 |
12:00:00 | 700 | 2 |
13:00:00 | 800 | 1 |
Pivot-Tabelle
Die pivot
-Klausel wird verwendet, um verschiedene Werte in Spalten in neue Spalten umzuwandeln. Ein Pivot-Vorgang um die Spalte „year“ würde beispielsweise eine Tabelle mit einer Spalte für jedes einzelne Jahr erzeugen, das in der ursprünglichen Tabelle vorkommt.
Dies kann beispielsweise nützlich sein, wenn in einer Liniendiagramm-Visualisierung jede Spalte als separate Linie gezeichnet wird. Wenn Sie für jedes Jahr eine separate Linie zeichnen möchten und "year" eine der Spalten der ursprünglichen Tabelle ist, bietet sich eine Pivot-Operation an, um die erforderliche Datentransformation durchzuführen.
Hinweis: Wenn Sie eine pivot
-Klausel verwenden, muss jede Spalte, die in der select
-Klausel aufgeführt ist, entweder in der group by
-Klausel aufgelistet oder von einer Aggregationsfunktion eingeschlossen sein.
Da mehrere Zeilen dieselben Werte für die Pivot-Spalten enthalten können, impliziert „Pivot“ eine Aggregation. Wenn Sie pivot
ohne group by
verwenden, enthält die Ergebnistabelle genau eine Zeile.
Führen Sie beispielsweise die folgende Abfrage an der Beispieltabelle aus:
select sum(salary) pivot dept
Gibt die folgende Antwort zurück:
Englisch – Summengehalt | Marketing-Gesamtgehalt | Gesamtgehalt Umsatz |
---|---|---|
2.100 | 800 | 750 |
Das liegt daran, dass 2.100 die Summe der Gehälter für die Abteilung „EG“, 800 für die Marketingabteilung usw. ist.
Die Verwendung von pivot
zusammen mit group by
kann noch nützlicher sein, da dabei eine Tabelle erstellt wird, in der jede Zelle das Ergebnis der Aggregation für die relevante Zeile und die entsprechende Spalte enthält. Führen Sie beispielsweise die folgende Abfrage an der Beispieltabelle aus:
select dept, sum(salary) group by dept pivot lunchTime
Gibt die folgende Antwort zurück:
dept | 12:00:00 Gesamtgehalt | 13:00:00 Gesamtgehalt |
---|---|---|
Kleinbuchstabe Eng | 1.500 | 600 |
Marketing | null | 800 |
Umsätze | 750 | null |
Sie können diese Tabelle auch "umkehren" und dabei zwischen den Spalten und Zeilen wechseln, indem Sie zwischen den pivot
- und group by
-Spalten wechseln. Durch Ausführen der folgenden Abfrage an der Beispieltabelle:
select lunchTime, sum(salary) group by lunchTime pivot dept
Gibt die folgende Antwort zurück:
lunchTime | Englisch – Summengehalt | Marketing-Gesamtgehalt | Gesamtgehalt Umsatz |
---|---|---|---|
12:00:00 | 1.500 | null | 750 |
13:00:00 | 600 | 800 | null |
Sie können in der pivot
-Klausel auch mehr als eine Spalte verwenden. In diesem Fall bestehen die Spalten der Antworttabelle aus allen eindeutigen Kombinationen von Werten in den Spalten, die in der ursprünglichen Tabelle vorhanden sind. Führen Sie beispielsweise die folgende Abfrage an der Beispieltabelle aus:
select sum(salary) pivot dept, lunchTime
Gibt die folgende Antwort zurück:
Eng,12:00:00 Summengehalt | Eng,13:00:00 Summengehalt | Marketing,13:00:00 Gesamtgehalt | Sales,12:00:00 Gesamtgehalt |
---|---|---|---|
1.500 | 600 | 800 | 750 |
Nur die in der ursprünglichen Tabelle aufgeführten Kombinationen werden in der Antworttabelle in Spalten aufgenommen. Deshalb gibt es keine Spalte für Marketing,12:00:00 oder für Vertrieb,13:00:00.
Sie können auch mehr als eine Aggregation verwenden. Führen Sie beispielsweise die folgende Abfrage für die Beispieltabelle aus:
select sum(salary), max(lunchTime) pivot dept
Gibt die folgende Antwort zurück:
Englisch – Summengehalt | Marketing-Gesamtgehalt | Gesamtgehalt Umsatz | Englisch max-lunchTime | Marketing-Maximal-Mittagzeit | Max. Mittagszeit Sales |
---|---|---|---|---|---|
2.100 | 800 | 750 | 13:00:00 | 13:00:00 | 12:00:00 |
Sie können mehrere Aggregationen in der select
-Klausel, mehrere Spalten in der group by
-Klausel und mehrere Spalten in der pivot
-Klausel kombinieren. Intern erfolgt die Aggregation durch die Verkettung der Spalten in den group by- und pivot-Klauseln.
Spalten, die in der pivot
-Klausel angegeben sind, dürfen nicht in den select
-, group by
- oder order by
-Klauseln vorkommen.
Bei Verwendung von pivot
darf die order by
-Klausel keine Aggregationsspalten enthalten. Der Grund dafür ist, dass für jede in der select
-Klausel angegebene Aggregation viele Spalten in der Ergebnistabelle generiert werden. Sie können Aggregationsspalten jedoch formatieren, wenn pivot
verwendet wird. Das Ergebnis eines solchen Formats ist, dass alle neuen Spalten, die für die spezifische Aggregation relevant sind und die durch den Pivot-Vorgang generiert werden, nach dem angegebenen Muster formatiert werden. Im Beispiel oben wirkt sich das Hinzufügen von format sum(salary) "some_format_string"
auf die folgenden Spalten aus: „Eng sum-salary“, „Marketing sum-salary“ und „Sales sum-salary“.
Sie können Aggregationsspalten mit Labels versehen. Wenn in der label
-Klausel kein Label angegeben ist, setzt sich das Label einer Spalte, die durch das Drehen erzeugt wird, aus der Liste der Werte in den Pivot-Spalten, dem Aggregationstyp (Min., Max, Summe, ...) und dem Label der aggregierten Spalte zusammen.
Beispiel: „Eng,12:00:00 Summe Gehalt“. Wenn in der select
-Klausel nur eine Aggregation angegeben wurde, wird der Aggregationsteil aus dem Label entfernt und nur die Liste der Werte in den Pivot-Spalten wird beibehalten. Beispiel: „Eng,12:00:00“. Wenn in einer label
-Klausel ein Label für eine Aggregationsspalte angegeben wird, wird das angeforderte Label an die Liste von Werten angehängt. Dies gilt sowohl, wenn die select
-Klausel nur eine Aggregation als auch mehrere enthält. label sum(salary) "sumsal"
führt beispielsweise zu den Spaltenlabels "Eng,12:00:00 sumsal", "Eng,13:00:00 sumsal" usw.
Sortieren nach
Die order by
-Klausel wird verwendet, um die Zeilen nach den Werten in bestimmten Spalten zu sortieren.
Elemente in einer order by
-Klausel können Spaltenkennungen oder die Ausgabe von Aggregationsfunktionen, Skalarfunktionen oder Operatoren sein.
Beispiele:
order by dept, salary desc
select dept, max(salary) group by dept order by max(salary)
Limit
Die limit
-Klausel wird verwendet, um die Anzahl der zurückgegebenen Zeilen zu begrenzen.
Example:
limit 100
Versatz
Mit der offset
-Klausel wird eine bestimmte Anzahl von ersten Zeilen übersprungen.
Wenn eine limit
-Klausel verwendet wird, wird zuerst offset
angewendet. So gibt limit 15 offset
30
beispielsweise die Zeilen 31 bis 45 zurück.
Beispiele:
offset 10 limit 30 offset 210
Label
Die label
-Klausel wird verwendet, um das Label für eine oder mehrere Spalten festzulegen.
Beachten Sie, dass Sie in einer Abfrage keinen Labelwert anstelle einer ID verwenden können.
Elemente in einer label
-Klausel können Spaltenkennungen oder die Ausgabe von Aggregationsfunktionen, Skalarfunktionen oder Operatoren sein.
Syntax:
label column_id label_string [,column_id label_string]
column_id
- Die Kennzeichnung der Spalte, der das Label zugewiesen wird.
label_string
- Das Label, das dieser Spalte zugewiesen werden soll. In vielen Visualisierungen wird die Spaltenbeschriftung als Text verwendet, der dem Endnutzer angezeigt werden soll, z. B. als Legendenlabel in einem Kreisdiagramm. Labels sind Stringliterale und folgen diesen Syntaxregeln.
Example:
Im folgenden Beispiel wird das Label für die Spalte „dept“ auf „Abteilung“, das Label für die Spalte „Name“ auf „Employee Name“ und das Label für die Standortspalte auf „Employee Location“ (Mitarbeiterstandort) festgelegt:
label dept 'Department', name "Employee Name", location 'Employee Location'
Format
Mit der format
-Klausel wird ein formatierter Wert für Zellen in einer oder mehreren Spalten angegeben. Die zurückgegebenen Daten sollten sowohl einen tatsächlichen Wert als auch einen formatierten Wert für jede Zelle in einer formatierten Spalte enthalten. In vielen Visualisierungen wird der unformatierte Wert für Berechnungen verwendet, aber der formatierte Wert für die Anzeige. Die in dieser Klausel angegebenen Muster werden normalerweise im Attribut pattern der entsprechenden Spalten zurückgegeben.
Mustersyntax:
number
,date
,timeofday
,datetime
- Das Datum und die Zahlmuster, die von der ICU definiert wurden.
-
boolean
- Muster ist ein
string
im Format „value-if-true:value-if-false“.
Example:
format salary '#,##0.00', hireDate 'dd-MMM-yyyy', isSenior 'Yes!:Not yet'
Optionen
Mit der options
-Klausel werden zusätzliche Optionen für die Abfrageausführung gesteuert. Folgende Schlüsselwörter können der options
-Klausel folgen:
-
no_format
Entfernt formatierte Werte aus dem Ergebnis und lässt nur die zugrunde liegenden Werte zurück. Kann verwendet werden, wenn in der jeweiligen Visualisierung nicht die formatierten Werte verwendet werden, um die Größe der Antwort zu reduzieren. -
no_values
Entfernt zugrunde liegende Werte aus dem Ergebnis und lässt nur die formatierten Werte zurück. Kann verwendet werden, wenn in der jeweiligen Visualisierung nur die formatierten Werte verwendet werden, um die Größe der Antwort zu reduzieren.
Datenbearbeitungsfunktionen
Es gibt verschiedene Arten von Operatoren und Funktionen, mit denen Sie Daten in einer einzelnen Spalte bearbeiten oder aggregieren oder Daten spaltenübergreifend vergleichen oder kombinieren können. Beispiele sind sum() (um alle Werte in einer Spalte zu addieren), max (um den größten Wert in einer Spalte zu finden) und + (um die Werte zweier Spalten in derselben Zeile zusammenzuzählen).
Einige Funktionen können in jeder Klausel, andere in einer Teilmenge von Klauseln vorkommen. Dies wird im Folgenden dokumentiert.
Example:
Anhand dieser Tabelle... | Wenn wir diese Abfrage anwenden... | Wir erhalten dieses Ergebnis. | ||||||||||||||||||||||||
|
select upper(name), year(startDate) |
|
Die folgenden Datenbearbeitungsfunktionen werden in der Abfragesprache der Google Visualization API definiert:
Aggregationsfunktionen
Aggregationsfunktionen werden als Kennung einer einzelnen Spalte übergeben und führen eine Aktion für alle Werte in jeder Gruppe aus. Gruppen werden durch group by
- oder pivot
-Klauseln oder alle Zeilen angegeben, wenn diese Klauseln nicht verwendet werden.
Beispiele:
select max(salary) // Returns a table with one column and one row. select max(salary) group by dept // Returns a table with the max salary for each dept column value. select max(salary) pivot dept // Returns a one-row table with a column for each dept, // and the max salary for that department.
Aggregationsfunktionen können in select
-, order by
-, label
- und format
-Klauseln verwendet werden.
Sie dürfen nicht in den Klauseln where
, group by
, pivot
, limit
, offset
oder options
vorkommen.
Folgende Aggregationsfunktionen werden unterstützt:
Name | Beschreibung | Unterstützte Spaltentypen | Rückgabetyp |
---|---|---|---|
avg() |
Gibt den Durchschnittswert aller Werte in der Spalte für eine Gruppe zurück. | number |
number |
count() |
Gibt die Anzahl der Elemente in der angegebenen Spalte für eine Gruppe zurück. Nullzellen werden nicht gezählt. | Beliebiger Typ | number |
max() |
Gibt den Maximalwert in der Spalte für eine Gruppe zurück. Daten werden verglichen mit früheren Werten, die kürzer sind, string s werden alphabetisch unter Beachtung der Groß- und Kleinschreibung verglichen. |
Beliebiger Typ | Gleicher Typ wie Spalte |
min() |
Gibt den Minimalwert in der Spalte für eine Gruppe zurück. Daten werden verglichen mit früheren Werten, string -Werte werden alphabetisch unter Beachtung der Groß- und Kleinschreibung verglichen |
Beliebiger Typ | Gleicher Typ wie Spalte |
sum() |
Gibt die Summe aller Werte in der Spalte für eine Gruppe zurück. | number |
number |
Hinweis:Aggregationsfunktionen können nur eine Spaltenkennung als Argument annehmen:
max(startDate) // OK min(firstScore) + min(secondScore) // OK max(year(startDate)) // INVALID. max requires column ID sum(salary + perks) // INVALID. sum requires column ID.
Skalare Funktionen
Skalarfunktionen arbeiten mit null oder mehr Parametern, um einen anderen Wert zu erzeugen. Skalarfunktionen können an jeden Ausdruck übergeben werden, der als Parameter des entsprechenden Typs ausgewertet wird. Diese Typen sind die im Abschnitt Literale dieses Dokuments definierten Typen. Sie können sich geringfügig von den JavaScript-Objekten mit ähnlichen Namen unterscheiden.
Beachten Sie, dass der Spaltenname geändert wird, indem er in eine Skalarfunktion eingeschlossen wird.
Skalarfunktionen können alles, was einen einzelnen Wert ergibt, als Parameter annehmen:
year(max(startDate)) datediff(now(), todate(1234567890000))
Skalarfunktionen können in jeder der folgenden Klauseln verwendet werden: select
, where
, group by
, pivot
, order by
, label,
und
format
.
Name | |
---|---|
year() |
Gibt den Jahreswert aus einem date- oder datetime-Wert zurück. Beispiel: Parameter:Ein Parameter vom Typ
date oder datetime Rückgabetyp:
number |
month() |
Gibt den nullbasierten Monatswert aus einem Datums- oder Datum/Uhrzeit-Wert zurück. Beispiel: Parameter:Ein Parameter vom Typ
date oder datetime Rückgabetyp:
number |
day() |
Gibt den Tag des Monats aus einem Parameter:Ein Parameter vom Typ
date oder datetime Rückgabetyp:
number |
hour() |
Gibt den Stundenwert aus einem Datetime- oder Parameter:Ein Parameter vom Typ
datetime oder timeofday Rückgabetyp:
number |
minute() |
Gibt den Minutenwert aus einem Parameter:Ein Parameter vom Typ
datetime oder timeofday Rückgabetyp:
number |
second() |
Gibt den zweiten Wert aus einem Parameter:Ein Parameter vom Typ
datetime oder timeofday Rückgabetyp:
number |
millisecond() |
Gibt den Millisekundenteil eines Parameter:Ein Parameter vom Typ
datetime oder timeofday Rückgabetyp:
number |
quarter() |
Gibt das Quartal aus einem Parameter:Ein Parameter vom Typ
date oder datetime Rückgabetyp:
number |
dayOfWeek() |
Gibt den Wochentag aus einem Parameter:Ein Parameter vom Typ
date oder datetime Rückgabetyp:
number |
now() |
Gibt einen Datum/Uhrzeit-Wert zurück, der den aktuellen Parameter:Keine
Rückgabetyp:
datetime |
dateDiff() |
Gibt die Differenz in Tagen zwischen zwei Parameter:Zwei Parameter vom Typ
date oder datetime (jeweils einer)Rückgabetyp:
number |
toDate() |
Wandelt den angegebenen Wert in einen
Parameter:Ein Parameter vom Typ
date , datetime oder number Rückgabetyp:
date |
upper() |
Gibt das angegebene Parameter:Ein Parameter vom Typ
string Rückgabetyp:
string |
lower() |
Gibt das angegebene Parameter:Ein Parameter vom Typ
string Rückgabetyp:
string |
Arithmetische Operatoren
Sie können arithmetische Operatoren verwenden, um mathematische Operationen auf alles anzuwenden, was als eine einzelne Zahl ausgewertet wird (d. h. die Ausgabe geeigneter Aggregatfunktionen, Operatoren oder Konstanten).
Beispiele:
select empSalary - empTax select 2 * (max(empSalary) / max(empTax))
Folgende Operatoren sind definiert:
Name | Beschreibung | Parameter | Rückgabetyp |
---|---|---|---|
+ |
Gibt die Summe zweier number -Werte zurück. |
Zwei number |
number |
- |
Gibt die Differenz zwischen zwei number -Werten zurück. |
Zwei number |
number |
* |
Gibt das Produkt zweier number s zurück. |
Zwei number |
number |
/ |
Gibt den Quotienten aus zwei number -Werten zurück. Die Division durch null gibt null zurück. |
Zwei number |
number |
Sprachelemente
Literale
Literale sind Werte, die für Vergleiche oder Zuweisungen verwendet werden. Literale können string
-Werte, Zahlen, boolesche Werte oder verschiedene Datums-/Uhrzeittypen sein. Hier sind einige Beispiele für Literale, die in der Abfragesyntax verwendet werden:
where startDate < date "2008-03-18" // date "2008-03-18" is a date literal
limit 30 // 30 is a numeric literal
format salary '#,##0.00', isSenior 'not yet:of course!' // '#,##0.00' and 'not yet:of course!' are both string
literals
Hier sind die Formate für die einzelnen Literaltypen:
string
Ein
string
-Literal muss entweder in einfache oder doppelte Anführungszeichen gesetzt werden. Beispiele:"fourteen" 'hello world' "It's raining"
.-
number
- Numerische Literale werden in Dezimalschreibweise angegeben.
Beispiele:
3 3.0 3.14 -71 -7.2 .6
-
boolean
- Boolesche Literale sind entweder
true
oderfalse
. -
date
- Verwenden Sie das Schlüsselwort
date
, gefolgt von einemstring
-Literal im Formatyyyy-MM-dd
. Beispiel:date "2008-03-18"
. -
timeofday
- Verwenden Sie das Schlüsselwort
timeofday
gefolgt von einemstring
-Literal im FormatHH:mm:ss[.SSS]
. Beispiel:timeofday "12:30:45"
. -
datetime
- Ein Datum und eine Uhrzeit, wobei entweder das Schlüsselwort
datetime
oder das Schlüsselworttimestamp
gefolgt von einemstring
-Literal im Formatyyyy-MM-dd HH:mm:ss[.sss]
verwendet wird. Beispiel:datetime '2008-03-18 12:30:34.123'
Kennungen
Kennungen (oder IDs) sind Text-string
s, die Spalten identifizieren.
Wichtig:Wenn Ihre Kennung
- Mit Leerzeichen
- ein reserviertes Wort ist,
- Enthält alles außer alphanumerische Zeichen oder Unterstriche ([a-zA-Z0-9_]) oder
- Beginnt mit einer Ziffer
Er muss in umgekehrten Anführungszeichen gesetzt werden (nicht in einfachen Anführungszeichen).
Andernfalls muss die ID nicht in Anführungszeichen gesetzt werden. Nicht alle durch die Syntax definierten Keywords sind reservierte Wörter. Sie können beispielsweise "max" als Kennung verwenden, ohne ihn in Anführungszeichen setzen zu müssen.
Beispiele: col1 employee_table `start
date` `7 days traffic` `select`
Wir raten davon ab, eine Kennung zu verwenden, die Anführungszeichen erfordert. Andernfalls kann es leicht passieren, dass man vergessen, die Anführungszeichen zu verwenden, oder versehentlich "einfache Anführungszeichen" anstelle von "Anführungszeichen" verwendet wird. Dies sind häufige Fehler, die oft schwer zu beheben sind.
Groß-/Kleinschreibung
Bei IDs und Stringliteralen wird zwischen Groß- und Kleinschreibung unterschieden. Bei allen anderen Sprachelementen wird die Groß-/Kleinschreibung nicht berücksichtigt.
Reservierte Wörter
Die folgenden reservierten Wörter müssen in Anführungszeichen gesetzt werden, wenn sie als Kennung verwendet werden:
and asc by date datetime desc false format group label limit not offset options or order pivot select timeofday timestamp true where