

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# ItemBatcher (Peta)
<a name="input-output-itembatcher"></a>

**Mengelola status dan mengubah data**  
Pelajari tentang [Melewati data antar status dengan variabel](workflow-variables.md) dan [Mengubah data dengan JSONata](transforming-data.md).

`ItemBatcher`Bidang adalah objek JSON, yang menentukan untuk memproses sekelompok item dalam eksekusi alur kerja anak tunggal. Gunakan batching saat memproses file CSV besar atau array JSON, atau kumpulan besar objek Amazon S3.

Contoh berikut menunjukkan sintaks `ItemBatcher` bidang. Dalam sintaks berikut, jumlah maksimum item yang harus diproses oleh setiap eksekusi alur kerja anak diatur ke 100.

```
{
  "ItemBatcher": {
    "MaxItemsPerBatch": {{100}}
  }
}
```

Secara default, setiap item dalam kumpulan data diteruskan sebagai input ke eksekusi alur kerja anak individu. Misalnya, asumsikan Anda menentukan file JSON sebagai masukan yang berisi array berikut:

```
[
  {
    "verdict": "true",
    "statement_date": "6/11/2008",
    "statement_source": "speech"
  },
  {
    "verdict": "false",
    "statement_date": "6/7/2022",
    "statement_source": "television"
  },
  {
    "verdict": "true",
    "statement_date": "5/18/2016",
    "statement_source": "news"
  },
  ...
]
```

Untuk input yang diberikan, setiap eksekusi alur kerja anak menerima item array sebagai inputnya. Contoh berikut menunjukkan masukan eksekusi alur kerja anak:

```
{
  "verdict": "true",
  "statement_date": "6/11/2008",
  "statement_source": "speech"
}
```

Untuk membantu mengoptimalkan kinerja dan biaya pekerjaan pemrosesan Anda, pilih ukuran batch yang menyeimbangkan jumlah item terhadap waktu pemrosesan item. Jika Anda menggunakan batching, Step Functions menambahkan item ke array **Items**. Kemudian meneruskan array sebagai input ke setiap eksekusi alur kerja anak. Contoh berikut menunjukkan batch dari dua item yang diteruskan sebagai masukan ke eksekusi alur kerja anak:

```
{
  "Items": [
    {
      "verdict": "true",
      "statement_date": "6/11/2008",
      "statement_source": "speech"
    },
    {
      "verdict": "false",
      "statement_date": "6/7/2022",
      "statement_source": "television"
    }
  ]
}
```

