← Analytics / analytics / analytics-engine / sql-reference
Příkazy
Příkaz SHOW TABLES
SHOW TABLES lze použít k výpisu tabulek ve vašem účtu. Název tabulky odpovídá názvu, který jste zadali jako dataset při konfiguraci bindingu Workers (viz Začínáme s Workers Analytics Engine, kde najdete další informace). Tabulka se automaticky vytvoří, jakmile do svého workeru zapíšete data události.
SHOW TABLES
[FORMAT <format>]Viz Klauzule FORMAT pro dostupné FORMAT možnosti.
Příkaz SHOW TIMEZONES
SHOW TIMEZONES lze použít k výpisu všech časových pásem podporovaných SQL API. Podporována jsou nejběžnější časová pásma.
SHOW TIMEZONES
[FORMAT <format>]Příkaz SHOW TIMEZONE
SHOW TIMEZONE vrací aktuální výchozí časové pásmo používané SQL API. To by mělo být vždy Etc/UTC.
SHOW TIMEZONE
[FORMAT <format>]Příkaz SELECT
SELECT se používá k dotazování tabulek.
Použití:
SELECT <expression_list>
[FROM <table>|(<subquery>)]
[WHERE <expression>]
[GROUP BY <expression>, ...]
[HAVING <expression>]
[ORDER BY <expression_list>]
[LIMIT <n>|ALL]
[FORMAT <format>]Níže najdete syntaxi jednotlivých klauzulí. Podívejte se na SQL API dokumentaci, kde najdete ukázkové dotazy.
Klauzule SELECT
SELECT klauzule určuje seznam sloupců, které mají být zahrnuty do výsledku.
Sloupcům lze přiřadit alias pomocí AS klíčové slovo.
Použití:
SELECT <expression> [AS <alias>], ...Příklady:
-- return the named columns
SELECT blob2, double3
-- return all columns
SELECT *
-- alias columns to more descriptive names
SELECT
blob2 AS probe_name,
double3 AS temperatureKromě toho výrazy používající podporované funkce a operátory lze použít místo názvů sloupců:
SELECT
blob2 AS probe_name,
double3 AS temp_c,
double3*1.8+32 AS temp_f -- compute a value
SELECT
blob2 AS probe_name,
if(double3 <= 0, 'FREEZING', 'NOT FREEZING') AS description -- use of functions
SELECT
blob2 AS probe_name,
avg(double3) AS avg_temp -- aggregation functionKlauzule FROM
FROM se používá k určení zdroje dat pro dotaz.
Použití:
FROM <table_name>|(subquery)Příklady:
-- query data written to a workers dataset called "temperatures"
FROM temperatures
-- use a subquery to manipulate the table
FROM (
SELECT
blob1 AS probe_name,
count() as num_readings
FROM
temperatures
GROUP BY
probe_name
)Dotazy mohou pracovat pouze s jednou tabulkou. UNION, JOIN atd. nejsou v současné době podporovány.
Klauzule WHERE
WHERE se používá k filtrování řádků vrácených dotazem před seskupením a agregací.
Použití:
WHERE <condition><condition> může být libovolný výraz, který se vyhodnotí jako booleovská hodnota.
Porovnávací operátory lze použít k porovnání hodnot a booleovské operátory lze použít ke kombinování podmínek.
Výrazy obsahující funkce a operátory jsou podporovány.
Chcete-li filtrovat výsledky po seskupení a agregaci, použijte HAVING klauzule místo toho.
Příklady:
-- simple comparisons
WHERE blob1 = 'test'
WHERE double1 = 4
-- inequalities
WHERE double1 > 4
-- use of operators (see below for supported operator list)
WHERE double1 + double2 > 4
WHERE blob1 = 'test1' OR blob2 = 'test2'
-- expression using inequalities, functions and operators
WHERE if(unit = 'f', (temp-32)/1.8, temp) <= 0Klauzule GROUP BY
Při použití agregačních funkcí GROUP BY určuje skupiny, pro které se agregace provádí.
Použití:
GROUP BY <expression>, ...Mějme například tabulku s naměřenými teplotami:
-- return the average temperature for each probe
SELECT
blob1 AS probe_name,
avg(double1) AS average_temp
FROM temperature_readings
GROUP BY probe_nameV obvyklém případě <expression> může být pouze název sloupce, ale je také možné zde uvést složitější výraz. Lze zadat i více výrazů nebo názvů sloupců oddělených čárkami.
Klauzule HAVING New
HAVING se používá k filtrování výsledků po seskupení a agregaci.
Použití:
HAVING <condition><condition> může být libovolný výraz, který se vyhodnotí jako booleovská hodnota, a může odkazovat na agregační funkce nebo seskupené sloupce.
Na rozdíl od WHERE, který filtruje řádky před seskupením, HAVING filtruje skupiny po agregaci. Díky tomu můžete filtrovat podle agregovaných hodnot.
Porovnávací operátory lze použít k porovnání hodnot a booleovské operátory lze použít ke kombinování podmínek.
Příklady:
-- filter groups where the average is greater than 10
SELECT
blob1 AS probe_name,
avg(double1) AS average_temp
FROM temperature_readings
GROUP BY probe_name
HAVING average_temp > 10
-- filter groups with more than 100 readings
SELECT
blob1 AS probe_name,
count() AS num_readings
FROM temperature_readings
GROUP BY probe_name
HAVING num_readings > 100
-- combine multiple conditions
SELECT
blob1 AS city,
avg(double1) AS avg_temp,
count() AS readings
FROM weather_data
GROUP BY city
HAVING avg_temp > 20 AND readings >= 50Klauzule ORDER BY
ORDER BY lze použít k řízení pořadí, v jakém jsou řádky vraceny.
Použití:
ORDER BY <expression> [ASC|DESC], ...<expression> může být pouze název sloupce.
ASC nebo DESC určuje, zda je řazení vzestupné, nebo sestupné. ASC je výchozí a lze jej vynechat.
Příklady:
-- order by double2 then double3, both in ascending order
ORDER BY double2, double3
-- order by double2 in ascending order then double3 is descending order
ORDER BY double2, double3 DESCKlauzule LIMIT
LIMIT určuje maximální počet řádků, které se mají vrátit.
Použití:
LIMIT <n>|ALLZadejte maximální počet řádků, které se mají vrátit, nebo ALL pro žádné omezení.
Například:
LIMIT 10 -- return at most 10 rowsKlauzule OFFSET
OFFSET určuje počet řádků, které se mají ve výsledku dotazu přeskočit.
Použití:
OFFSET <n>Například:
OFFSET 10 -- skip the first 10 result rowsKlauzule FORMAT
FORMAT určuje, jak jsou vrácená data kódována.
Použití:
FORMAT [JSON|JSONEachRow|TabSeparated]Pokud dotaz neobsahuje klauzuli FORMAT, použije se výchozí formát JSON se použije.
Výchozí hodnotu přepište nastavením formátu. Například:
FORMAT JSONEachRowPodporovány jsou následující formáty:
JSON
Data se vrací jako jediný objekt JSON, který obsahuje i data schématu:
{
"meta": [
{
"name": "<column 1 name>",
"type": "<column 1 type>"
},
{
"name": "<column 2 name>",
"type": "<column 2 type>"
},
...
],
"data": [
{
"<column 1 name>": "<column 1 value>",
"<column 2 name>": "<column 2 value>",
...
},
{
"<column 1 name>": "<column 1 value>",
"<column 2 name>": "<column 2 value>",
...
},
...
],
"rows": 10
}JSONEachRow
Data se vrací jako samostatný objekt JSON pro každý řádek. Řádky jsou odděleny znakem nového řádku a neobsahují žádnou hlavičku ani data schématu:
{"<column 1 name>": "<column 1 value>", "<column 2 name>": "<column 2 value>"}
{"<column 1 name>": "<column 1 value>", "<column 2 name>": "<column 2 value>"}
...TabSeparated
Data se vrací v řádcích oddělených znakem nového řádku. Sloupce jsou odděleny tabulátory. Hlavička není součástí výstupu.
column 1 value column 2 value
column 1 value column 2 value
...