

# Amazon S3에서 쿼리 출력 파일 찾기
<a name="querying-finding-output-files"></a>

구성이 클라이언트 측 설정을 재정의하는 작업 그룹에서 쿼리가 발생하지 않는 한 쿼리 출력 파일은 다음 경로 패턴으로 Amazon S3의 하위 폴더에 저장됩니다. 작업 그룹 구성이 클라이언트 측 설정을 재정의하는 경우 쿼리는 작업 그룹에서 지정한 결과 경로를 사용합니다.

```
{{QueryResultsLocationInS3}}/[{{QueryName}}|Unsaved{{/yyyy/mm/dd}}/]
```
+ {{QueryResultsLocationInS3}}는 작업 그룹 설정 또는 클라이언트 측 설정에 따라 지정된 쿼리 결과 위치입니다. 자세한 내용은 이 문서의 후반부에서 [쿼리 결과 위치 지정](query-results-specify-location.md) 단원을 참조하세요.
+ 다음 하위 폴더는 작업 그룹 구성에 의해 결과 경로가 재정의되지 않은 콘솔에서 실행되는 쿼리에 대해서만 생성됩니다. AWS CLI에서 실행되거나 Athena API를 사용하는 쿼리는 {{QueryResultsLocationInS3}}에 직접 저장됩니다.
  + {{QueryName}}은 결과가 저장되는 쿼리의 이름입니다. 쿼리가 실행되었지만 저장되지 않은 경우 `Unsaved`가 사용됩니다.
  + {{yyyy/mm/dd}}는 쿼리가 실행된 날짜입니다.

`CREATE TABLE AS SELECT` 쿼리와 연결된 파일은 위 패턴의 `tables` 하위 폴더에 저장됩니다.

## 쿼리 출력 파일 식별
<a name="querying-identifying-output-files"></a>

파일은 쿼리 이름, 쿼리 ID, 쿼리가 실행된 날짜를 기반으로 Amazon S3의 쿼리 결과 위치에 저장됩니다. 각 쿼리에 대한 파일은 {{QueryID}}를 사용하여 이름 지정됩니다. QueryID는 쿼리가 실행될 때 Athena가 각 쿼리에 할당하는 고유 식별자입니다.

다음 파일 형식이 저장됩니다.


| 파일 유형 | 파일 이름 지정 패턴 | 설명 | 
| --- | --- | --- | 
| **쿼리 결과 파일** | `{{QueryID}}.csv`<br />`{{QueryID}}.txt` | DML 쿼리 결과 파일은 CSV(쉼표로 분리된 값) 형식으로 저장됩니다.<br />DDL 쿼리 결과는 일반 텍스트 파일로 저장됩니다.<br />콘솔을 사용할 경우 콘솔의 **결과** 창에서 또는 쿼리 **기록**에서 결과 파일을 다운로드할 수 있습니다. 자세한 내용은 [Athena 콘솔을 사용하여 쿼리 결과 파일 다운로드](saving-query-results.md) 단원을 참조하세요. | 
| **쿼리 메타데이터 파일** | `{{QueryID}}.csv.metadata`<br />`{{QueryID}}.txt.metadata` | DML 및 DDL 쿼리 메타데이터 파일은 이진 형식으로 저장되며 사람이 읽을 수 없습니다. 파일 확장명은 관련된 쿼리 결과 파일과 같습니다. Athena는 `GetQueryResults` 작업을 사용해 쿼리 결과를 읽을 때 메타데이터를 사용합니다. 이러한 파일을 삭제할 수 있지만, 쿼리에 대한 중요한 정보가 손실될 수 있기 때문에 파일을 삭제하지 않는 것이 좋습니다. | 
| **데이터 매니페스트 파일** | `{{QueryID}}-manifest.csv` | [INSERT INTO](insert-into.md) 쿼리가 실행될 때 Athena가 Amazon S3 데이터 원본 위치에서 생성하는 파일을 추적하기 위해 데이터 매니페스트 파일이 생성됩니다. 쿼리가 실패하는 경우 매니페스트는 해당 쿼리가 작성하려고 한 파일도 추적합니다. 매니페스트는 실패한 쿼리에서 발생하는 분리된 파일을 식별하는 데 유용합니다. | 

## AWS CLI를 사용하여 쿼리 출력 위치 및 파일 식별
<a name="querying-finding-output-files-cli"></a>

AWS CLI를 사용하여 쿼리 출력 위치 및 결과 파일을 식별하려면 다음 예제처럼 `aws athena get-query-execution` 명령을 실행합니다. {{abc1234d-5efg-67hi-jklm-89n0op12qr34}}를 쿼리 ID로 교체합니다.

```
aws athena get-query-execution --query-execution-id {{abc1234d-5efg-67hi-jklm-89n0op12qr34}}
```

이 명령은 다음과 비슷한 출력을 반환합니다. 각 출력 파라미터에 대한 설명은 *AWS CLI 명령 참조*의 [get-query-execution](https://docs.aws.amazon.com/cli/latest/reference/athena/get-query-execution.html)을 참조하세요.

```
{
    "QueryExecution": {
        "Status": {
            "SubmissionDateTime": 1565649050.175,
            "State": "SUCCEEDED",
            "CompletionDateTime": 1565649056.6229999
        },
        "Statistics": {
            "DataScannedInBytes": 5944497,
            "DataManifestLocation": "s3://amzn-s3-demo-bucket/athena-query-results-123456789012-us-west-1/MyInsertQuery/2019/08/12/abc1234d-5efg-67hi-jklm-89n0op12qr34-manifest.csv",
            "EngineExecutionTimeInMillis": 5209
        },
        "ResultConfiguration": {
            "EncryptionConfiguration": {
                "EncryptionOption": "SSE_S3"
            },
            "OutputLocation": "s3://amzn-s3-demo-bucket/athena-query-results-123456789012-us-west-1/MyInsertQuery/2019/08/12/abc1234d-5efg-67hi-jklm-89n0op12qr34"
        },
        "QueryExecutionId": "abc1234d-5efg-67hi-jklm-89n0op12qr34",
        "QueryExecutionContext": {},
        "Query": "INSERT INTO mydb.elb_log_backup SELECT * FROM mydb.elb_logs LIMIT 100",
        "StatementType": "DML",
        "WorkGroup": "primary"
    }
}
```