

Amazon Timestream for LiveAnalytics와 유사한 기능을 원하는 경우 Amazon Timestream for InfluxDB를 고려해 보세요. 간소화된 데이터 수집과 실시간 분석을 위한 10밀리초 미만의 쿼리 응답 시간을 제공합니다. [여기](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html)에서 자세히 알아보세요.

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

# Timestream for LiveAnalytics에서 배치 로드 사용
<a name="batch-load"></a>

Amazon Timestream for LiveAnalytics의 *배치 로드*를 사용하면 Amazon S3에 저장된 CSV 파일을 Timestream에 배치로 수집할 수 있습니다. 이 새로운 기능을 사용하면 다른 도구에 의존하거나 사용자 지정 코드를 작성할 필요 없이 Timestream for LiveAnalytics에 데이터를 저장할 수 있습니다. 쿼리 또는 분석에 즉시 필요하지 않은 데이터와 같이 유연한 대기 시간으로 데이터를 채우는 데 배치 로드를 사용할 수 있습니다.

 AWS Management Console, AWS CLI및 AWS SDKs. 자세한 내용은 [콘솔에서 배치 로드 사용](batch-load-using-console.md), [에서 배치 로드 사용 AWS CLI](batch-load-using-cli.md), [AWS SDKs에서 배치 로드 사용](batch-load-using-sdk.md) 섹션을 참조하세요.

배치 로드 외에도 WriteRecords API 작업을 사용하여 여러 레코드를 동시에 작성할 수 있습니다. 무엇을 사용할지에 대한 지침은 [WriteRecords API 작업과 배치 로드 중에서 선택](writes.writes-or-batch-load.md) 섹션을 참조하세요.

**Topics**
+ [Timestream의 배치 로드 개념](batch-load-concepts.md)
+ [배치 로드 사전 조건](batch-load-prerequisites.md)
+ [배치 로드 모범 사례](batch-load-best-practices.md)
+ [배치 로드 데이터 파일 준비](batch-load-preparing-data-file.md)
+ [배치 로드를 위한 데이터 모델 매핑](batch-load-data-model-mappings.md)
+ [콘솔에서 배치 로드 사용](batch-load-using-console.md)
+ [에서 배치 로드 사용 AWS CLI](batch-load-using-cli.md)
+ [AWS SDKs에서 배치 로드 사용](batch-load-using-sdk.md)
+ [배치 로드 오류 보고서 사용](batch-load-using-error-reports.md)

# Timestream의 배치 로드 개념
<a name="batch-load-concepts"></a>

배치 로드 기능을 더 잘 이해하려면 다음 개념을 검토하세요.

**배치 로드 태스크** - Amazon Timestream에서 소스 데이터와 대상을 정의하는 태스크입니다. 배치 로드 태스크를 생성할 때 데이터 모델과 같은 추가 구성을 지정합니다. AWS Management Console, AWS CLI및 AWS SDKs.

