Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

ステートメント

最終更新 Markdown で表示Agent セットアップ

SHOW TABLES ステートメント

SHOW TABLES で、アカウント上のテーブルを一覧できます。テーブル名は、Workers のバインディング設定で dataset に指定した名前です(詳細は Workers Analytics Engine を始める を参照してください)。Worker でイベントデータを書き込むと、テーブルは自動で作成されます。

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
)

クエリが扱えるテーブルは 1 つだけです。UNIONJOIN などは、現時点では使えません。

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

データは、スキーマ情報を含む 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
}

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

役に立ちましたか?