**Tip**  
Untuk mempelajari lebih lanjut tentang menggunakan `ItemBatcher` bidang dalam alur kerja Anda, coba tutorial dan lokakarya berikut:  
[Memproses seluruh kumpulan data dalam fungsi Lambda](tutorial-itembatcher-param-task.md)
[Ulangi item dalam batch di dalam eksekusi alur kerja anak](tutorial-itembatcher-single-item-process.md)
[Peta terdistribusi dan sumber daya terkait](https://catalog.workshops.aws/stepfunctions/use-cases/distributed-map) di *The AWS Step Functions Workshop*

**Contents**
+ [Bidang untuk menentukan pengelompokan item](#input-output-itembatcher-subfields)

## Bidang untuk menentukan pengelompokan item
<a name="input-output-itembatcher-subfields"></a>

Untuk mengelompokkan item, tentukan jumlah maksimum item yang akan dikumpulkan, ukuran batch maksimum, atau keduanya. Anda harus menentukan salah satu nilai ini ke item batch. 

**Maks item per batch**  
Menentukan jumlah maksimum item yang setiap proses eksekusi alur kerja anak. Penerjemah membatasi jumlah item yang dikumpulkan dalam `Items` array ke nilai ini. Jika Anda menentukan nomor dan ukuran batch, penerjemah mengurangi jumlah item dalam batch untuk menghindari melebihi batas ukuran batch yang ditentukan.   
Jika Anda tidak menentukan nilai ini tetapi memberikan nilai untuk ukuran batch maksimum, Step Functions akan memproses sebanyak mungkin item dalam setiap eksekusi alur kerja anak tanpa melebihi ukuran batch maksimum dalam byte.  
Misalnya, bayangkan Anda menjalankan eksekusi dengan file JSON input yang berisi 1130 node. Jika Anda menentukan nilai item maksimum untuk setiap batch 100, Step Functions akan membuat 12 batch. Dari jumlah tersebut, 11 batch berisi 100 item masing-masing, sedangkan batch kedua belas berisi 30 item yang tersisa.  
Atau, Anda dapat menentukan item maksimum untuk setiap batch sebagai [jalur referensi](amazon-states-language-paths.md#amazon-states-language-reference-paths) ke pasangan nilai kunci yang ada di masukan *status Peta Terdistribusi* Anda. Jalur ini harus menyelesaikan ke bilangan bulat positif.  
Misalnya, diberikan input berikut:  

```
{
  "maxBatchItems": 500
}
```
Anda dapat menentukan jumlah maksimum item yang akan dikumpulkan menggunakan jalur referensi (**JSONPath hanya**) sebagai berikut:  

```
{
  ...
  "Map": {
    "Type": "Map",
    "MaxConcurrency": 2000,
    "ItemBatcher": {
      "MaxItemsPerBatchPath": "$.maxBatchItems"
    }
    ...
    ...
  }
}
```
Untuk status **JSONataberbasis**, Anda juga dapat memberikan JSONata ekspresi yang mengevaluasi ke bilangan bulat positif.  
Anda dapat menentukan salah satu `MaxItemsPerBatch` atau `MaxItemsPerBatchPath (JSONPath only)` sub-bidang, tetapi tidak keduanya.

**Maks KiB per batch**  
Menentukan ukuran maksimum batch dalam byte, hingga 256 KiB. Jika Anda menentukan nomor dan ukuran batch maksimum, Step Functions mengurangi jumlah item dalam batch untuk menghindari melebihi batas ukuran batch yang ditentukan.  
Atau, Anda dapat menentukan ukuran batch maksimum sebagai [jalur referensi](amazon-states-language-paths.md#amazon-states-language-reference-paths) ke pasangan nilai kunci yang ada di masukan *status Peta Terdistribusi* Anda. Jalur ini harus menyelesaikan ke bilangan bulat positif.  
Jika Anda menggunakan batching dan tidak menentukan ukuran batch maksimum, penerjemah memproses sebanyak mungkin item yang dapat diproses hingga 256 KiB di setiap eksekusi alur kerja anak.
Misalnya, diberikan input berikut:  

```
{
  "batchSize": 131072
}
```
Anda dapat menentukan ukuran batch maksimum menggunakan jalur referensi sebagai berikut:  

```
{
  ...
  "Map": {
    "Type": "Map",
    "MaxConcurrency": 2000,
    "ItemBatcher": {
      "MaxInputBytesPerBatchPath": "$.batchSize"
    }
    ...
    ...
  }
}
```
Untuk status **JSONataberbasis**, Anda juga dapat memberikan JSONata ekspresi yang mengevaluasi ke bilangan bulat positif.  
Anda dapat menentukan sub-bidang `MaxInputBytesPerBatch` atau `MaxInputBytesPerBatchPath` (JSONPath hanya), tetapi tidak keduanya. 

**Masukan Batch**  
Secara opsional, Anda juga dapat menentukan input JSON tetap untuk disertakan dalam setiap batch yang diteruskan ke setiap eksekusi alur kerja anak. Step Functions menggabungkan input ini dengan input untuk setiap eksekusi alur kerja anak individu. Misalnya, diberikan masukan tetap berikut dari tanggal pemeriksaan fakta pada array item:  

```
"ItemBatcher": {
    "BatchInput": {
        "factCheck": "December 2022"
    }
}
```
Setiap eksekusi alur kerja anak menerima yang berikut ini sebagai masukan:  

```
{
  "BatchInput": {
    "factCheck": "December 2022"
  },
  "Items": [
    {
      "verdict": "true",
      "statement_date": "6/11/2008",
      "statement_source": "speech"
    },
    {
      "verdict": "false",
      "statement_date": "6/7/2022",
      "statement_source": "television"
    },
    ...
  ]
}
```
Untuk status **JSONataberbasis**, Anda dapat memberikan JSONata ekspresi langsung ke BatchInput, atau menggunakan JSONata ekspresi di dalam objek atau array JSON.