- 카테고리:
FROM¶
SELECT 문에서 사용할 테이블, 뷰 또는 테이블 함수를 지정합니다.
- 참고 항목:
AT | BEFORE , CHANGES , CONNECT BY , JOIN , ASOF JOIN, MATCH_RECOGNIZE, PIVOT , SAMPLE / TABLESAMPLE , UNPIVOT, 조인 관련 작업하기, 시계열 데이터 결합하기
구문¶
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
둘 이상의 테이블(또는 뷰 또는 테이블 함수) 간의 조인을 수행하도록 지정하는 하위 절입니다. 조인은 내부 조인, 외부 조인 또는 기타 유형의 조인일 수 있습니다. 조인은 키워드 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
).특정 시간과 날짜.
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);
이 예에서는 크기가 100KB보다 큰 파일에 대해 디렉터리 테이블에서 FILE_URL 열 값을 검색합니다.
SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE SIZE > 100000;
이 예에서는 쉼표로 구분된 값 파일에 대한 디렉터리 테이블에서 FILE_URL 열 값을 검색합니다.
SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE RELATIVE_PATH LIKE '%.csv';