

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

# Langkah 2. Menerapkan logika transformasi
<a name="custom-visual-transform-implementation"></a>

**catatan**  
 Transformasi visual khusus hanya mendukung skrip Python. Scala tidak didukung. 

 Untuk menambahkan kode yang mengimplementasikan fungsi yang ditentukan oleh file konfigurasi.json, disarankan untuk menempatkan file Python di lokasi yang sama dengan file.json, dengan nama yang sama tetapi dengan ekstensi “.py”. AWS Glue Studiosecara otomatis memasangkan file.json dan .py sehingga Anda tidak perlu menentukan jalur file Python di file konfigurasi. 

 Dalam file Python, tambahkan fungsi yang dideklarasikan, dengan parameter bernama dikonfigurasi dan daftarkan untuk digunakan. `DynamicFrame` Berikut ini adalah contoh file Python: 

```
from awsglue import DynamicFrame

# self refers to the DynamicFrame to transform, 
# the parameter names must match the ones defined in the config
# if it's optional, need to provide a default value
def myTransform(self, email, phone, age=None, gender="", 
                      country="", promotion=False):
   resulting_dynf = # do some transformation on self 
   return resulting_dynf
   
DynamicFrame.myTransform = myTransform
```

 Disarankan untuk menggunakan AWS Glue notebook untuk cara tercepat untuk mengembangkan dan menguji kode python. Lihat [Memulai dengan notebook di AWS Glue Studio](https://docs.aws.amazon.com/glue/latest/ug/notebook-getting-started.html). 

 Untuk mengilustrasikan cara menerapkan logika transformasi, transformasi visual khusus pada contoh di bawah ini adalah transformasi untuk memfilter data yang masuk agar hanya menyimpan data yang terkait dengan status AS tertentu. File.json berisi parameter untuk `functionName` as `custom_filter_state` dan dua argumen (“state” dan “colName” dengan tipe “str”). 

 Contoh file config .json adalah: 

```
{
"name": "custom_filter_state",
"displayName": "Filter State",
"description": "A simple example to filter the data to keep only the state indicated.",
"functionName": "custom_filter_state",
"parameters": [
   {
    "name": "colName",
    "displayName": "Column name",
    "type": "str",
    "description": "Name of the column in the data that holds the state postal code"
   },
   {
    "name": "state",
    "displayName": "State postal code",
    "type": "str",
    "description": "The postal code of the state whole rows to keep"
   }   
  ]
}
```

**Untuk mengimplementasikan skrip pendamping dengan Python**

1.  Mulai buku AWS Glue catatan dan jalankan sel awal yang disediakan untuk sesi yang akan dimulai. Menjalankan sel awal menciptakan komponen dasar yang diperlukan. 

1.  Buat fungsi yang melakukan pemfilteran seperti yang dijelaskan dalam contoh dan daftarkan. `DynamicFrame` Salin kode di bawah ini dan tempel ke sel di AWS Glue buku catatan. 

   ```
   from awsglue import DynamicFrame
   
   def custom_filter_state(self, colName, state):
       return self.filter(lambda row: row[colName] == state)
   
   DynamicFrame.custom_filter_state = custom_filter_state
   ```

1.  Buat atau muat data sampel untuk menguji kode di sel yang sama atau sel baru. Jika Anda menambahkan data sampel di sel baru, jangan lupa untuk menjalankan sel. Contoh: 

   ```
   # A few of rows of sample data to test
   data_sample = [
       {"state": "CA", "count": 4},
       {"state": "NY", "count": 2},
       {"state": "WA", "count": 3}    
   ]
   df1 = glueContext.sparkSession.sparkContext.parallelize(data_sample).toDF()
   dynf1 = DynamicFrame.fromDF(df1, glueContext, None)
   ```

1.  Uji untuk memvalidasi “custom\$1filter\$1state” dengan argumen yang berbeda:   
![\[Tangkapan layar menunjukkan sel di AWS Glue buku catatan dengan argumen yang diteruskan ke fungsi DynamicFrame.show.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/dynamic-transform-notebook-test-python.png)

1.  Setelah menjalankan beberapa tes, simpan kode dengan ekstensi.py dan beri nama file.py dengan nama yang mencerminkan nama file.json. File.py dan.json harus berada di folder transformasi yang sama. 

    Salin kode berikut dan tempel ke file dan ganti nama dengan ekstensi file.py. 

   ```
   from awsglue import DynamicFrame
   
   def custom_filter_state(self, colName, state):
       return self.filter(lambda row: row[colName] == state)
   
   DynamicFrame.custom_filter_state = custom_filter_state
   ```

1.  DiAWS Glue Studio, buka pekerjaan visual dan tambahkan transformasi ke pekerjaan dengan memilihnya dari daftar **Transformasi** yang tersedia. 

    Untuk menggunakan kembali transformasi ini dalam kode skrip Python, tambahkan jalur Amazon S3 ke file.py dalam pekerjaan di bawah “Jalur file yang direferensikan” dan dalam skrip, impor nama file python (tanpa ekstensi) dengan menambahkannya ke bagian atas file. Sebagai contoh: `import` <name of the file (without the extension) > 