Amazon Athena 쿼리 결과에서 결과의 각 행에 대한 Amazon Simple Storage Service(Amazon S3) 소스 파일 위치를 반환하고 싶습니다.
간략한 설명
쿼리에서 반환한 데이터의 소스 파일 경로를 반환하는 Athena 쿼리를 작성할 수 있습니다.
- Athena 테이블의 특정 행에서 반환한 데이터가 포함된 Amazon S3 파일을 찾으려면 SELECT $path 쿼리를 실행합니다.
- 특정 Amazon S3 파일과 연결된 Athena 테이블 행을 찾으려면 WHERE $path 조건을 사용하여 SELECT 쿼리를 실행합니다.
해결 방법
전제 조건: 이 문서의 쿼리를 실행하기 전에 다음 사항이 있어야 합니다.
- Athena 테이블. 테이블이 없는 경우 CREATE TABLE 문을 실행하십시오.
- Athena 쿼리를 실행할 권한이 있는 AWS Identity and Access Management(IAM) 사용자 또는 역할.
Athena 테이블의 행과 연결된 S3 파일 찾기
Athena 테이블에서 행의 S3 소스 파일 경로를 찾으려면 다음 예와 비슷한 쿼리를 실행합니다.
-
원하는 데이터를 반환하려면 테이블에 대해 SELECT 쿼리를 실행합니다.
SELECT * FROM "my_database"."my_table" WHERE year=2019;
-
데이터의 Amazon S3 소스 파일을 찾으려면 다음과 유사한 쿼리를 실행합니다.
SELECT "$path" FROM "my_database"."my_table" WHERE year=2019;
이전 쿼리는 데이터의 Amazon S3 경로를 반환합니다.
s3://awsexamplebucket/datasets_mytable/year=2019/data_file1.json
특정 S3 파일에서 가져온 Athena 테이블 행 찾기
특정 S3 소스 파일이 있는 Athena 테이블에서 모든 행을 찾으려면 다음 단계를 참조하십시오.
-
행을 검색하려는 Amazon S3 객체의 이름과 위치를 확인합니다. 객체 이름과 위치를 모르는 경우 ls 명령을 실행하여 특정 S3 버킷 또는 접두사 아래에 객체를 나열합니다. 다음 예에서 **s3://awsexamplebucket/my_table/my_partition/**를 파티션 경로로 바꾸십시오.
aws s3 ls s3://awsexamplebucket/my_table/my_partition/
-
Amazon S3 파일과 연결된 데이터를 반환하려면 Athena에서 테이블에 대해 SELECT 쿼리를 실행합니다.
SELECT *, "$path" FROM "my_database"."my_table" WHERE regexp_like("$path", 's3://awsexamplebucket/my_table/my_partition/file-01.csv')
이전 쿼리는 지정한 Amazon S3 경로에서 가져온 데이터를 반환합니다.
id name year $path
3 John 1999 's3://awsexamplebucket/my_table/my_partition/file-01.csv'
4 Jane 2000 's3://awsexamplebucket/my_table/my_partition/file-01.csv'
Athena 쿼리는 regexp_like 함수로 와일드카드 기능을 지원합니다. 예를 들어, 경로에 문자열을 공유하는 모든 소스 파일에서 가져온 데이터를 반환하려면 다음과 같은 쿼리를 실행합니다.
SELECT *, "$path" FROM "my_database"."my_table" WHERE regexp_like("$path", 'file-1')
이 쿼리는 파일 경로 이름에 file-1이 포함된 모든 행을 반환합니다.
id name year $path
13 Mia 2009 's3://awsexamplebucket/my_table/my_partition/file-10.csv'
14 Mary 2010 's3://awsexamplebucket/my_table/my_partition/file-10.csv'
15 Max 2011 's3://awsexamplebucket/my_table/my_partition/file-11.csv'
16 Merriam 2012 's3://awsexamplebucket/my_table/my_partition/file-12.csv'
관련 정보
Parquet SerDe
데이터 소스에 연결
Amazon S3에서 소스 데이터의 파일 위치 가져오기