**가져오기 대상** - Timestream의 대상 데이터베이스 및 테이블입니다. 데이터베이스 및 테이블 생성에 대한 자세한 내용은 [데이터베이스 생성](console_timestream.md#console_timestream.db.using-console) 및 [테이블 생성](console_timestream.md#console_timestream.table.using-console) 섹션을 참조하세요.

**데이터 소스** - S3 버킷에 저장된 소스 CSV 파일입니다. 데이터 파일 준비에 대한 자세한 내용은 [배치 로드 데이터 파일 준비](batch-load-preparing-data-file.md) 섹션을 참조하세요. S3 요금에 대한 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.

**배치 로드 오류 보고서** - 배치 로드 태스크의 오류에 대한 정보를 저장하는 보고서입니다. 배치 로드 태스크의 일부로 배치 로드 오류 보고서의 S3 위치를 정의합니다. 보고서의 정보에 대한 자세한 내용은 [배치 로드 오류 보고서 사용](batch-load-using-error-reports.md) 섹션을 참조하세요.

**데이터 모델 매핑** - S3 위치의 데이터 소스에서 LiveAnalytics 테이블용 대상 Timestream으로의 시간, 차원 및 측정값에 대한 배치 로드 매핑입니다. 자세한 내용은 [배치 로드를 위한 데이터 모델 매핑](batch-load-data-model-mappings.md) 단원을 참조하십시오.

# 배치 로드 사전 조건
<a name="batch-load-prerequisites"></a>

다음은 배치 로드를 사용하기 위한 사전 조건 목록입니다. 모범 사례는 [배치 로드 모범 사례](batch-load-best-practices.md) 섹션을 참조하세요.
+ 배치 로드 소스 데이터는 헤더와 함께 CSV 형식으로 Amazon S3에 저장됩니다.
+ 각 Amazon S3 소스 버킷에 대해 연결된 정책에 다음 권한이 있어야 합니다.

  ```
  "s3:GetObject",
  "s3:GetBucketAcl"
  "s3:ListBucket"
  ```

  마찬가지로 보고서가 작성된 각 Amazon S3 출력 버킷에 대해 연결된 정책에 다음 권한이 있어야 합니다.

  ```
  "s3:PutObject",
  "s3:GetBucketAcl"
  ```

  예제:

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Action": [
                  "s3:GetObject",
                  "s3:GetBucketAcl",
                  "s3:ListBucket"
              ],
              "Resource": [
                  "arn:aws:s3:::amzn-s3-demo-source-bucket1\u201d",
                  "arn:aws:s3:::amzn-s3-demo-source-bucket2\u201d"
              ],
              "Effect": "Allow"
          },
          {
              "Action": [
                  "s3:PutObject",
                  "s3:GetBucketAcl"
              ],
              "Resource": [
                  "arn:aws:s3:::amzn-s3-demo-destination-bucket\u201d"
              ],
              "Effect": "Allow"
          }
      ]
  }
  ```

------
+ Timestream for LiveAnalytics는 데이터 모델에 제공된 정보를 CSV 헤더에 매핑하여 CSV를 구문 분석합니다. 데이터에는 타임스탬프를 나타내는 열, 하나 이상의 차원 열 및 하나 이상의 측정 열이 있어야 합니다.
+ 배치 로드에 사용되는 S3 버킷은 배치 로드에 사용되는 Timestream for LiveAnalytics 테이블과 동일한 리전 및 동일한 계정에 있어야 합니다.
+ `timestamp` 열은 Unix 에포크 이후의 시간을 나타내는 긴 데이터 유형이어야 합니다. 예를 들어 타임스탬프 `2021-03-25T08:45:21Z`는 `1616661921`로 표시됩니다. Timestream은 타임스탬프 정밀도에 대해 초, 밀리초, 마이크로초 및 나노초를 지원합니다. 쿼리 언어를 사용하는 경우 `to_unixtime`과 같은 함수를 사용하여 형식 간에 변환할 수 있습니다. 자세한 내용은 [날짜/시간 함수](date-time-functions.md) 단원을 참조하십시오.
+ Timestream은 차원 값에 대한 문자열 데이터 유형을 지원합니다. 측정 열에 대해 long, double, string, boolean 데이터 유형을 지원합니다.

배치 로드 제한 및 할당량은 [배치 로드](ts-limits.md#limits.batch-load) 섹션을 참조하세요.

# 배치 로드 모범 사례
<a name="batch-load-best-practices"></a>

배치 로드는 다음 조건 및 권장 사항을 준수할 때 가장 잘 작동합니다(높은 처리량).

1. 수집을 위해 제출된 CSV 파일은 병렬 처리 및 수집 속도를 개선하기 위해 특히 파일 크기가 100MB\$11GB인 작은 파일입니다.

1. 배치 로드가 진행 중일 때 동일한 테이블에 데이터를 동시에 수집하지 마세요(예: WriteRecords API 작업 또는 예약된 쿼리 사용). 이로 인해 병목 현상이 발생하여 배치 로드 태스크가 실패할 수 있습니다.

1. 배치 로드 태스크가 실행되는 동안 배치 로드에 사용되는 S3 버킷에서 파일을 추가, 수정 또는 제거하지 마세요.

1. 테이블 또는 소스에서 권한을 삭제 또는 취소하거나 예약되었거나 진행 중인 배치 로드 태스크가 있는 S3 버킷을 보고하지 마세요.

1. 카디널리티가 높은 차원 값 집합으로 데이터를 수집할 때는 [다중 측정 레코드 파티셔닝에 대한 권장 사항](data-modeling.md#data-modeling-multi-measure-partitioning)의 지침을 따르세요.

1. 작은 파일을 제출하여 데이터의 정확성을 테스트해야 합니다. 정확성과 관계없이 배치 로드에 제출된 모든 데이터에 대해 요금이 부과됩니다. 요금에 대한 자세한 내용은 [Amazon Timestream 요금](https://aws.amazon.com/timestream/pricing/)을 참조하세요.

1. `ActiveMagneticStorePartitions`가 250 미만이 아니면 배치 로드 태스크를 재개하지 마세요. 작업이 제한되어 실패할 수 있습니다. 동일한 데이터베이스에 대해 여러 작업을 동시에 제출하면 수를 줄일 수 있습니다.

콘솔 모범 사례는 다음과 같습니다.

1. 다중 측정 레코드에 대해 하나의 측정 이름만 사용하는 더 간단한 데이터 모델링에만 [빌더](batch-load-using-console.md#batch-load-using-visual-builder)를 사용합니다.

1. 보다 복잡한 데이터 모델링을 위해 JSON을 사용합니다. 예를 들어 다중 측정 레코드를 사용할 때 여러 측정 이름을 사용할 때 JSON을 사용합니다.

추가 Timestream for LiveAnalytics 모범 사례는 [모범 사례](best-practices.md) 섹션을 참조하세요.

# 배치 로드 데이터 파일 준비
<a name="batch-load-preparing-data-file"></a>

소스 데이터 파일에는 구분 기호로 구분된 값이 있습니다. 보다 구체적인 용어인 쉼표로 구분된 값(CSV)은 일반적으로 사용됩니다. 유효한 열 구분 기호에는 쉼표와 파이프가 포함됩니다. 레코드는 새 줄로 구분됩니다. 파일은 Amazon S3에 저장해야 합니다. 새 배치 로드 태스크를 생성할 때 소스 데이터의 위치는 파일의 ARN에 의해 지정됩니다. 파일에는 헤더가 포함됩니다. 하나의 열은 타임스탬프를 나타냅니다. 하나 이상의 다른 열은 측정값을 나타냅니다.

배치 로드에 사용되는 S3 버킷은 배치 로드에 사용되는 Timestream for LiveAnalytics 테이블과 동일한 리전에 있어야 합니다. 배치 로드 태스크가 제출된 후에는 배치 로드에 사용된 S3 버킷에서 파일을 추가하거나 제거하지 마세요. S3 버킷 작업에 대한 자세한 내용은 [Amazon S3 시작하기](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html)를 참조하세요.

**참고**  
Excel과 같은 일부 애플리케이션에서 생성되는 CSV 파일에는 예상 인코딩과 충돌하는 바이트 순서 표시(BOM)가 포함될 수 있습니다. BOM이 있는 CSV 파일을 참조하는 Timestream for LiveAnalytics 배치 로드 태스크는 프로그래밍 방식으로 처리될 때 오류가 발생합니다. 이를 방지하려면 보이지 않는 문자인 BOM을 제거합니다.  
예를 들어, Notepad\$1\$1와 같이 새로운 인코딩을 지정할 수 있는 애플리케이션에서 파일을 저장할 수 있습니다. 첫 번째 줄을 읽고 해당 줄에서 문자를 제거한 후 파일의 첫 번째 줄을 새 값으로 덮어쓰는 프로그래밍 방식을 사용할 수도 있습니다.  
Excel에서 저장할 때 여러 CSV 옵션이 있습니다. 다른 CSV 옵션으로 저장하면 설명된 문제를 방지할 수 있습니다. 그러나 인코딩 변경으로 인해 일부 문자가 영향을 받을 수 있으므로 결과를 확인해야 합니다.

## CSV 형식 파라미터
<a name="batch-load-data-file-options"></a>

이스케이프 문자는 형식 파라미터에 의해 예약된 값을 나타낼 때 사용합니다. 예를 들어 따옴표 문자가 큰따옴표인 경우 데이터에서 큰따옴표를 나타내려면 큰따옴표 앞에 이스케이프 문자를 배치합니다.

배치 로드 태스크를 생성할 때 이를 지정해야 하는 경우에 대한 자세한 내용은 [배치 로드 태스크 생성](batch-load-using-console.md#console_timestream.create-batch-load.using-console) 섹션을 참조하세요.


| 파라미터 | 옵션 | 
| --- | --- | 
| 열 구분자 | (쉼표(',') \$1 파이프('\$1') \$1 세미콜론(';') \$1 탭('/t') \$1 공백(' ')) | 
| 이스케이프 문자 | 없음 | 
| 인용 문자 | Console: (큰따옴표(") \$1 작은따옴표(')) | 
| Null 값 | 공백(' ') | 
| 공백 잘라내기 | Console: (아니요 \$1 예) | 

# 배치 로드를 위한 데이터 모델 매핑
<a name="batch-load-data-model-mappings"></a>

다음은 데이터 모델 매핑 스키마에 대한 설명과 예입니다.

## 데이터 모델 매핑 스키마
<a name="batch-load-data-model-mappings-schema"></a>

배치 로드를 위한 `DataModel`를 포함하는 `DataModelConfiguration` 객체를 포함하기 위해 `DescribeBatchLoadTask` 직접 호출에 의해 반환되는 `CreateBatchLoadTask` 요청 구문 및 `BatchLoadTaskDescription` 객체입니다. `DataModel`은 S3 위치에 CSV 형식으로 저장된 소스 데이터에서 LiveAnalytics 데이터베이스 및 테이블용 대상 Timestream으로의 매핑을 정의합니다.

`TimeColumn` 필드는 Timestream for LiveAnalytics의 대상 테이블의 `time` 열에 매핑될 값의 소스 데이터 위치를 나타냅니다. `TimeUnit`은 `TimeColumn`의 단위를 지정하며 `MILLISECONDS`, `SECONDS`, `MICROSECONDS` 또는 `NANOSECONDS` 중 하나일 수 있습니다. 차원 및 측정에 대한 매핑도 있습니다. 차원 매핑은 소스 열과 대상 필드로 구성됩니다.

자세한 내용은 [DimensionMapping](https://docs.aws.amazon.com/timestream/latest/developerguide/API_DimensionMapping)을 참조하세요. 측정값에 대한 매핑에는 `MixedMeasureMappings` 및 `MultiMeasureMappings`라는 두 가지 옵션이 있습니다.

요약하자면, `DataModel`에는 S3 위치의 데이터 소스에서 다음의 대상 Timestream for LiveAnalytics 테이블로의 매핑이 포함되어 있습니다.
+ Time
+ 측정 기준
+ 치수

가능하면 측정 데이터를 Timestream for LiveAnalytics의 다중 측정 레코드에 매핑하는 것이 좋습니다. 다중 측정 레코드의 이점에 대한 자세한 내용은 [다중 측정 레코드](writes.md#writes.writing-data-multi-measure) 섹션을 참조하세요.

소스 데이터의 여러 측정값이 한 행에 저장되는 경우 `MultiMeasureMappings`를 사용하여 Timestream for LiveAnalytics의 다중 측정 레코드에 이러한 여러 측정값을 매핑할 수 있습니다. 단일 측정 레코드에 매핑해야 하는 값이 있는 경우 `MixedMeasureMappings`를 사용할 수 있습니다.

`MixedMeasureMappings` 및 `MultiMeasureMappings` 둘 다 `MultiMeasureAttributeMappings`를 포함합니다. 다중 측정 레코드는 단일 측정 레코드가 필요한지 여부에 관계없이 지원됩니다.

Timestream for LiveAnalytics에는 다중 측정 대상 레코드만 필요한 경우 다음 구조로 측정 매핑을 정의할 수 있습니다.

```
CreateBatchLoadTask
    MeasureNameColumn
    MultiMeasureMappings
        TargetMultiMeasureName
        MultiMeasureAttributeMappings array
