INTEGRITY Dokumentace

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 temperature

Kromě 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 function

Klauzule 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) <= 0

Klauzule 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_name

V 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 >= 50

Klauzule 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 DESC

Klauzule LIMIT

LIMIT určuje maximální počet řádků, které se mají vrátit.

Použití:

LIMIT <n>|ALL

Zadejte maximální počet řádků, které se mají vrátit, nebo ALL pro žádné omezení.

Například:

LIMIT 10 -- return at most 10 rows

Klauzule 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 rows

Klauzule 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 JSONEachRow

Podporová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
...