SHOW TABLES で、アカウント上のテーブルを一覧できます。テーブル名は、Workers のバインディング設定で dataset に指定した名前です(詳細は Workers Analytics Engine を始める を参照してください)。Worker でイベントデータを書き込むと、テーブルは自動で作成されます。
SHOW TABLES
[FORMAT <format>]利用できる FORMAT のオプションは、FORMAT 句 を参照してください。
SHOW TIMEZONES で、SQL API がサポートするタイムゾーンをすべて一覧できます。よく使うタイムゾーンは、ほとんど対応しています。
SHOW TIMEZONES
[FORMAT <format>]SHOW TIMEZONE は、SQL API が現在使っているデフォルトのタイムゾーンを返します。常に Etc/UTC です。
SHOW TIMEZONE
[FORMAT <format>]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 句は、結果に含める列の一覧を指定します。列には 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 functionFROM は、クエリのデータ元を指定します。
使い方:
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
)クエリが扱えるテーブルは 1 つだけです。UNION や JOIN などは、現時点では使えません。
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 <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 <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 >= 50ORDER 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 DESCLIMIT は、返す行数の上限を指定します。
使い方:
LIMIT <n>|ALL返す行数の上限を指定します。制限しない場合は ALL を指定します。
例:
LIMIT 10 -- return at most 10 rowsOFFSET は、クエリ結果でスキップする行数を指定します。
使い方:
OFFSET <n>例:
OFFSET 10 -- skip the first 10 result rowsFORMAT は、返すデータのエンコード形式を制御します。
使い方:
FORMAT [JSON|JSONEachRow|TabSeparated]FORMAT 句を省略すると、デフォルトの JSON になります。
デフォルトを上書きするには、形式を指定します。例:
FORMAT JSONEachRow次の形式をサポートしています。
データは、スキーマ情報を含む 1 つの 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
}データは、行ごとに別の 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>"}
...データは、改行区切りの行として返ります。列はタブ区切りです。ヘッダーはありません。
column 1 value column 2 value
column 1 value column 2 value
...