カテゴリ:

クエリ構文

FROM

SELECT ステートメントで使用するテーブル、ビュー、またはテーブル関数を指定します。

こちらもご参照ください。

AT | BEFORECHANGESCONNECT BYJOINMATCH_RECOGNIZEPIVOTSAMPLE / TABLESAMPLEUNPIVOTJOIN(結合)の操作

構文

SELECT ...
FROM objectReference [ JOIN objectReference [ ... ] ]
[ ... ]
Copy

条件:

objectReference ::=
   {
      [<namespace>.]<object_name>
           [ AT | BEFORE ( <object_state> ) ]
           [ CHANGES ( <change_tracking_type> ) ]
           [ MATCH_RECOGNIZE ]
           [ PIVOT | UNPIVOT ]
           [ [ AS ] <alias_name> ]
           [ SAMPLE ]
     | <table_function>
           [ PIVOT | UNPIVOT ]
           [ [ AS ] <alias_name> ]
           [ SAMPLE ]
     | ( VALUES (...) )
           [ SAMPLE ]
     | [ LATERAL ] ( <subquery> )
           [ [ AS ] <alias_name> ]
     | @[<namespace>.]<stage_name>[/<path>]
           [ ( FILE_FORMAT => <format_name>, PATTERN => '<regex_pattern>' ) ]
           [ [AS] <alias_name> ]
     | DIRECTORY( @<stage_name> )
   }
Copy
JOIN

2つ以上のテーブル(またはビューまたはテーブル関数)間の結合を実行することを指定する副次句。結合には、内部結合、外部結合、または他のタイプの結合があります。結合では、キーワード JOIN またはサポートされている別の結合構文を使用できます。 JOINsの詳細については、 JOIN をご参照ください。

[ AS ] alias_name

接続先のオブジェクト参照に付けられた名前を指定します。 FROM 句の他の副次句のいずれかで使用できます。

エイリアス名は オブジェクト識別子 のルールに従う必要があります。

VALUES

VALUES 句は、 FROM 句で使用されるリテラル値または式を指定できます。この句には、テーブルおよび列のエイリアスを含めることができます(上の図には示されていません)。VALUES 句の詳細については、 VALUES をご参照ください。

オブジェクトまたはテーブル関数句

[namespace.]object_name

クエリされるオブジェクト(テーブルまたはビュー)の名前を指定します。

オブジェクト名は namespace を使用して修飾できます( db_name.schema_name.object_name または schema_name.object_name の形式)。セッションの現在のデータベースとスキーマからコンテキストを導出できる場合、名前空間は必要ありません。

クエリするテーブル/ビュー名を指定する場合、次のオプションの副次句も指定できます。

AT | BEFORE ( object_state )

Time Travelのテーブルまたはビューの時間ベースまたはイベントベースの履歴状態を指定するオプションの副次句。詳細については、 AT | BEFORE をご参照ください。

MATCH_RECOGNIZE

パターンに一致する行のシーケンスを検索するためのオプションのサブ句。詳細については、 MATCH_RECOGNIZE をご参照ください。

table_function

FROM 句内で呼び出すシステム定義または UDF テーブル関数を指定します。詳細については、 テーブル関数 または ユーザー定義関数の概要 をご参照ください。

PIVOT | UNPIVOT

FROM 句の結果のピボットまたはピボット解除を指定するオプションの副次句。詳細については、 PIVOT および UNPIVOT をご参照ください。

SAMPLE

テーブル/ビューから行をサンプリングすることを指定するオプションの副次句。詳細については、 SAMPLE / TABLESAMPLE をご参照ください。

インラインビュー句

[ LATERAL ] ( subquery )

FROM 句内のインラインビューを指定します。オプションの LATERAL キーワードを使用すると、 subquery は、現在の FROM 句にあり、インラインビューの左側にある、他のテーブル(またはビューまたはテーブル関数)の列を参照できます。

一般的なサブクエリの詳細については、 サブクエリの操作 をご参照ください。

ステージングされたファイル句

@[namespace.]stage_name[/path]

