SELECT - Amazon Athena

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

SELECT

0개 이상의 테이블에서 데이터 행을 검색합니다.

참고

이 주제에서는 참조할 수 있는 요약 정보를 제공합니다. SELECT 및 SQL 언어에 대한 포괄적인 정보는 이 설명서에서 다루지 않습니다. Athena와 관련된 SQL 사용에 대한 자세한 내용은 Amazon Athena의 SQL 쿼리에 대한 고려 사항 및 제한 사항Amazon Athena를 사용하여 SQL 쿼리 실행 단원을 참조하십시오. 에서 데이터 쿼리를 시작하는 방법은 Athena 단원을 참조하십시오.시작하기

Synopsis

[ WITH with_query [, ...] ] SELECT [ ALL | DISTINCT ] select_expression [, ...] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ] [ HAVING condition ] [ UNION [ ALL | DISTINCT ] union_query ] [ ORDER BY expression [ ASC | DESC ] [ NULLS FIRST | NULLS LAST] [, ...] ] [ LIMIT [ count | ALL ] ]
참고

SQL SELECT 문의 예약어는 큰따옴표로 묶어야 합니다. 자세한 내용은 SQL SELECT 문의 예약어 목록 단원을 참조하십시오.

Parameters

[ WITH with_query [, ....] ]

WITH를 사용하여 중첩 쿼리를 평면화하거나 하위 쿼리를 단순화할 수 있습니다.

WITH 절을 이용한 재귀 쿼리 생성은 지원되지 않습니다.

WITH 절은 쿼리에서 SELECT 목록에 선행하고 SELECT 쿼리 내에서 사용할 하나 이상의 하위 쿼리를 정의합니다.

각각의 하위 쿼리는 FROM 절에서 참조할 수 있는 뷰 정의와 비슷한 임시 테이블을 정의합니다. 이러한 테이블은 쿼리를 실행할 때만 사용됩니다.

with_query 구문은 다음과 같습니다.

subquery_table_name [ ( column_name [, ...] ) ] AS (subquery)

여기서 각 항목은 다음과 같습니다.

  • subquery_table_nameWITH 절 하위 쿼리의 결과를 정의하는 임시 테이블의 고유한 이름입니다. 각각의 subquery에는 FROM 절에서 참조될 수 있는 테이블 이름이 있어야 합니다.

  • column_name [, ...]은 출력 열 이름의 선택적 목록입니다. 열 이름의 수는 subquery로 정의되는 열 개수보다 적거나 같아야 합니다.

  • subquery는 임의의 쿼리 설명문입니다.

[ ALL | DISTINCT ] select_expr

select_expr는 선택하려는 행을 결정합니다.

기본값은 ALL입니다. ALL을 사용하면 마치 생략된 것처럼 처리됩니다. 모든 열에 대한 모든 행이 선택되고 중복이 유지됩니다.

열에 중복된 값이 포함되어 있는 경우 고유 값만 반환하려면 DISTINCT를 사용합니다.

FROM from_item [, ...]

아래에 설명된 대로 from_item이 뷰, 조인 생성 또는 하위 쿼리가 될 수 있는 쿼리 입력을 나타냅니다.

from_item은 다음 중 하나일 수 있습니다.

  • table_name [ [ AS ] alias [ (column_alias [, ...]) ] ]

    table_name이 행을 선택할 대상 테이블의 이름인 경우 aliasSELECT 설명의 출력을 제공할 이름이고 column_alias는 지정된 alias에 대한 열을 정의합니다.

-또는-

  • join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]

    여기에서 join_type은 다음 중 하나입니다.

    • [ INNER ] JOIN

    • LEFT [ OUTER ] JOIN

    • RIGHT [ OUTER ] JOIN

    • FULL [ OUTER ] JOIN

    • CROSS JOIN

    • ON join_condition | USING (join_column [, ...]) join_condition을 사용하면 여러 테이블의 조인 키에 열 이름을 지정할 수 있으며 join_column을 사용하려면 join_column가 두 테이블에 모두 존재해야 합니다.

[ WHERE condition ]

지정한 condition에 따라 결과를 필터링합니다.

[ GROUP BY [ ALL | DISTINCT ] grouping_expressions [, ...] ]

