← Аналитика / analytics / analytics-engine / sql-reference
Инструкции
Оператор SHOW TABLES
SHOW TABLES можно использовать для получения списка таблиц вашего аккаунта. Имя таблицы соответствует значению, которое вы указали в качестве dataset при настройке биндинга Workers (см. Начало работы с Workers Analytics Engine, где приведены дополнительные сведения). Таблица создаётся автоматически, когда вы записываете данные события в воркере.
SHOW TABLES
[FORMAT <format>]См. Секция FORMAT для доступных FORMAT опции.
Оператор SHOW TIMEZONES
SHOW TIMEZONES можно использовать для получения списка всех часовых поясов, поддерживаемых SQL API. Поддерживаются наиболее распространённые часовые пояса.
SHOW TIMEZONES
[FORMAT <format>]Оператор SHOW TIMEZONE
SHOW TIMEZONE возвращает текущий часовой пояс по умолчанию, который использует SQL API. Это значение должно быть всегда Etc/UTC.
SHOW TIMEZONE
[FORMAT <format>]Оператор SELECT
SELECT используется для запросов к таблицам.
Использование:
SELECT <expression_list>
[FROM <table>|(<subquery>)]
[WHERE <expression>]
[GROUP BY <expression>, ...]
[HAVING <expression>]
[ORDER BY <expression_list>]
[LIMIT <n>|ALL]
[FORMAT <format>]Ниже приведён синтаксис каждого условия. См. SQL API документацию, где приведены примеры запросов.
Секция SELECT
SELECT секция определяет список столбцов, включаемых в результат.
Столбцам можно присвоить псевдоним с помощью AS ключевое слово.
Использование:
SELECT <expression> [AS <alias>], ...Примеры:
-- return the named columns
SELECT blob2, double3
-- return all columns
SELECT *
-- alias columns to more descriptive names
SELECT
blob2 AS probe_name,
double3 AS temperatureКроме того, выражения с использованием поддерживаемых функций и операторы можно использовать вместо имён столбцов:
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 functionСекция FROM
FROM используется для указания источника данных для запроса.
Использование:
FROM <table_name>|(subquery)Примеры:
-- 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
)Обратите внимание, что запросы могут работать только с одной таблицей. UNION, JOIN и т. д. в настоящее время не поддерживаются.
Секция WHERE
WHERE используется для фильтрации строк, возвращаемых запросом, до группировки и агрегации.
Использование:
WHERE <condition><condition> может быть любым выражением, которое вычисляется в логическое значение.
Операторы сравнения можно использовать для сравнения значений, и логические операторы можно использовать для объединения условий.
Выражения, содержащие функции и операторы поддерживаются.
Чтобы отфильтровать результаты после группировки и агрегации, используйте HAVING секция взамен.
Примеры:
-- 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) <= 0Секция GROUP BY
При использовании агрегатных функций, GROUP BY задаёт группы, по которым выполняется агрегация.
Использование:
GROUP BY <expression>, ...Допустим, у вас есть таблица показаний температуры:
-- return the average temperature for each probe
SELECT
blob1 AS probe_name,
avg(double1) AS average_temp
FROM temperature_readings
GROUP BY probe_nameВ обычном случае <expression> может быть просто именем столбца, но здесь также можно указать сложное выражение. Можно указать несколько выражений или имён столбцов, разделённых запятыми.
Условие HAVING Новое
HAVING используется для фильтрации результатов после группировки и агрегации.
Использование:
HAVING <condition><condition> может быть любым выражением, которое вычисляется в логическое значение, и может ссылаться на агрегатные функции или сгруппированные столбцы.
В отличие от WHERE, который фильтрует строки перед группировкой, HAVING фильтрует группы после агрегации. Это позволяет фильтровать по агрегированным значениям.
Операторы сравнения можно использовать для сравнения значений, и логические операторы можно использовать для объединения условий.
Примеры:
-- 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 >= 50Секция ORDER BY
ORDER BY можно использовать для управления порядком возврата строк.
Использование:
ORDER BY <expression> [ASC|DESC], ...<expression> может быть просто именем столбца.
ASC или DESC определяет, идёт ли сортировка по возрастанию или по убыванию. ASC является значением по умолчанию, и его можно опустить.
Примеры:
-- 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 DESCУсловие LIMIT
LIMIT задаёт максимальное количество возвращаемых строк.
Использование:
LIMIT <n>|ALLУкажите максимальное количество возвращаемых строк или ALL для отсутствия ограничений.
Например:
LIMIT 10 -- return at most 10 rowsСекция OFFSET
OFFSET задаёт количество строк, которые нужно пропустить в результате запроса.
Использование:
OFFSET <n>Например:
OFFSET 10 -- skip the first 10 result rowsСекция FORMAT
FORMAT определяет, как кодируются возвращаемые данные.
Использование:
FORMAT [JSON|JSONEachRow|TabSeparated]Если клаузула FORMAT не указана, используется формат по умолчанию JSON будет использоваться.
Переопределите формат по умолчанию, указав нужный формат. Например:
FORMAT JSONEachRowПоддерживаются следующие форматы:
JSON
Данные возвращаются в виде одного объекта JSON, который включает данные схемы:
{
"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
Данные возвращаются в виде отдельного объекта JSON для каждой строки. Строки разделены символом новой строки, заголовок и данные схемы отсутствуют:
{"<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
Данные возвращаются строками, разделёнными символом новой строки. Столбцы разделены табуляцией. Заголовок отсутствует.
column 1 value column 2 value
column 1 value column 2 value
...