クエリする名前付きステージを指定します(または、現在のユーザーのステージを参照するための ~ 、または指定したテーブルのステージを参照するためのテーブル名が後に続く %)。

ステージをクエリするときに、オプションで名前付きファイル形式とパターンを指定することもできます。

( FILE_FORMAT => format_name [ , PATTERN => 'regex_pattern' ] )

ステージに使用する名前付きファイル形式オブジェクトと、ステージ内のファイルのセットをフィルター処理するパターンを指定します。

クエリステージの詳細については、 ステージングされたファイルのデータのクエリ をご参照ください。

ディレクトリテーブル句

DIRECTORY( @<stage_name> )

ディレクトリテーブル を含むステージの名前を指定します。

階層クエリ結果

hierarchical_query_result

階層クエリの結果は、 CONNECT BY などの句を使用して階層データのテーブルをクエリした結果セットです。詳細については、 CONNECT BY をご参照ください。

使用上の注意

  • オブジェクト名は SQL 識別子です。デフォルトでは、大文字と小文字は区別されません。大文字と小文字を保持するには、二重引用符(" ")で囲みます。

テーブルを作成し、そこにデータをロードします。

CREATE TABLE ftable1 (retail_price FLOAT, wholesale_cost FLOAT, description VARCHAR);
INSERT INTO ftable1 (retail_price, wholesale_cost, description) 
  VALUES (14.00, 6.00, 'bling');
Copy

FROM句を使用する基本的な例を次に示します。

SELECT description, retail_price, wholesale_cost 
    FROM ftable1;
+-------------+--------------+----------------+
| DESCRIPTION | RETAIL_PRICE | WHOLESALE_COST |
|-------------+--------------+----------------|
| bling       |           14 |              6 |
+-------------+--------------+----------------+
Copy

この例は前の例と同じですが、テーブルのスキーマで修飾されたテーブル名を指定します。

SELECT description, retail_price, wholesale_cost 
    FROM temporary_doc_test.ftable1;
+-------------+--------------+----------------+
| DESCRIPTION | RETAIL_PRICE | WHOLESALE_COST |
|-------------+--------------+----------------|
| bling       |           14 |              6 |
+-------------+--------------+----------------+
Copy

この例では、インラインビューを作成し、クエリで使用します。

SELECT v.profit 
    FROM (SELECT retail_price - wholesale_cost AS profit FROM ftable1) AS v;
+--------+
| PROFIT |
|--------|
|      8 |
+--------+
Copy

この例では、テーブル内のデータの10%のサンプルをクエリします。

SELECT *
    FROM sales SAMPLE(10);
Copy

この例では、 UDTF (ユーザー定義の表関数)を実行します。

SELECT *
    FROM TABLE(Fibonacci_Sequence_UDTF(6.0::FLOAT));
Copy

これらの例では、 AT 句を使用して、過去に指定された以下のポイントから履歴データを返します。

  • 現在時刻(-86400 = -3600 * 24)より1日早い。

  • 特定の日時。

SELECT *
    FROM sales AT(OFFSET => -86400);
SELECT *
    FROM sales AT(TIMESTAMP => '2018-07-27 12:00:00'::TIMESTAMP);
Copy

AT の詳細については、 AT | BEFORE をご参照ください。

この例では、名前付きステージにあるファイルをクエリしています。

SELECT
    v.$1, v.$2, ...
  FROM
    @my_stage( FILE_FORMAT => 'csv_format', PATTERN => '.*my_pattern.*') v;
Copy

この例では、 mystage という名前のステージの ディレクトリテーブル 内にあるすべてのメタデータ列を取得します。

SELECT * FROM DIRECTORY(@mystage);
Copy

この例では、100Kバイトより大きいサイズのファイルのために、ディレクトリテーブルから FILE_URL 列値を取得します。

SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE SIZE > 100000;
Copy

この例では、コンマ区切り値ファイルのために、ディレクトリテーブルから FILE_URL 列値を取得します。

SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE RELATIVE_PATH LIKE '%.csv';
Copy