Query Language-Referenz (Version 0.7)

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 und timeofday. Alle Werte einer Spalte haben einen Datentyp, der dem Spaltentyp entspricht, oder einen null-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.

Name
string
dept
string
lunchTime
timeofday
Gehalt
number
hireDate
date
Alter
number
isSenior
boolean
seniorityStartTime
datetime
JohnKleinbuchstabe Eng12:00:00
1000
2005-03-1935true02.12.2007 15:56:00
DaveKleinbuchstabe Eng12:00:00
500
2006-04-1927falsenull
SandraKleinbuchstabe Eng13:00:00
600
2005-10-1030falsenull
BennoUmsätze12:00:00
400
2002-10-1032true09.03.2005 12:30:00
Logo: DanielaUmsätze12:00:00
350
2004-09-0825falsenull
MichaelMarketing13:00:00
800
2005-01-1024true30.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:00John
12:00:00Dave
13:00:00Sandra
12:00:00Benno
12:00:00Logo: Daniela
13:00:00Michael

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. ganze contains 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. Wert starts 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. Wert ends 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). haystack matches 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.
Name Gehalt Steuer StartDate
Sharon 1000 100 01.01.2009
Avital 2.000 200 21.01.2008
Moran 3.000 300 12.02.2008
select upper(name), year(startDate)
Name year(StartDate)
AVITAL 2008
Moran 2008
SHARON 2009

 

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, strings 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: year(date "2009-02-05") gibt 2009 zurück.

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: month(date "2009-02-05") gibt 1 zurück. Hinweis: Die Monate sind 0-basiert, sodass die Funktion 0 für Januar, 1 für Februar usw. zurückgibt.

Parameter:Ein Parameter vom Typ date oder datetime
Rückgabetyp: number
day()

Gibt den Tag des Monats aus einem date- oder Datum/Uhrzeit-Wert zurück. Beispiel: day(date "2009-02-05") gibt 5 zurück.

Parameter:Ein Parameter vom Typ date oder datetime
Rückgabetyp: number
hour()

Gibt den Stundenwert aus einem Datetime- oder timeofday-Wert zurück. Beispiel: hour(timeofday "12:03:17") gibt 12 zurück.

Parameter:Ein Parameter vom Typ datetime oder timeofday
Rückgabetyp: number
minute()

Gibt den Minutenwert aus einem datetime- oder timeofday-Wert zurück. Beispiel: minute(timeofday "12:03:17") gibt 3 zurück.

Parameter:Ein Parameter vom Typ datetime oder timeofday
Rückgabetyp: number
second()

Gibt den zweiten Wert aus einem datetime- oder timeofday-Wert zurück. Beispiel: second(timeofday "12:03:17") gibt 17 zurück.

Parameter:Ein Parameter vom Typ datetime oder timeofday
Rückgabetyp: number
millisecond()

Gibt den Millisekundenteil eines datetime- oder timeofday-Werts zurück. Beispiel: millisecond(timeofday "12:03:17.123") gibt 123 zurück.

Parameter:Ein Parameter vom Typ datetime oder timeofday
Rückgabetyp: number
quarter()

Gibt das Quartal aus einem date- oder datetime-Wert zurück. Beispiel: quarter(date "2009-02-05") gibt 1 zurück. Beachten Sie, dass Quartale 1-basiert sind, sodass die Funktion 1 für das erste Quartal, 2 für das zweite usw. zurückgibt.

Parameter:Ein Parameter vom Typ date oder datetime
Rückgabetyp: number
dayOfWeek()

Gibt den Wochentag aus einem date- oder datetime-Wert zurück. Beispiel: dayOfWeek(date "2009-02-26") gibt 5 zurück. Beachten Sie, dass die Tage 1-basiert sind, sodass die Funktion 1 für Sonntag, 2 für Montag usw. zurückgibt.

Parameter:Ein Parameter vom Typ date oder datetime
Rückgabetyp: number
now()

Gibt einen Datum/Uhrzeit-Wert zurück, der den aktuellen datetime in der GMT-Zeitzone darstellt.

Parameter:Keine
Rückgabetyp: datetime
dateDiff()

Gibt die Differenz in Tagen zwischen zwei date- oder datetime-Werten zurück. Hinweis: In der Berechnung werden nur die date-Teile der Werte verwendet. Daher gibt die Funktion immer einen Ganzzahlwert zurück. Beispiel: dateDiff(date "2008-03-13", date "2008-02-12") gibt 29 zurück; dateDiff(date "2009-02-13", date "2009-03-13") gibt -29 zurück. Zeitwerte werden vor dem Vergleich abgeschnitten.

Parameter:Zwei Parameter vom Typ date oder datetime (jeweils einer)
Rückgabetyp: number
toDate()

Wandelt den angegebenen Wert in einen date-Wert um.

  • Bei date wird derselbe Wert zurückgegeben.
  • Bei einem datetime wird der date-Teil zurückgegeben. Beispiel: toDate(dateTime "2009-01-01 12:00:00") gibt „2009-01-01“ zurück.
  • Bei einem number N werden date N Millisekunden nach der Epoche zurückgegeben. Die Epoche ist der 1. Januar 1970, 00:00:00 GMT. Beispiel: toDate(1234567890000) gibt „2009-02-13“ zurück.
Parameter:Ein Parameter vom Typ date, datetime oder number
Rückgabetyp: date
upper()

Gibt das angegebene string in Großbuchstaben zurück. Beispiel: upper("foo") gibt „FOO“ zurück.

Parameter:Ein Parameter vom Typ string
Rückgabetyp: string
lower()

Gibt das angegebene string in Kleinbuchstaben zurück. Beispiel: lower("Bar") gibt „bar“ zurück.

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 numbers 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 oder false.
date
Verwenden Sie das Schlüsselwort date, gefolgt von einem string-Literal im Format yyyy-MM-dd. Beispiel: date "2008-03-18".
timeofday
Verwenden Sie das Schlüsselwort timeofday gefolgt von einem string-Literal im Format HH:mm:ss[.SSS]. Beispiel:timeofday "12:30:45".
datetime
Ein Datum und eine Uhrzeit, wobei entweder das Schlüsselwort datetime oder das Schlüsselwort timestamp gefolgt von einem string-Literal im Format yyyy-MM-dd HH:mm:ss[.sss] verwendet wird. Beispiel:datetime '2008-03-18 12:30:34.123'

Kennungen

Kennungen (oder IDs) sind Text-strings, 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