SELECT 설명의 출력을 일치하는 값의 행으로 나눕니다.

ALLDISTINCT는 중복되는 그룹화 집합이 각각 다른 출력 행을 생성할지 결정합니다. 생략된 경우, ALL로 간주됩니다.

grouping_expressions를 사용하면 복잡한 그룹화 작업을 수행할 수 있습니다.

grouping_expressions 요소는 입력 열에서 수행되는 임의의 함수(예: SUM, AVG, COUNT 등)이거나 1부터 시작해 위치별로 출력 열을 선택하는 서수일 수 있습니다.

GROUP BY 식은 SELECT 설명 출력에 나타나지 않는 입력 열 이름별로 출력을 그룹화할 수 있습니다.

모든 출력 식은 집계 함수이거나 GROUP BY 절에 있는 열이어야 합니다.

단일 쿼리를 사용하여 여러 열 집합을 집계해야 하는 분석을 수행할 수 있습니다.

이처럼 복잡한 그룹화 작업은 입력 열로 구성된 식을 지원하지 않습니다. 열 이름 또는 서수만 허용됩니다.

흔히 UNION ALL을 사용해도 이러한 GROUP BY 작업과 동일한 결과를 얻을 수 있지만 GROUP BY를 사용하는 쿼리는 데이터를 한 번만 읽는 이점이 있는 데 비해 UNION ALL은 기본 데이터를 세 번 읽으며, 데이터 원본이 변경될 경우 일관성 없는 결과를 생성할 수 있습니다.

GROUP BY CUBE는 지정된 열 집합에 대해 가능한 모든 그룹화 집합을 생성합니다. GROUP BY ROLLUP는 주어진 열 집합에 대해 가능한 모든 소계를 생성합니다.

[ HAVING condition ]

집계 함수 및 GROUP BY 절과 함께 사용됩니다. 어떤 그룹을 선택할지를 제어하여 condition를 충족하지 않는 그룹을 제거합니다. 이 필터링은 그룹과 집계가 계산된 후에 발생합니다.

[ UNION [ ALL | DISTINCT ] union_query] ]

둘 이상의 SELECT 문 결과를 단일 쿼리로 결합합니다. ALL 또는 DISTINCT는 최종 결과 집합에 포함되는 행을 제어합니다.

ALL은 동일한 행이라 하더라도 모든 행을 포함시킵니다.

DISTINCT를 사용하면 결합된 결과 집합에 고유한 행만 포함됩니다. 기본값은 DISTINCT입니다.

중복을 제거하기 위해 UNION는 메모리를 소비하는 해시 테이블을 빌드합니다. 쿼리에 중복 항목을 제거할 필요가 없는 경우 성능 향상을 위해 UNION ALL 사용을 고려하십시오.

다중 UNION 절은 괄호를 사용하여 처리 순서를 명시적으로 정의하지 않는 한 왼쪽에서 오른쪽으로 처리됩니다.

[ ORDER BY expression [ ASC | DESC ] [ NULLS FIRST | NULLS LAST] [, ...] ]

하나 이상의 출력 expression으로 결과 집합을 정렬합니다.

절에 여러 표현식이 포함되어 있으면 결과 집합은 첫 번째 expression에 따라 정렬됩니다. 그런 다음 첫 번째 표현식에서 일치하는 값이 있는 행에 두 번째 expression이 적용됩니다.

expressionSELECT의 출력 열을 지정하거나 위치별로 출력 열의 서수를 1부터 지정할 수 있습니다.

ORDER BYGROUP BY 또는 HAVING 절 이후의 마지막 단계로 평가됩니다. 및 ASC는 결과가 오름차순 또는 내림차순으로 정렬되는지 여부를 결정합니다.DESC

오름차순 또는 내림차순 정렬 순서와 상관없이 기본 null 순서는 NULLS LAST입니다.

LIMIT [ count | ALL ]

결과 집합의 행 수를 count로 제한합니다. LIMIT ALLLIMIT 절 생략과 동일합니다. 쿼리에 ORDER BY 절이 없는 경우 결과는 임의입니다.

TABLESAMPLE BERNOULLI | SYSTEM (백분율)

