카테고리:

쿼리 구문

FROM

SELECT 문에서 사용할 테이블, 뷰 또는 테이블 함수를 지정합니다.

참고 항목:

AT | BEFORE , CHANGES , CONNECT BY , JOIN , MATCH_RECOGNIZE, PIVOT , SAMPLE / TABLESAMPLE , UNPIVOT, 조인 관련 작업하기

구문

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

둘 이상의 테이블(또는 뷰 또는 테이블 함수) 간의 조인을 수행하도록 지정하는 하위 절입니다. 조인은 내부 조인, 외부 조인 또는 기타 유형의 조인일 수 있습니다. 조인은 키워드 JOIN 또는 지원되는 대체 조인 구문을 사용할 수 있습니다. JOIN에 대한 자세한 내용은 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 절의 결과를 피벗하거나 피벗 해제하도록 지정하는 선택적 하위 절입니다. 자세한 내용은 PIVOTUNPIVOT 섹션을 참조하십시오.

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

  • 특정 시간과 날짜.

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

이 예에서는 크기가 100KB보다 큰 파일에 대해 디렉터리 테이블에서 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