Amazon Athena 쿼리를 실행할 때 표시되는 "COLUMN_NOT_FOUND" 오류를 해결하고 싶습니다.
간략한 설명
지정된 열이 테이블의 스키마 정의에 없는 경우 다음 오류 메시지 중 하나가 표시됩니다.
- "COLUMN_NOT_FOUND: line 1:8: Column 'column_name' cannot be resolved or requester is not authorized to access requested resources"
- "COLUMN_NOT_FOUND: line 1:8: Relation contains no accessible columns"
테이블에 액세스하는 데 필요한 AWS Lake Formation 권한이 없는 경우 다음 오류 메시지 중 하나가 표시됩니다.
- "INVALID_VIEW: line 1:15: Failed analyzing stored view 'awsdatacatalog.database-name.view-name': line 1:8: Relation contains no accessible columns"
- "COLUMN_NOT_FOUND: Column 'column_name' cannot be resolved or requester is not authorized to access requested resources"
표시되는 오류 메시지를 기반으로 문제를 해결하십시오.
해결 방법
열이 테이블 정의에 있는지 확인
열이 존재하지 않아서 테이블의 스키마 정의에 없는 것일 수도 있습니다. 해당 열이 테이블의 스키마에 존재하는지 확인하려면 AWS Glue 콘솔 또는 AWS CLI를 사용하십시오.
AWS Glue 콘솔
다음 단계를 완료하십시오.
- AWS Glue 콘솔을 엽니다.
- 탐색 창에서 데이터 카탈로그를 선택한 다음 테이블을 선택합니다.
- 테이블을 선택합니다.
- 스키마에서 스키마를 보고 테이블이 존재하는지 확인합니다.
AWS CLI
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
다음 get-table CLI 명령을 실행합니다.
aws glue get-table --database-name database-name --name table-name
참고: database-name과 table-name을 해당 데이터베이스 및 테이블 이름으로 바꾸십시오.
테이블 정의에 열 추가
테이블의 스키마 정의에 열이 존재하지 않는 경우 AWS Glue 콘솔 또는 Athena 쿼리 편집기를 사용하여 열을 추가하십시오.
AWS Glue 콘솔
다음 단계를 완료하십시오.
- AWS Glue 콘솔을 엽니다.
- 탐색 창에서 데이터 카탈로그를 선택한 다음 테이블을 선택합니다.
- 테이블을 선택한 다음 스키마 편집을 선택합니다.
- 추가를 선택합니다.
- 스키마 항목 추가 창에서 다음 섹션에 값을 추가합니다.<br id=hardline_break/>
**열 #**에는 새 열 바로 앞의 열 번호를 입력합니다. 예를 들어 새 열을 테이블 스키마의 세 번째 열로 만들려면 2를 입력합니다.<br id=hardline_break/>
이름에 새 열의 이름을 입력합니다.<br id=hardline_break/>
데이터 유형에서 데이터 유형을 선택합니다.
- 저장을 선택한 다음 새 테이블 버전으로 저장을 선택합니다.
Athena 쿼리 편집기
다음 단계를 완료하십시오.
- Athena 콘솔을 엽니다.
- 탐색 창에서 쿼리 편집기를 선택합니다.
- 다음 ALTER TABLE ADD COLUMNS DDL 문을 실행합니다.
ALTER TABLE table-name ADD COLUMNS (column-name column-data-type)
참고: table-name을 테이블 이름으로 바꾸십시오. 또한 column-name 및 column-data-type을 새 열에 사용할 이름 및 데이터 유형으로 바꾸십시오.
동일한 AWS 계정에서 테이블 또는 뷰를 쿼리할 수 있는 권한을 Lake Formation에 부여합니다.
다음 단계를 완료하십시오.
- 데이터 레이크 관리자 권한으로 Lake Formation 콘솔을 엽니다.
- 탐색 창에서 테이블 또는 뷰를 선택합니다.
- 테이블 또는 뷰를 선택한 다음 작업을 선택합니다.
- 드롭다운 메뉴에서 권한 부여를 선택합니다.
- 보안 주체에서 IAM 사용자 및 역할을 선택합니다.
- IAM 사용자 및 역할에서 액세스 권한을 부여하려는 AWS Identity and Access Management(IAM) 사용자 또는 보안 주체를 선택합니다.
- LF-태그 또는 카탈로그 리소스에서 이름이 지정된 데이터 카탈로그 리소스를 선택한 다음 카탈로그, 데이터베이스 및 테이블 또는 뷰를 선택합니다.
- 테이블 권한 또는 뷰 권한 및 부여 가능 권한에서 부여하려는 액세스 권한을 선택합니다.<br id=hardline_break/>
참고: 테이블이나 뷰를 쿼리하려면 선택 및 설명을 선택해야 합니다.
- 권한 부여를 선택합니다.
참고: 데이터 필터를 사용하는 경우 열 수준 액세스를 올바르게 설정했는지 확인하십시오. 열 포함을 선택하는 경우 열을 포함해야 합니다. 열 제외를 선택하는 경우 열을 제외하지 마십시오.
다른 계정으로 테이블을 쿼리할 수 있는 권한 부여
먼저 리소스 링크를 생성합니다. 그런 다음 리소스 링크 및 대상 테이블에 대한 권한을 부여합니다.
리소스 링크에 대한 권한을 부여하려면 다음 단계를 완료하십시오.
- 대상 계정에서 데이터 레이크 관리자 권한으로 Lake Formation 콘솔을 엽니다.
- 탐색 창에서 테이블을 선택합니다.
- 리소스 링크를 선택한 다음 작업을 선택합니다.
- 드롭다운 메뉴에서 권한 부여를 선택합니다.
- 보안 주체에서 IAM 사용자 및 역할을 선택합니다.
- IAM 사용자 및 역할에서 액세스 권한을 부여하려는 IAM 사용자 또는 보안 주체를 선택합니다.
- LF-태그 또는 카탈로그 리소스에서 카탈로그, 데이터베이스 및 테이블을 선택합니다.
- 리소스 링크 권한 및 부여 가능한 권한에서 설명을 선택합니다.
- 권한 부여를 선택합니다.
대상 테이블에 대한 권한을 부여하려면 이전 단계를 반복합니다. 4단계에서 대상에 권한 부여를 선택하고 8단계에서 선택을 선택합니다.
관련 정보
Athena DynamoDB 커넥터에서 "Column not found" 오류를 해결하려면 어떻게 해야 합니까?