

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

# Membuat sebuah transformasi kustom
<a name="transforms-custom"></a>

Jika Anda perlu melakukan transformasi yang lebih rumit pada data Anda, atau ingin menambahkan kunci properti data ke set data, maka Anda dapat menambahkan transformasi **Kode kustom** ke diagram tugas Anda. Simpul kode kustom memungkinkan Anda untuk memasukkan sebuah skrip yang melakukan transformasi. 

Saat menggunakan kode kustom, Anda harus menggunakan editor skema untuk menunjukkan perubahan yang dibuat pada output melalui kode kustom tersebut. Saat mengedit skema, Anda dapat melakukan tindakan-tindakan berikut:
+ Menambah atau menghapus kunci properti data
+ Mengubah jenis data kunci properti data
+ Mengubah nama kunci properti data
+ Melakukan restrukturisasi kunci properti yang di-nest

Anda harus menggunakan *SelectFromCollection*transformasi untuk memilih satu `DynamicFrame` dari hasil node transformasi Kustom Anda sebelum Anda dapat mengirim output ke lokasi target. 

Gunakan tugas berikut untuk menambahkan simpul transformasi kustom ke diagram tugas Anda.

## Menambahkan simpul transformasi kode kustom ke diagram tugas
<a name="transforms-custom-addnode"></a>

**Untuk menambahkan simpul transformasi kustom ke diagram tugas Anda**

1. (Opsional) Buka panel Resource dan kemudian pilih **Custom transform** untuk menambahkan transformasi kustom ke diagram pekerjaan Anda. 

1. Pada tab **Properti simpul**, masukkan nama untuk simpul dalam diagram tugas. Jika sebuah simpul induk belum dipilih, atau jika Anda ingin beberapa masukan untuk transformasi kustom, kemudian pilih sebuah simpul dari **Induk simpul** yang akan digunakan sebagai sumber masukan untuk transformasi.

## Memasukkan kode untuk simpul transformasi kustom
<a name="transforms-custom-addcode"></a>

Anda dapat mengetik atau menyalin kode ke dalam bidang input. Tugas menggunakan kode ini untuk melakukan transformasi data. Anda dapat memberikan potongan kode baik Python atau Scala. Kode harus mengambil satu atau beberapa `DynamicFrames` sebagai masukan dan mengembalikan sebuah koleksi `DynamicFrames`. 

**Untuk memasukkan skrip untuk simpul transformasi kustom**

1. Dengan simpul transformasi kustom yang sudah dipilih dalam diagram tugas, pilih tab **Transformasi**. 

