- カテゴリ:
FROM¶
SELECT ステートメントで使用するテーブル、ビュー、またはテーブル関数を指定します。
- こちらもご参照ください。
AT | BEFORE , CHANGES , CONNECT BY , JOIN , ASOF JOIN, MATCH_RECOGNIZE, PIVOT , SAMPLE / TABLESAMPLE , UNPIVOT, JOIN(結合)の操作, 時系列データの結合
構文¶
SELECT ...
FROM objectReference [ JOIN objectReference [ ... ] ]
[ ... ]
条件:
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> ) }
JOIN
2つ以上のテーブル(またはビューまたはテーブル関数)間の結合を実行することを指定する副次句。結合には、内部結合、外部結合、または他のタイプの結合があります。結合では、キーワード JOIN またはサポートされている別の結合構文を使用できます。結合の詳細については、 JOIN と ASOF 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');
FROM句を使用する基本的な例を次に示します。
SELECT description, retail_price, wholesale_cost FROM ftable1; +-------------+--------------+----------------+ | DESCRIPTION | RETAIL_PRICE | WHOLESALE_COST | |-------------+--------------+----------------| | bling | 14 | 6 | +-------------+--------------+----------------+
この例は前の例と同じですが、テーブルのスキーマで修飾されたテーブル名を指定します。
SELECT description, retail_price, wholesale_cost FROM temporary_doc_test.ftable1; +-------------+--------------+----------------+ | DESCRIPTION | RETAIL_PRICE | WHOLESALE_COST | |-------------+--------------+----------------| | bling | 14 | 6 | +-------------+--------------+----------------+
この例では、インラインビューを作成し、クエリで使用します。
SELECT v.profit FROM (SELECT retail_price - wholesale_cost AS profit FROM ftable1) AS v; +--------+ | PROFIT | |--------| | 8 | +--------+
この例では、テーブル内のデータの10%のサンプルをクエリします。
SELECT * FROM sales SAMPLE(10);
この例では、 UDTF (ユーザー定義の表関数)を実行します。
SELECT * FROM TABLE(Fibonacci_Sequence_UDTF(6.0::FLOAT));
これらの例では、 AT
句を使用して、過去に指定された以下のポイントから履歴データを返します。
現在時刻(
-86400 = -3600 * 24
)より1日早い。特定の日時。
SELECT * FROM sales AT(OFFSET => -86400); SELECT * FROM sales AT(TIMESTAMP => '2018-07-27 12:00:00'::TIMESTAMP);
AT
の詳細については、 AT | BEFORE をご参照ください。
この例では、名前付きステージにあるファイルをクエリしています。
SELECT v.$1, v.$2, ... FROM @my_stage( FILE_FORMAT => 'csv_format', PATTERN => '.*my_pattern.*') v;
この例では、 mystage
という名前のステージの ディレクトリテーブル 内にあるすべてのメタデータ列を取得します。
SELECT * FROM DIRECTORY(@mystage);
この例では、100Kバイトより大きいサイズのファイルのために、ディレクトリテーブルから FILE_URL 列値を取得します。
SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE SIZE > 100000;
この例では、コンマ区切り値ファイルのために、ディレクトリテーブルから FILE_URL 列値を取得します。
SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE RELATIVE_PATH LIKE '%.csv';