샘플링 방법을 기반으로 테이블에서 행을 선택하는 선택적 연산자입니다.

BERNOULLIpercentage의 확률로 테이블 샘플에 포함할 각 행을 선택합니다. 테이블의 모든 물리적 블록이 스캔되고 샘플 percentage와 실행 시간에 계산된 임의 값 사이의 비교를 기반으로 특정 행을 건너뜁니다.

SYSTEM을 사용하면 테이블이 데이터의 논리적 세그먼트로 나뉘고 이 세분 수준에서 테이블이 샘플링됩니다.

특정 세그먼트의 모든 행이 선택되거나 샘플 percentage와 실행 시간에 계산된 임의 값 간의 비교를 기반으로 세그먼트를 건너뜁니다. SYSTEM 샘플링은 커넥터에 따라 다릅니다. 이 메서드는 독립적인 샘플링 확률을 보장하지 않습니다.

[ UNNEST (array_or_map) [WITH ORDINALITY] ]

어레이 또는 맵을 관계로 확장합니다. 어레이는 하나의 열로 확장됩니다. 맵은 두 개의 열(, )로 확장됩니다.

복수의 인수로 UNNEST를 사용할 수 있습니다. 이 경우 가장 큰 카디널리티 인수와 동일한 개수의 행이 있는 여러 열로 확장됩니다.

다른 열은 null로 채워집니다.

WITH ORDINALITY 절은 끝에 순서 열을 추가합니다.

UNNEST는 일반적으로 JOIN과 함께 사용되며 JOIN 왼쪽의 관계에서 열을 참조할 수 있습니다.

에서 소스 데이터의 파일 위치 가져오기Amazon S3

테이블 행의 데이터에 대한 Amazon S3 파일 위치를 보려면 다음 예제와 같이 "$path" 쿼리에서 SELECT를 사용할 수 있습니다.

SELECT "$path" FROM "my_database"."my_table" WHERE year=2019;

그러면 다음과 같은 결과가 반환됩니다.

s3://awsexamplebucket/datasets_mytable/year=2019/data_file1.json

다음 예제와 같이 테이블의 데이터에 대해 정렬되고 고유한 S3 파일 이름 경로 목록을 반환하려면 SELECT DISTINCTORDER BY를 사용할 수 있습니다.

SELECT DISTINCT "$path" AS data_source_file FROM sampledb.elb_logs ORDER By data_source_file ASC

경로가 없는 파일 이름만 반환하려면 다음 예제와 같이 "$path"regexp_extract 함수에 파라미터로 전달할 수 있습니다.

SELECT DISTINCT regexp_extract("$path", '[^/]+$') AS data_source_file FROM sampledb.elb_logs ORDER By data_source_file ASC

특정 파일에서 데이터를 반환하려면 다음 예제와 같이 WHERE 절에 파일을 지정합니다.

SELECT *,"$path" FROM my_database.my_table WHERE "$path" = 's3://awsexamplebucket/my_table/my_partition/file-01.csv'

자세한 내용과 예제는 지식 센터 문서 Athena 테이블의 행에 대한 Amazon S3 소스 파일을 보려면 어떻게 해야 합니까?를 참조하십시오.

작은따옴표의 이스케이프 처리

작은따옴표를 이스케이프 처리하려면 다음 예제와 같이 작은따옴표 앞에 다른 작은따옴표를 추가합니다. 이를 큰따옴표와 혼동하지 마십시오.

Select 'O''Reilly'

Results

O'Reilly

추가 리소스

에서 SELECT 문을 사용하는 방법에 대한 자세한 내용은 다음 리소스를 참조하십시오.Athena

이에 대한 정보 참조
에서 쿼리 실행Athena Amazon Athena를 사용하여 SQL 쿼리 실행
를 사용하여 테이블 생성SELECT 쿼리 결과에서 테이블 생성(CTAS)
쿼리에서 다른 테이블로 데이터 삽입SELECT INSERT INTO
문에서 내장 함수 사용SELECT Amazon Athena의 Presto 함수
문에서 사용자 정의 함수 사용SELECT 사용자 정의 함수를 사용한 쿼리(미리 보기)
메타데이터 쿼리Data Catalog AWS Glue 데이터 카탈로그 쿼리