1. Dalam bidang entri teks pada judul **Blok kode**, tempel atau masukkan kode untuk transformasi. Kode yang Anda gunakan harus sesuai dengan bahasa yang ditentukan untuk tugas di tab **Detail tugas**.

   Saat mengacu pada node input dalam kode Anda, AWS Glue Studio beri nama yang `DynamicFrames` dikembalikan oleh node diagram pekerjaan secara berurutan berdasarkan urutan pembuatan. Gunakan salah satu metode penamaan berikut dalam kode Anda:
   + Pembuatan kode klasik — Gunakan nama fungsional untuk merujuk ke node dalam diagram pekerjaan Anda.
     + Simpul sumber data :`DataSource0`, `DataSource1`, `DataSource2`, dan seterusnya.
     + Simpul transformasi: `Transform0`, `Transform1`, `Transform2`, dan seterusnya.
   + Pembuatan kode baru - Gunakan nama yang ditentukan pada tab **properti Node** dari sebuah node, ditambahkan dengan '`_node1`', '`_node2`', dan seterusnya. Misalnya,`S3bucket_node1`, `ApplyMapping_node2``S3bucket_node2`,`MyCustomNodeName_node1`.

   Untuk informasi selengkapnya tentang pembuat kode baru, lihat[Pembuatan kode skrip](job-editor-features.md#code-gen).

Contoh berikut menunjukkan format kode yang akan dimasukkan dalam kotak kode:

------
#### [ Python ]

Contoh berikut mengambil `DynamicFrame` yang pertama diterima, mengonversinya menjadi `DataFrame` untuk menerapkan metode filter asli (hanya menyimpan catatan yang memiliki lebih dari 1000 suara), kemudian mengubahnya kembali menjadi `DynamicFrame` sebelum mengembalikannya.

```
def FilterHighVoteCounts (glueContext, dfc) -> DynamicFrameCollection:
    df = dfc.select(list(dfc.keys())[0]).toDF()
    df_filtered = df.filter(df["vote_count"] > 1000)
    dyf_filtered = DynamicFrame.fromDF(df_filtered, glueContext, "filter_votes")
    return(DynamicFrameCollection({"CustomTransform0": dyf_filtered}, glueContext))
```

------
#### [ Scala ]

Contoh berikut mengambil `DynamicFrame` yang pertama diterima, mengonversinya menjadi `DataFrame` untuk menerapkan metode filter asli (hanya menyimpan catatan yang memiliki lebih dari 1000 suara), kemudian mengubahnya kembali menjadi `DynamicFrame` sebelum mengembalikannya.

```
object FilterHighVoteCounts {
  def execute(glueContext : GlueContext, input : Seq[DynamicFrame]) : Seq[DynamicFrame] = {
    val frame = input(0).toDF()
    val filtered = DynamicFrame(frame.filter(frame("vote_count") > 1000), glueContext)
    Seq(filtered)
  }
}
```

------

## Mengedit skema di simpul transformasi kustom
<a name="transforms-custom-editschema"></a>

Saat Anda menggunakan simpul transformasi khusus, AWS Glue Studio tidak dapat secara otomatis menyimpulkan skema keluaran yang dibuat oleh transformasi. Anda menggunakan editor skema untuk menggambarkan perubahan skema yang diimplementasikan oleh kode transformasi kustom.

Sebuah simpul kode kustom dapat memiliki sejumlah simpul induk, masing-masing menyediakan `DynamicFrame` sebagai masukan untuk kode kustom Anda. Sebuah simpul kode kustom mengembalikan sebuah koleksi `DynamicFrames`. Setiap `DynamicFrame` yang digunakan sebagai masukan memiliki skema terkait. Anda harus menambahkan skema yang menggambarkan setiap `DynamicFrame` yang dikembalikan oleh simpul kode kustom. 

**catatan**  
 Saat Anda mengatur skema Anda sendiri pada transformasi khusus, AWS Glue Studio tidak mewarisi skema dari node sebelumnya. Untuk memperbarui skema, pilih simpul transformasi kustom, lalu pilih tab Pratinjau data. Setelah pratinjau dibuat, pilih 'Use Preview Schema'. Skema kemudian akan digantikan oleh skema menggunakan data pratinjau. 

**Untuk mengedit skema output untuk simpul transformasi kustom**

1. Dengan simpul transformasi kustom yang sudah dipilih dalam diagram tugas, di panel detail simpul, pilih tab **Skema output**. 

1. Pilih **Edit** untuk membuat perubahan pada skema. 

   Jika Anda memiliki kunci properti data yang di-nest, seperti array atau objek, Anda dapat memilih iko **Expand-Rows** (![A double-ended arrow pointing upwards and downwards between two parallel lines](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/expand-rows-icon.png)) di kanan atas dari setiap panel skema untuk memperluas daftar kunci properti data anak. Setelah Anda memilih ikon ini, ia akan berubah ke ikon **Collapse-Rows** (![Two arrows, one pointing up to a line and one pointing down to the same line](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/collapse-rows-icon.png)), yang dapat Anda pilih untuk menutup daftar kunci properti anak.

1. Memodifikasi skema menggunakan tindakan berikut di bagian di sisi kanan halaman:
   + Untuk mengubah nama kunci properti, tempatkan kursor di kotak teks **Kunci** untuk kunci properti, lalu masukkan nama baru.
   + Untuk mengubah tipe data untuk kunci properti, gunakan daftar untuk memilih tipe data baru untuk kunci properti.
   + Untuk menambahkan kunci properti tingkat atas baru pada skema, pilih ikon **Overflow** (![An ellipsis (...)](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/edit-schema-actions-button.png)) di sebelah kiri tombol **Batalkan**, dan kemudian pilih **Tambahkan kunci akar**.
   + Untuk menambahkan kunci properti anak untuk skema, pilih ikon **Add-Key** ![A rectangle with a plus sign in the bottom left corner](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/filter-add-icon.png) yang dikaitkan dengan kunci induk. Pilih nama untuk kunci anak dan pilih tipe data.
   + Untuk menghapus kunci properti dari skema, pilih ikon **Hapus** (![An outline of a trash can](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/delete-icon-black.png)) yang ada di ujung kanan nama kunci. 

1. Jika kode transformasi kustom Anda menggunakan beberapa `DynamicFrames`, Anda dapat menambahkan skema output tambahan. 
   + Untuk menambahkan skema baru dan kosong, pilih ikon **Overflow** (![An ellipsis (...)](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/edit-schema-actions-button.png)), dan kemudian pilih **Tambah skema output**.
   + Untuk menyalin skema yang ada ke skema output baru, pastikan skema yang ingin Anda salin ditampilkan dalam pemilih skema. Pilih ikon **Overflow** (![An ellipsis (...)](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/edit-schema-actions-button.png)), dan kemudian pilih **Duplikasi**.

   Jika Anda ingin menghapus sebuah skema output, pastikan skema yang ingin Anda salin ditampilkan dalam pemilih skema. Pilih ikon **Overflow** (![An ellipsis (...)](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/edit-schema-actions-button.png)), dan kemudian pilih **Hapus**.

1. Menambahkan kunci akar baru untuk skema baru atau mengedit kunci yang diduplikasi. 

1. Ketika Anda memodifikasi skema output, pilih **Terapkan** untuk menyimpan perubahan dan keluar dari editor skema.

   Jika Anda tidak ingin menyimpan perubahan, pilih tombol **Batalkan**.

## Mengkonfigurasi output transformasi kustom
<a name="transforms-custom-output"></a>

Sebuah transformasi kode kustom mengembalikan sebuah koleksi `DynamicFrames`, bahkan jika hanya ada satu `DynamicFrame` di set yang dihasilkan. 

**Untuk memproses output dari sebuah simpul transformasi kustom**

1. Tambahkan node *SelectFromCollection*transformasi, yang memiliki node transformasi kustom sebagai simpul induknya. Perbarui transformasi ini untuk menunjukkan set data yang ingin Anda gunakan. Untuk informasi selengkapnya, lihat [Menggunakan SelectFromCollection untuk memilih kumpulan data mana yang akan disimpan](transforms-configure-select-collection.md).

1. Tambahkan *SelectFromCollection*transformasi tambahan ke diagram pekerjaan jika Anda ingin menggunakan tambahan yang `DynamicFrames` dihasilkan oleh node transformasi kustom. 

   Pertimbangkan skenario di mana Anda menambahkan simpul transformasi kustom untuk membagi set data penerbangan menjadi beberapa set data, tetapi duplikat beberapa kunci properti pengidentifikasi di setiap skema output, seperti tanggal penerbangan atau nomor penerbangan. Anda menambahkan node *SelectFromCollection*transformasi untuk setiap skema output, dengan node transformasi kustom sebagai induknya.

1. (Opsional) Anda kemudian dapat menggunakan setiap node *SelectFromCollection*transformasi sebagai input untuk node lain dalam pekerjaan, atau sebagai induk untuk node target data.