INTEGRITY Документация

Инструкции

Оператор 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
...