CREATE TABLE - Amazon Athena

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

CREATE TABLE

지정한 파라미터와 이름으로 테이블을 생성합니다.

참고

이 페이지에는 요약 참조 정보가 포함되어 있습니다. Athena에서 테이블을 생성하는 방법과 예제 CREATE TABLE 문에 대한 자세한 내용은 Athena에서 테이블 생성 단원을 참조하세요. 데이터베이스 생성, 테이블 생성 및 Athena의 테이블에서 SELECT 쿼리 실행에 대한 예제는 시작하기 항목을 참조하세요.

시놉시스

CREATE EXTERNAL TABLE [IF NOT EXISTS] [db_name.]table_name [(col_name data_type [COMMENT col_comment] [, ...] )] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...) INTO num_buckets BUCKETS] [ROW FORMAT row_format] [STORED AS file_format] [WITH SERDEPROPERTIES (...)] [LOCATION 's3://bucket_name/[folder]/'] [TBLPROPERTIES ( ['has_encrypted_data'='true | false',] ['classification'='aws_glue_classification',] property_name=property_value [, ...] ) ]

파라미터

EXTERNAL

테이블이 사용자가 지정한 LOCATION의 Amazon S3에 있는 기본 데이터 파일을 기반으로 하도록 지정합니다. Iceberg 테이블을 생성할 때를 제외하고 항상 EXTERNAL 키워드를 사용하세요. Iceberg가 아닌 테이블에 대해 EXTERNAL 키워드 없이 CREATE TABLE을 사용하는 경우 Athena에서 오류가 발생합니다. 외부 테이블을 만들 때 참조되는 데이터는 기본 형식 또는 ROW FORMAT, STORED AS, WITH SERDEPROPERTIES 절로 지정한 형식을 준수해야 합니다.

[IF NOT EXISTS]

이 파라미터는 동일한 이름의 테이블이 이미 존재하는지 확인합니다. 존재하는 경우 파라미터는 TRUE를 반환하고 Amazon Athena는 CREATE TABLE 작업을 취소합니다. 취소는 Athena가 데이터 카탈로그를 호출하기 전에 발생하므로 이벤트가 발생하지 않습니다. AWS CloudTrail

[db_name.]table_name

테이블의 이름이 생성되도록 지정합니다. 옵션 db_name 파라미터는 테이블이 있는 데이터베이스를 지정합니다. 생략하면 현재 데이터베이스로 가정됩니다. 테이블 이름에 숫자가 포함되어 있는 경우 table_name을 인용 부호로 묶습니다(예: "table123"). table_name이 밑줄로 시작하는 경우 백틱을 사용합니다(예: `_mytable`). 밑줄 이외의 특수 문자는 지원되지 않습니다.

Athena 테이블 이름은 대소문자를 구분하지 않으나 Apache Spark로 작업하는 경우 Spark에는 소문자 테이블 이름이 필요합니다.

[ ( col_name data_type [COMMENT col_comment] [, ...] ) ]