```

**참고**  
가능하면 `MultiMeasureMappings`를 사용하는 것이 좋습니다.

Timestream for LiveAnalytics에 단일 측정 대상 레코드가 필요한 경우 다음 구조로 측정 매핑을 정의할 수 있습니다.

```
CreateBatchLoadTask
    MeasureNameColumn
    MixedMeasureMappings array
        MixedMeasureMapping
            MeasureName
            MeasureValueType
            SourceColumn
            TargetMeasureName
            MultiMeasureAttributeMappings array
```

`MultiMeasureMappings`를 사용하는 경우 `MultiMeasureAttributeMappings` 배열이 항상 필요합니다. `MixedMeasureMappings` 배열을 사용할 때, 특정 `MixedMeasureMapping`에 대해 `MeasureValueType`이 `MULTI`인 경우 해당 `MixedMeasureMapping`에 대해 `MultiMeasureAttributeMappings`가 필요합니다. 그렇지 않으면 `MeasureValueType`는 단일 측정 레코드의 측정값 유형을 나타냅니다.

어느 쪽이든 사용 가능한 `MultiMeasureAttributeMapping` 배열이 있습니다. 다음과 같이 각 `MultiMeasureAttributeMapping`의 다중 측정 레코드에 대한 매핑을 정의합니다.

`SourceColumn`  
Amazon S3에 있는 소스 데이터의 열입니다.

`TargetMultiMeasureAttributeName`  
대상 테이블에 있는 대상 다중 측정 이름입니다. `MeasureNameColumn`이 제공되는 경우 이 입력은 필수입니다. `MeasureNameColumn`이 제공되는 경우 해당 열의 값이 다중 측정 이름으로 사용됩니다.

`MeasureValueType`  
`DOUBLE`, `BIGINT`, `BOOLEAN`, `VARCHAR` 또는 `TIMESTAMP` 중 하나입니다.

## `MultiMeasureMappings` 예제를 사용한 데이터 모델 매핑
<a name="batch-load-data-model-mappings-example-multi"></a>

이 예제에서는 각 측정값을 전용 열에 저장하는 선호하는 접근 방식인 다중 측정 레코드에 매핑하는 방법을 보여줍니다. 샘플 CSV에서 [샘플 CSV](samples/batch-load-sample-file.csv.zip)를 다운로드할 수 있습니다. 샘플에는 Timestream for LiveAnalytics 테이블의 대상 열에 매핑할 수 있는 다음 제목이 있습니다.
+ `time`
+ `measure_name`
+ `region`
+ `location`
+ `hostname`
+ `memory_utilization`
+ `cpu_utilization`

CSV 파일에서 `time` 및 `measure_name` 열을 식별합니다. 이 경우 이러한 맵은 동일한 이름의 Timestream for LiveAnalytics 테이블 열에 직접 매핑됩니다.
+ `time`은 `time`에 매핑됩니다.
+ `measure_name`은 `measure_name`(또는 선택한 값)에 매핑됩니다.

API를 사용할 때 `TimeColumn` 필드에 `time`을 지정하고 `TimeUnit` 필드에 `MILLISECONDS`와 같이 지원되는 시간 단위 값을 지정합니다. 이는 콘솔의 **소스 열 이름** 및 **타임스탬프 시간 입력**에 해당합니다. `MeasureNameColumn` 키로 정의된 `measure_name`을 사용하여 레코드를 그룹화하거나 파티셔닝할 수 있습니다.

샘플에서 `region`, `location` 및 `hostname`은 차원입니다. 차원은 `DimensionMapping` 객체 배열에 매핑됩니다.

측정값의 경우 값 `TargetMultiMeasureAttributeName`은 Timestream for LiveAnalytics 테이블의 열이 됩니다. 이 예제와 같이 동일한 이름을 유지할 수 있습니다. 또는 새로 지정할 수 있습니다. `MeasureValueType`는 `DOUBLE`, `BIGINT`, `BOOLEAN`, `VARCHAR`, `TIMESTAMP` 중 하나입니다.

```
{
  "TimeColumn": "time",
  "TimeUnit": "MILLISECONDS",
  "DimensionMappings": [
    {
      "SourceColumn": "region",
      "DestinationColumn": "region"
    },
    {
      "SourceColumn": "location",
      "DestinationColumn": "location"
    },
    {
      "SourceColumn": "hostname",
      "DestinationColumn": "hostname"
    }
  ],
  "MeasureNameColumn": "measure_name",
  "MultiMeasureMappings": {
    "MultiMeasureAttributeMappings": [
      {
        "SourceColumn": "memory_utilization",
        "TargetMultiMeasureAttributeName": "memory_utilization",
        "MeasureValueType": "DOUBLE"
      },
      {
        "SourceColumn": "cpu_utilization",
        "TargetMultiMeasureAttributeName": "cpu_utilization",
        "MeasureValueType": "DOUBLE"
      }
    ]
  }
}
```

![\[Visual builder interface showing column mappings for timestream data attributes and types.\]](http://docs.aws.amazon.com/ko_kr/timestream/latest/developerguide/images/column-mapping.jpg)


## `MixedMeasureMappings` 예제를 사용한 데이터 모델 매핑
<a name="batch-load-data-model-mappings-example-mixed"></a>

Timestream for LiveAnalytics에서 단일 측정 레코드에 매핑해야 하는 경우에만 이 접근 방식을 사용하는 것이 좋습니다.

# 콘솔에서 배치 로드 사용
<a name="batch-load-using-console"></a>

다음은 AWS Management Console에서 배치 로드를 사용하는 단계입니다. 샘플 CSV에서 [샘플 CSV](samples/batch-load-sample-file.csv.zip)를 다운로드할 수 있습니다.

**Topics**
+ [배치 로드 액세스](#console_timestream.access-batch-load.using-console)
+ [배치 로드 태스크 생성](#console_timestream.create-batch-load.using-console)
+ [배치 로드 태스크 재개](#console_timestream.resume-batch-load.using-console)
+ [비주얼 빌더 사용](#batch-load-using-visual-builder)

## 배치 로드 액세스
<a name="console_timestream.access-batch-load.using-console"></a>

다음 단계에 따라 AWS Management Console을 사용하여 배치 로드에 액세스합니다.

1. [Amazon Timestream 콘솔](https://console.aws.amazon.com/timestream)을 엽니다.

1. 탐색 창에서 **관리 도구**를 선택한 다음 **배치 로드 태스크**를 선택합니다.

1. 여기에서 배치 로드 태스크 목록을 보고 지정된 태스크를 자세히 살펴볼 수 있습니다. 태스크를 생성하고 재개할 수도 있습니다.

## 배치 로드 태스크 생성
<a name="console_timestream.create-batch-load.using-console"></a>

다음 단계에 따라 AWS Management Console을 사용하여 배치 로드 태스크를 생성합니다.

1. [Amazon Timestream 콘솔](https://console.aws.amazon.com/timestream)을 엽니다.

1. 탐색 창에서 **관리 도구**를 선택한 다음 **배치 로드 태스크**를 선택합니다.

1. **배치 로드 태스크 생성**을 선택합니다.

1. **가져오기 대상**에서 다음을 선택합니다.
   + **대상 데이터베이스** - [데이터베이스 생성](console_timestream.md#console_timestream.db.using-console)에서 생성된 데이터베이스의 이름을 선택합니다.
   + **대상 테이블** - [테이블 생성](console_timestream.md#console_timestream.table.using-console)에서 생성된 테이블의 이름을 선택합니다.

   필요한 경우 **새 테이블 생성** 버튼을 사용하여 이 패널의 테이블을 추가할 수 있습니다.

1. **데이터 소스**의 **데이터 소스 S3** 위치에서 소스 데이터가 저장되는 S3 버킷을 선택합니다. **S3 찾아보**기 버튼을 사용하여 활성 AWS 계정이 액세스할 수 있는 S3 리소스를 보거나 S3 위치 URL을 입력합니다. 데이터 소스는 동일한 리전에 있어야 합니다.

1. **파일 형식 설정**(확장 가능 섹션)에서 기본 설정을 사용하여 입력 데이터를 구문 분석할 수 있습니다. **고급 설정**을 선택할 수도 있습니다. 여기에서 **CSV 형식 파라미터**를 선택하고 파라미터를 선택하여 입력 데이터를 구문 분석할 수 있습니다. 이러한 파라미터에 대한 자세한 내용은 [CSV 형식 파라미터](batch-load-preparing-data-file.md#batch-load-data-file-options) 섹션을 참조하세요.

1. **데이터 모델 매핑 구성**에서 데이터 모델을 구성합니다. 추가 데이터 모델 지침은 [배치 로드를 위한 데이터 모델 매핑](batch-load-data-model-mappings.md) 섹션을 참조하세요.
   + **데이터 모델 매핑**에서 **구성 입력 매핑**을 선택하고 다음 중 하나를 선택합니다.
     + **비주얼 빌더** - 데이터를 시각적으로 매핑하려면 **TargetMultiMeasureName** 또는 **MeasureNameColumn**을 선택합니다. 그런 다음 **비주얼 빌더**에서 열을 매핑합니다.

       비주얼 빌더는 단일 CSV 파일을 데이터 소스로 선택하면 데이터 소스 파일에서 소스 열 헤더를 자동으로 탐지하고 로드합니다. 매핑을 생성할 속성과 데이터 유형을 선택합니다.

       비주얼 빌더 사용에 대한 자세한 내용은 [비주얼 빌더 사용](#batch-load-using-visual-builder) 섹션을 참조하세요.
     + **JSON 편집기** - 데이터 모델을 구성하기 위한 자유 형식 JSON 편집기입니다. Timestream for LiveAnalytics에 익숙하고 고급 데이터 모델 매핑을 구축하려는 경우 이 옵션을 선택합니다.
     + **S3의 JSON 파일** - S3에 저장한 JSON 모델 파일을 선택합니다. 데이터 모델을 이미 구성했고 추가 배치 로드에 재사용하려는 경우 이 옵션을 선택합니다.

1. **오류 로그 보고서**의 **오류 로그 S3 위치**에서 오류를 보고하는 데 사용할 S3 위치를 선택합니다. 이 보고서를 사용하는 방법에 대한 자세한 내용은 [배치 로드 오류 보고서 사용](batch-load-using-error-reports.md) 섹션을 참조하세요.

1. **암호화 키 유형**에서 다음 중 하나를 선택합니다.
   + **Amazon S3 관리형 키(SSE-S3)** - Amazon S3에서 생성, 관리 및 사용하는 암호화 키입니다.
   + **AWS KMS key (SSE-KMS)** - AWS Key Management Service ()로 보호되는 암호화 키입니다AWS KMS.

1. **다음**을 선택합니다.

1. **검토 및 생성 페이지**에서 설정을 검토하고 필요에 따라 편집합니다.
**참고**  
태스크가 생성된 후에는 배치 로드 태스크 설정을 변경할 수 없습니다. 태스크 완료 시간은 가져오는 데이터의 양에 따라 달라집니다.

1. **배치 로드 태스크 생성**을 선택합니다.

## 배치 로드 태스크 재개
<a name="console_timestream.resume-batch-load.using-console"></a>

상태가 '진행 중지됨'이고 여전히 재개 가능한 배치 로드 태스크를 선택하면 태스크를 재개하라는 메시지가 표시됩니다. 해당 태스크에 대한 세부 정보를 볼 때 **태스크 재개** 버튼이 있는 배너도 있습니다. 재개 가능한 태스크에는 '재개 기한' 날짜가 있습니다. 이 날짜가 만료된 후에는 태스크를 재개할 수 없습니다.

## 비주얼 빌더 사용
<a name="batch-load-using-visual-builder"></a>

비주얼 빌더를 사용하여 S3 버킷에 저장된 하나 이상의 CSV 파일의 소스 데이터 열을 Timestream for LiveAnalytics 테이블의 대상 열에 매핑할 수 있습니다.

**참고**  
역할에는 파일에 대한 `SelectObjectContent` 권한이 필요합니다. 이렇게 하지 않으면 열을 수동으로 추가하고 삭제해야 합니다.

### 자동 로드 소스 열 모드
<a name="batch-load-using-visual-builder-auto-load"></a>

버킷을 하나만 지정하는 경우 Timestream for LiveAnalytics는 소스 CSV 파일에서 열 이름을 자동으로 스캔할 수 있습니다. 기존 매핑이 없는 경우 **소스 열 가져오기**를 선택할 수 있습니다.

1. **매핑 구성 입력 설정**에서 **비주얼 빌더** 옵션을 선택한 상태에서 타임스탬프 시간 입력을 설정합니다. `Milliseconds`가 기본 설정입니다.

1. **소스 열 로드** 버튼을 클릭하여 소스 데이터 파일에 있는 열 헤더를 가져옵니다. 테이블은 데이터 소스 파일의 소스 열 헤더 이름으로 채워집니다.

1. 각 소스 열에 대해 **대상 테이블 열 이름**, **Timestream 속성 유형** 및 **데이터 유형**을 선택합니다.

   이러한 열과 가능한 값에 대한 자세한 내용은 [필드 매핑](#batch-load-using-visual-builder-mapping-fields) 섹션을 참조하세요.

1. 끌어서 채우기 기능을 사용하여 여러 열의 값을 한 번에 설정합니다.

### 수동으로 소스 열 추가
<a name="batch-load-using-visual-builder-manually-add"></a>

단일 CSV가 아닌 버킷 또는 CSV 접두사를 사용하는 경우 **열 매핑 추가** 및 **열 매핑 삭제** 버튼을 사용하여 시각적 편집기에서 열 매핑을 추가하고 삭제할 수 있습니다. 매핑을 재설정하는 버튼도 있습니다.

### 필드 매핑
<a name="batch-load-using-visual-builder-mapping-fields"></a>
+ **소스 열 이름** - 가져올 측정값을 나타내는 소스 파일의 열 이름입니다. **소스 열 가져오기**를 사용할 때 Timestream for LiveAnalytics가 이 값을 자동으로 채울 수 있습니다.
+ **대상 테이블 열 이름** - 대상 테이블에서 측정의 열 이름을 나타내는 선택적 입력입니다.
+ **Timestream 속성 유형** - `DIMENSION`과 같이 지정된 소스 열에 있는 데이터의 속성 유형입니다.
  + **TIMESTAMP** - 측정값이 수집된 시점을 지정합니다.
  + **MULTI** - 여러 측정값이 표시됩니다.
  + **DIMENSION** - 시계열 메타데이터입니다.
  + **MEAABILITY\$1NAME** - 단일 측정 레코드의 경우 이는 측정 이름입니다.
+ **데이터 유형** - `BOOLEAN`과 같은 Timestream 열의 유형입니다.
  + **BIGINT** - 64비트 정수입니다.
  + **BOOLEAN** - 로직의 두 가지 실제 값인 true와 false입니다.
  + **DOUBLE** - 64비트 가변 정밀도 숫자입니다.
  + **TIMESTAMP** - UTC에서 나노초 정밀도 시간을 사용하고 Unix 에포크 이후의 시간을 추적하는 시간 단위의 인스턴스입니다.

# 에서 배치 로드 사용 AWS CLI
<a name="batch-load-using-cli"></a>

**설정**

배치 로드 사용을 시작하려면 다음 단계를 수행하세요.

1. 의 지침에 AWS CLI 따라를 설치합니다[를 사용하여 LiveAnalytics용 Amazon Timestream에 액세스 AWS CLI](Tools.CLI.md).

1. 다음 명령을 실행하여 Timestream CLI 명령이 업데이트되었는지 확인합니다. create-batch-load-task가 목록에 있는지 확인합니다.

   `aws timestream-write help`

1. [배치 로드 데이터 파일 준비](batch-load-preparing-data-file.md)의 지침에 따라 데이터 소스를 준비합니다.

1. [를 사용하여 LiveAnalytics용 Amazon Timestream에 액세스 AWS CLI](Tools.CLI.md)의 지침에 따라 데이터베이스와 테이블을 생성합니다.

1. 보고서 출력을 위해 S3 버킷을 생성합니다. 버킷은 동일한 리전에 있어야 합니다. 버킷에 대한 자세한 내용은 [Amazon S3 버킷 생성, 구성 및 작업](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html)을 참조하세요.

1. 배치 로드 태스크를 생성합니다. 단계는 [배치 로드 태스크 생성](#batch-load-using-cli-create-task)를 참조하세요.

1. 태스크의 상태를 확인합니다. 단계는 [배치 로드 태스크 설명](#batch-load-using-cli-describe-task)를 참조하세요.

## 배치 로드 태스크 생성
<a name="batch-load-using-cli-create-task"></a>

`create-batch-load-task` 명령을 사용하여 배치 로드 태스크를 생성할 수 있습니다. CLI를 사용하여 배치 로드 태스크를 생성할 때 파라미터를 단일 JSON 조각으로 집계할 수 있는 JSON 파라미터인 `cli-input-json`를 사용할 수 있습니다. `data-model-configuration`, `data-source-configuration`, `report-configuration`, `target-database-name`, `target-table-name` 등의 다른 여러 파라미터를 사용하여 이러한 세부 정보를 구분할 수도 있습니다.

예제는 [배치 로드 태스크 생성 예제](#batch-load-using-cli-example) 섹션을 참조하세요.

## 배치 로드 태스크 설명
<a name="batch-load-using-cli-describe-task"></a>

다음과 같이 배치 로드 태스크 설명을 검색할 수 있습니다.

```
aws timestream-write describe-batch-load-task --task-id <value>
```

다음은 응답의 예입니다.

```
{
    "BatchLoadTaskDescription": {
        "TaskId": "<TaskId>",
        "DataSourceConfiguration": {
            "DataSourceS3Configuration": {
                "BucketName": "test-batch-load-west-2",
                "ObjectKeyPrefix": "sample.csv"
            },
            "CsvConfiguration": {},
            "DataFormat": "CSV"
        },
        "ProgressReport": {
            "RecordsProcessed": 2,
            "RecordsIngested": 0,
            "FileParseFailures": 0,
            "RecordIngestionFailures": 2,
            "FileFailures": 0,
            "BytesIngested": 119
        },
        "ReportConfiguration": {
            "ReportS3Configuration": {
                "BucketName": "test-batch-load-west-2",
                "ObjectKeyPrefix": "<ObjectKeyPrefix>",
                "EncryptionOption": "SSE_S3"
            }
        },
        "DataModelConfiguration": {
            "DataModel": {
                "TimeColumn": "timestamp",
                "TimeUnit": "SECONDS",
                "DimensionMappings": [
                    {
                        "SourceColumn": "vehicle",
                        "DestinationColumn": "vehicle"
                    },
                    {
                        "SourceColumn": "registration",
                        "DestinationColumn": "license"
                    }
                ],
                "MultiMeasureMappings": {
                    "TargetMultiMeasureName": "test",
                    "MultiMeasureAttributeMappings": [
                        {
                            "SourceColumn": "wgt",
                            "TargetMultiMeasureAttributeName": "weight",
                            "MeasureValueType": "DOUBLE"
                        },
                        {
                            "SourceColumn": "spd",
                            "TargetMultiMeasureAttributeName": "speed",
                            "MeasureValueType": "DOUBLE"
                        },
                        {
                            "SourceColumn": "fuel",
                            "TargetMultiMeasureAttributeName": "fuel",
                            "MeasureValueType": "DOUBLE"
                        },
                        {
                            "SourceColumn": "miles",
                            "TargetMultiMeasureAttributeName": "miles",
                            "MeasureValueType": "DOUBLE"
                        }
                    ]
                }
            }
        },
        "TargetDatabaseName": "BatchLoadExampleDatabase",
        "TargetTableName": "BatchLoadExampleTable",
        "TaskStatus": "FAILED",
        "RecordVersion": 1,
        "CreationTime": 1677167593.266,
        "LastUpdatedTime": 1677167602.38
    }
}
```

## 배치 로드 태스크 나열
<a name="batch-load-using-cli-list-tasks"></a>

다음과 같이 배치 로드 태스크를 나열할 수 있습니다.

```
aws timestream-write list-batch-load-tasks
```

출력은 다음과 같이 나타납니다.

```
{
    "BatchLoadTasks": [
        {
            "TaskId": "<TaskId>",
            "TaskStatus": "FAILED",
            "DatabaseName": "BatchLoadExampleDatabase",
            "TableName": "BatchLoadExampleTable",
            "CreationTime": 1677167593.266,
            "LastUpdatedTime": 1677167602.38
        }
    ]
}
```

## 배치 로드 태스크 재개
<a name="batch-load-using-cli-resume-task"></a>

다음과 같이 배치 로드 태스크를 재개할 수 있습니다.

```
aws timestream-write resume-batch-load-task --task-id <value>
```

응답은 성공을 나타내거나 오류 정보를 포함할 수 있습니다.

## 배치 로드 태스크 생성 예제
<a name="batch-load-using-cli-example"></a>

**Example**  

1. 이름이 `BatchLoad`인 Timestream for LiveAnalytics 데이터베이스와 이름이 `BatchLoadTest`인 테이블을 생성합니다. `MemoryStoreRetentionPeriodInHours` 및 `MagneticStoreRetentionPeriodInDays`의 값을 확인하고 필요한 경우 조정합니다.

   ```
   aws timestream-write create-database --database-name BatchLoad \
   
   aws timestream-write create-table --database-name BatchLoad \
   --table-name BatchLoadTest \
   --retention-properties "{\"MemoryStoreRetentionPeriodInHours\": 12, \"MagneticStoreRetentionPeriodInDays\": 100}"
   ```

1. 콘솔을 사용하여 S3 버킷을 생성하고 `sample.csv` 파일을 해당 위치에 복사합니다. 샘플 CSV에서 [샘플 CSV](samples/batch-load-sample-file.csv.zip)를 다운로드할 수 있습니다.

1. 콘솔을 사용하여 배치 로드 태스크가 오류와 함께 완료될 경우 보고서를 작성하기 위해 Timestream for LiveAnalytics용 S3 버킷을 생성합니다.

1. 배치 로드 태스크를 생성합니다. *\$1INPUT\$1BUCKET*과 *\$1REPORT\$1BUCKET*을 이전 단계에서 생성한 버킷으로 바꿔야 합니다.

   ```
   aws timestream-write create-batch-load-task \
   --data-model-configuration "{\
               \"DataModel\": {\
                 \"TimeColumn\": \"timestamp\",\
                 \"TimeUnit\": \"SECONDS\",\
                 \"DimensionMappings\": [\
                   {\
                     \"SourceColumn\": \"vehicle\"\
                   },\
                   {\
                     \"SourceColumn\": \"registration\",\
                     \"DestinationColumn\": \"license\"\
                   }\
                 ],
                 \"MultiMeasureMappings\": {\
                   \"TargetMultiMeasureName\": \"mva_measure_name\",\
                   \"MultiMeasureAttributeMappings\": [\
                     {\
                       \"SourceColumn\": \"wgt\",\
                       \"TargetMultiMeasureAttributeName\": \"weight\",\
                       \"MeasureValueType\": \"DOUBLE\"\
                     },\
                     {\
                       \"SourceColumn\": \"spd\",\
                       \"TargetMultiMeasureAttributeName\": \"speed\",\
                       \"MeasureValueType\": \"DOUBLE\"\
                     },\
                     {\
                       \"SourceColumn\": \"fuel_consumption\",\
                       \"TargetMultiMeasureAttributeName\": \"fuel\",\
                       \"MeasureValueType\": \"DOUBLE\"\
                     },\
                     {\
                       \"SourceColumn\": \"miles\",\
                       \"MeasureValueType\": \"BIGINT\"\
                     }\
                   ]\
                 }\
               }\
             }" \
   --data-source-configuration "{
               \"DataSourceS3Configuration\": {\
                 \"BucketName\": \"$INPUT_BUCKET\",\
                 \"ObjectKeyPrefix\": \"$INPUT_OBJECT_KEY_PREFIX\"
               },\
               \"DataFormat\": \"CSV\"\
             }" \
   --report-configuration "{\
               \"ReportS3Configuration\": {\
                 \"BucketName\": \"$REPORT_BUCKET\",\
                 \"EncryptionOption\": \"SSE_S3\"\
               }\
             }" \
   --target-database-name BatchLoad \
   --target-table-name BatchLoadTest
   ```

   앞의 명령은 다음 출력을 반환합니다.

   ```
   {
       "TaskId": "TaskId "
   }
   ```

1. 태스크 진행 상황을 확인합니다. *\$1TASK\$1ID*를 이전 단계에서 반환된 태스크 ID로 바꿔야 합니다.

   ```
   aws timestream-write describe-batch-load-task --task-id $TASK_ID 
   ```
**출력 예시**  

```
{
    "BatchLoadTaskDescription": {
        "ProgressReport": {
            "BytesIngested": 1024,
            "RecordsIngested": 2,
            "FileFailures": 0,
            "RecordIngestionFailures": 0,
            "RecordsProcessed": 2,
            "FileParseFailures": 0
        },
        "DataModelConfiguration": {
            "DataModel": {
                "DimensionMappings": [
                    {
                        "SourceColumn": "vehicle",
                        "DestinationColumn": "vehicle"
                    },
                    {
                        "SourceColumn": "registration",
                        "DestinationColumn": "license"
                    }
                ],
                "TimeUnit": "SECONDS",
                "TimeColumn": "timestamp",
                "MultiMeasureMappings": {
                    "MultiMeasureAttributeMappings": [
                        {
                            "TargetMultiMeasureAttributeName": "weight",
                            "SourceColumn": "wgt",
                            "MeasureValueType": "DOUBLE"
                        },
                        {
                            "TargetMultiMeasureAttributeName": "speed",
                            "SourceColumn": "spd",
                            "MeasureValueType": "DOUBLE"
                        },
                        {
                            "TargetMultiMeasureAttributeName": "fuel",
                            "SourceColumn": "fuel_consumption",
                            "MeasureValueType": "DOUBLE"
                        },
                        {
                            "TargetMultiMeasureAttributeName": "miles",
                            "SourceColumn": "miles",
                            "MeasureValueType": "DOUBLE"
                        }
                    ],
                    "TargetMultiMeasureName": "mva_measure_name"
                }
            }
        },
        "TargetDatabaseName": "BatchLoad",
        "CreationTime": 1672960381.735,
        "TaskStatus": "SUCCEEDED",
        "RecordVersion": 1,
        "TaskId": "TaskId ",
        "TargetTableName": "BatchLoadTest",
        "ReportConfiguration": {
            "ReportS3Configuration": {
                "EncryptionOption": "SSE_S3",
                "ObjectKeyPrefix": "ObjectKeyPrefix ",
                "BucketName": "amzn-s3-demo-bucket"
            }
        },
        "DataSourceConfiguration": {
            "DataSourceS3Configuration": {
                "ObjectKeyPrefix": "sample.csv",
                "BucketName": "amzn-s3-demo-source-bucket"
            },
            "DataFormat": "CSV",
            "CsvConfiguration": {}
        },
        "LastUpdatedTime": 1672960387.334
    }
}
```

# AWS SDKs에서 배치 로드 사용
<a name="batch-load-using-sdk"></a>

 AWS SDK를 사용하여 배치 로드 태스크를 생성, 설명 및 나열하는 방법에 대한 예는 [배치 로드 태스크 생성](code-samples.create-batch-load.md), [배치 로드 태스크 설명](code-samples.describe-batch-load.md), [배치 로드 태스크 나열](code-samples.list-batch-load-tasks.md) 및 [배치 로드 태스크 재개](code-samples.resume-batch-load-task.md) 섹션을 참조하세요.

# 배치 로드 오류 보고서 사용
<a name="batch-load-using-error-reports"></a>

배치 로드 태스크에는 다음 상태 값 중 하나가 있습니다.
+ `CREATED`(**생성됨**) - 태스크가 생성됩니다.
+ `IN_PROGRESS`(**진행 중**) - 태스크가 진행 중입니다.
+ `FAILED`(**실패)** - 태스크가 완료되었습니다. 하지만 하나 이상의 오류가 탐지되었습니다.
+ `SUCCEEDED`(**완료됨**) - 오류 없이 태스크가 완료되었습니다.
+ `PROGRESS_STOPPED`(**진행 중지됨)** - 태스크가 중지되었지만 완료되지 않았습니다. 태스크를 재개할 수 있습니다.
+ `PENDING_RESUME`(**재개 대기 중**) - 태스크가 재개 대기 중입니다.

오류가 있는 경우 이에 대해 정의된 S3 버킷에 오류 로그 보고서가 생성됩니다. 오류는 별도의 배열에서 taskErrors 또는 fileErrors로 분류됩니다. 다음은 오류 보고서의 예입니다.

```
{
    "taskId": "9367BE28418C5EF902676482220B631C",
    "taskErrors": [],
    "fileErrors": [
        {
            "fileName": "example.csv",
            "errors": [
                {
                    "reason": "The record timestamp is outside the time range of the data ingestion window.",
                    "lineRanges": [
                        [
                            2,
                            3
                        ]
                    ]
                }
            ]
        }
    ]
}
```