열의 데이터 형식과 함께, 작성될 각 열의 이름을 지정합니다. 열 이름은 밑줄 (_) 이외의 특수 문자를 허용하지 않습니다. col_name이 밑줄로 시작하는 경우 열 이름을 악센트 부호(`)로 묶습니다(예: `_mycolumn`).

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

  • boolean – 값은 truefalse입니다.

  • tinyint - 2의 보수 형식의 부호 있는 8비트 정수이며, 최솟값은 -2^7이고 최댓값은 2^7-1입니다.

  • smallint - 2의 보수 형식의 부호 있는 16비트 정수이며, 최솟값은 -2^15이고 최댓값은 2^15-1입니다.

  • int - CREATE TABLE과 같은 DDL(데이터 정의 언어) 쿼리에서는 int 키워드를 사용하여 정수를 나타냅니다. 다른 쿼리에서 키워드 integer를 사용합니다. 여기에서 integer는 2의 보수 형식의 부호 있는 32비트 값으로 표현되며, 최솟값은 -2^31, 최댓값은 2^31-1입니다. JDBC 드라이버의 경우 비즈니스 분석 애플리케이션과 호환될 수 있도록 integer이(가) 반환됩니다.

  • bigint - 2의 보수 형식의 부호 있는 64비트 정수이며, 최솟값은 -2^63이고 최댓값은 2^63-1입니다.

  • double – 64비트 부호 포함 배정밀도 부동 소수점 숫자입니다. 범위는 4.94065645841246544e-324d ~ 1.79769313486231570e+308d, 양수 또는 음수입니다. double은 부동 소수점 산술에 대한 IEEE 표준(IEEE 754)을 따릅니다.

  • float – 32비트 부호 포함 단정밀도 부동 소수점 숫자입니다. 범위는 1.40129846432481707e-45 ~ 3.40282346638528860e+38, 양수 또는 음수입니다. float는 부동 소수점 산술에 대한 IEEE 표준(IEEE 754)을 따릅니다. Presto의 real에 해당합니다. Athena에서는 CREATE TABLE 등의 DDL 문에서 float을(를) 사용하고, SELECT CAST 등의 SQL 함수에서 real을(를) 사용합니다. AWS Glue Crawler는 에서 float 값을 반환하고 Athena는 내부적으로 real 변환하고 입력합니다 (float릴리스 노트 참조). 2018년 6월 5일

  • decimal [ (precision, scale) ], 여기에서 precision은 총 자릿수이고, scale(선택 사항)은 소수부의 자릿수이며, 기본값은 0입니다. 예를 들어 decimal(11,5), decimal(15) 형식 정의를 사용합니다. precision 최대값은 38이고, scale 최대값은 38입니다.

    쿼리 DDL 표현식에서 특정 10진수 값이 있는 행을 선택하는 경우와 같이 10진수 값을 리터럴로 지정하려면 decimal 형식 정의를 지정하고, 쿼리에서 10진수 값을 (작은따옴표로 묶인) 리터럴로 나열합니다(예: decimal_value = decimal '0.12').

  • char – 길이가 1~255자로 지정된 고정 길이 문자 데이터입니다(예: char(10)). 자세한 내용은 CHAR Hive 데이터 형식을 참조하세요.

  • varchar – 길이가 1~65535자로 지정된 가변 길이 문자 데이터입니다(예: varchar(10)). 자세한 내용은 VARCHAR Hive 데이터 형식을 참조하세요.

  • string – 작은따옴표 또는 큰따옴표로 묶인 문자열 리터럴입니다.

    참고

    비 문자열 데이터 유형은 Athena에서 string으로 캐스팅할 수 없습니다. 대신 varchar로 캐스팅합니다.

  • binary - (Parquet의 데이터용)

  • date – ISO 형식의 날짜(예: YYYY-MM-DD)입니다. 예를 들어 date '2008-09-15'입니다. 1970년 1월 1일 이후 경과된 일수를 사용하는 SerDe OpenCSV는 예외입니다. 자세한 설명은 CSV 처리를 위한 OpenCSVSerDe 섹션을 참조하세요.

  • timestampjava.sql.Timestamp 호환 형식의 날짜 및 시간 인스턴트로, 최대 해상도는 밀리초입니다(예: yyyy-MM-dd HH:mm:ss[.f...]). 예를 들어 timestamp '2008-09-15 03:04:05.324'입니다. 단, UNIX 숫자 형식 (예:) 의 데이터를 TIMESTAMP 사용하는 SerDe OpenCSV는 예외입니다. 1579059880000 자세한 설명은 CSV 처리를 위한 OpenCSVSerDe 섹션을 참조하세요.

  • array < data_type >

  • map < primitive_type, data_type >

  • struct < col_name : data_type [comment col_comment] [, ...] >

[COMMENT table_comment]

comment 테이블 속성을 만들고, 지정한 table_comment로 채웁니다.

[PARTITIONED BY (col_name data_type [ COMMENT col_comment ], ... ) ]

col_name, data_typecol_comment가 지정되어 있으며 하나 이상의 파티션 열로 분할된 테이블을 생성합니다. 테이블에는 고유한 열 이름과 값 조합으로 구성된 하나 이상의 파티션이 있을 수 있습니다. 지정된 각각의 조합에 별개의 데이터 디렉터리가 생성되어 상황에 따라 쿼리 성능을 개선할 수 있습니다. 분할된 열은 테이블 데이터 자체 내에는 존재하지 않습니다. 테이블 열과 동일한 col_name에 대한 값을 사용하는 경우 오류가 발생합니다. 자세한 내용은 데이터 파티셔닝을 참조하세요.

참고

파티션이 있는 테이블을 만든 후 MSCK REPAIR TABLE 절로 구성된 후속 쿼리를 실행하여 파티션 메타데이터(예: MSCK REPAIR TABLE cloudfront_logs;)를 새로 고칩니다. Hive와 호환되지 않는 파티션의 경우 데이터를 쿼리할 수 있도록 파티션을 로드하려면 ALTER TABLE ADD PARTITION을 사용합니다.

[CLUSTERED BY (col_name, col_name, ...) INTO num_buckets BUCKETS]

파티셔닝 여부와 상관없이 지정된 col_name 열을 버킷(buckets)이라는 데이터 하위 집합으로 나눕니다. 이 num_buckets 파라미터는 생성할 버킷 수를 지정합니다. 버킷팅은 대용량 데이터 세트에 대한 일부 쿼리의 성능을 향상시킬 수 있습니다.

[ROW FORMAT row_format]

해당되는 경우 테이블의 행 형식과 기본 소스 데이터를 지정합니다. row_format의 경우 DELIMITED 절을 이용해 하나 이상의 구분 기호를 지정하거나 아래 설명된 대로 SERDE 절을 사용합니다. 생략되거나 지정된 경우 ROW FORMAT ROW FORMAT DELIMITED 네이티브가 사용됩니다. SerDe

  • [DELIMITED FIELDS TERMINATED BY char [ESCAPED BY char]]

  • [DELIMITED COLLECTION ITEMS TERMINATED BY char]

  • [MAP KEYS TERMINATED BY char]

  • [LINES TERMINATED BY char]

  • [NULL DEFINED AS char]

    SATES AS 파일 형식이 TEXTFILE인 경우 Hive 0.13에서만 사용할 수 있습니다.

--또는--

  • SERDE 'serde_name' [WITH SERDEPROPERTIES ("property_name" = "property_value", "property_name" = "property_value" [, ...] )]

    serde_name 사용할 SerDe 것을 나타냅니다. 이 WITH SERDEPROPERTIES 절을 사용하면 에서 허용하는 하나 이상의 사용자 지정 속성을 제공할 수 있습니다. SerDe

[STORED AS file_format]

테이블 데이터의 파일 형식을 지정합니다. 지정하지 않을 경우, TEXTFILE이 기본값입니다. file_format 옵션은 다음과 같습니다.

  • SEQUENCEFILE

  • TEXTFILE

  • RCFILE

  • ORC

  • PARQUET

  • AVRO

  • ION

  • INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname

[LOCATION 's3://bucket_name/[folder]/']

테이블을 생성할 Amazon S3의 기본 데이터 위치를 지정합니다. 위치 경로는 버킷 이름 또는 버킷 이름과 하나 이상의 폴더여야 합니다. 파티션을 사용하는 경우 분할된 데이터의 루트를 지정합니다. 테이블 위치에 대한 자세한 내용은 Amazon S3에서 테이블 위치 단원을 참조하세요. 데이터 형식 및 권한에 대한 자세한 내용은 Athena의 테이블 및 Amazon S3의 데이터에 대한 요구 사항 단원을 참조하세요.

폴더 또는 버킷에 후행 슬래시를 사용합니다. 파일 이름이나 glob 문자를 사용하지 마세요.

다음 사용:

s3://mybucket/

s3://mybucket/folder/

s3://mybucket/folder/anotherfolder/

사용 금지:

s3://path_to_bucket

s3://path_to_bucket/*

s3://path_to-bucket/mydatafile.dat

[TBLPROPERTIES ( ['has_encrypted_data'='true | false',] ['classification'='classification_value',] property_name=property_value [, ...] ) ]

사전 정의된 테이블 속성 외에 테이블 정의에 사용할 사용자 지정 메타데이터 키-값 페어를 지정합니다(예: "comment").

has_encrypted_data - Athena에는 has_encrypted_data라는 속성이 내장되어 있습니다. 이 속성을 true로 설정하면 LOCATION에서 지정한 기본 데이터 세트가 암호화된다는 뜻입니다. 생략할 경우 작업 그룹의 설정이 클라이언트 측 설정을 재정의하지 않으면, false로 간주됩니다. 기본 데이터가 암호화되는데 false로 설정하거나 생략되면, 쿼리 결과가 오류가 됩니다. 자세한 설명은 저장 중 암호화 섹션을 참조하세요.

분류 — CloudTrail 콘솔에서 Athena용으로 만든 테이블이 속성 cloudtrail 값으로 추가됩니다. classification ETL 작업을 AWS Glue 실행하려면,, 또는 의 데이터 유형을 나타내는 classification 속성을 포함하는 테이블을 생성해야 합니다. AWS Glue csv parquet orc avro json 예를 들어 'classification'='csv'입니다. 이 속성을 지정하지 않으면 ETL 작업에 실패합니다. 이어서 AWS Glue 콘솔, API 또는 CLI를 사용해 이를 지정할 수 있습니다. 자세한 내용은 AWS Glue 개발자 안내서의 AWS Glue에서의 작업 AWS Glue Athena를 통한 ETL 작업 사용 작성을 참조하십시오.

compression_levelcompression_level 속성은 사용할 압축 수준을 지정합니다. 이 속성은 ZSTD 압축에만 적용됩니다. 가능한 값은 1~22입니다. 기본값은 3입니다. 자세한 설명은 Athena에서 ZSTD 압축 수준 사용 섹션을 참조하세요.

다른 테이블 속성에 대한 자세한 내용은 ALTER TABLE SET TBLPROPERTIES 섹션을 참조하세요.

테이블 생성에 대한 자세한 내용은 Athena에서 테이블 생성 단원을 참조하세요.