

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

# AWS Glue Kualitas Data
<a name="glue-data-quality"></a>

AWS Glue Kualitas Data memungkinkan Anda untuk mengukur dan memantau kualitas data Anda sehingga Anda dapat membuat keputusan bisnis yang baik. Dibangun di atas DeeQu kerangka kerja sumber terbuka, Kualitas AWS Glue Data memberikan pengalaman tanpa server yang dikelola. AWS Glue Kualitas Data bekerja dengan Data Quality Definition Language (DQDL), yang merupakan bahasa khusus domain yang Anda gunakan untuk menentukan aturan kualitas data. Untuk mempelajari lebih lanjut tentang DQDL dan jenis aturan yang didukung, lihat. [Referensi Bahasa Definisi Kualitas Data (DQDL)](dqdl.md)

Untuk detail dan harga produk tambahan, lihat halaman layanan untuk [Kualitas AWS Glue Data](https://aws.amazon.com/glue/features/data-quality).

## Manfaat dan fitur utama
<a name="glue-data-quality-key-features"></a>

 Manfaat dan fitur utama Kualitas AWS Glue Data meliputi: 
+  **Tanpa server** - Tidak ada instalasi, penambalan, atau pemeliharaan. 
+  **Memulai dengan cepat** — Kualitas AWS Glue Data menganalisis data Anda dengan cepat dan membuat aturan kualitas data untuk Anda. Anda dapat memulai dengan dua klik: “Buat Aturan Kualitas Data → Rekomendasikan aturan”. 
+  **Deteksi masalah kualitas data** — Gunakan pembelajaran mesin (ML) untuk mendeteksi anomali dan masalah kualitas hard-to-detect data. 
+  **Improvisasi aturan Anda** — dengan 25\$1 aturan out-of-the-box DQ untuk memulai, Anda dapat membuat aturan yang sesuai dengan kebutuhan spesifik Anda. 
+  **Evaluasi kualitas dan buat keputusan bisnis yang percaya diri** — Setelah Anda mengevaluasi aturan, Anda mendapatkan skor Kualitas Data yang memberikan gambaran umum tentang kesehatan data Anda. Gunakan skor Kualitas Data untuk membuat keputusan bisnis yang percaya diri. 
+  **Nol pada data buruk** — Kualitas AWS Glue Data membantu Anda mengidentifikasi catatan yang tepat yang menyebabkan skor kualitas Anda turun. Mudah mengidentifikasi mereka, karantina dan memperbaikinya. 
+  **Bayar saat Anda pergi** - Tidak ada lisensi tahunan yang Anda perlukan untuk menggunakan Kualitas AWS Glue Data. 
+  **Tidak ada penguncian** - Kualitas AWS Glue Data dibangun di atas sumber terbuka DeeQu, memungkinkan Anda untuk menjaga aturan yang Anda buat dalam bahasa terbuka. 
+  **Pemeriksaan kualitas data** — Anda dapat menerapkan pemeriksaan kualitas data Data Catalog dan saluran AWS Glue ETL yang memungkinkan Anda mengelola kualitas data saat istirahat dan dalam perjalanan. 
+  **Deteksi kualitas data berbasis ML** — Gunakan pembelajaran mesin (ML) untuk mendeteksi anomali dan hard-to-detect masalah kualitas data. 
+  **Bahasa terbuka untuk mengekspresikan aturan** — memastikan bahwa aturan kualitas data ditulis secara konsisten dan sederhana. Pengguna bisnis dapat dengan mudah mengekspresikan aturan kualitas data dalam bahasa langsung yang dapat mereka pahami. Untuk insinyur, bahasa ini memberikan fleksibilitas untuk menghasilkan kode, menerapkan kontrol versi yang konsisten, dan mengotomatiskan penerapan. 

## Cara kerjanya
<a name="glue-data-quality-how-it-works"></a>

Ada dua titik masuk untuk Kualitas AWS Glue Data: pekerjaan AWS Glue ETL AWS Glue Data Catalog dan pekerjaan. Bagian ini memberikan gambaran umum tentang kasus penggunaan dan AWS Glue fitur yang didukung oleh setiap titik masuk.

### Kualitas data untuk AWS Glue Data Catalog
<a name="glue-data-quality-for-data-catalog"></a>

AWS Glue Kualitas Data mengevaluasi objek yang disimpan dalam AWS Glue Data Catalog Ini menawarkan non-coders cara mudah untuk mengatur aturan kualitas data. Persona ini termasuk pengelola data dan analis bisnis.



[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/rK1NGQu4Sgg/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/rK1NGQu4Sgg)




Anda dapat memilih opsi ini untuk kasus penggunaan berikut:
+ Anda ingin melakukan tugas kualitas data pada kumpulan data yang telah dikatalogkan di. AWS Glue Data Catalog
+ Anda bekerja pada tata kelola data dan perlu mengidentifikasi atau mengevaluasi masalah kualitas data di danau data Anda secara berkelanjutan.

Anda dapat mengelola kualitas data untuk Katalog Data menggunakan antarmuka berikut:
+ Konsol AWS Glue manajemen
+ AWS Glue APIs

Untuk memulai dengan Kualitas AWS Glue Data untuk AWS Glue Data Catalog melihat[Memulai dengan AWS Glue Data Quality untuk Data Catalog](data-quality-getting-started.md).

### Kualitas data untuk pekerjaan AWS Glue ETL
<a name="glue-data-quality-for-etl"></a>

AWS Glue Kualitas Data untuk pekerjaan AWS Glue ETL memungkinkan Anda melakukan tugas kualitas data *proaktif*. Tugas proaktif membantu Anda mengidentifikasi dan menyaring data buruk *sebelum* Anda memuat kumpulan data ke danau data Anda.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/DUd5s_CFtBM/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/DUd5s_CFtBM)


Anda dapat memilih kualitas data untuk pekerjaan ETL untuk kasus penggunaan berikut:
+ Anda ingin memasukkan tugas kualitas data ke dalam pekerjaan ETL Anda
+ Anda ingin menulis kode yang mendefinisikan tugas kualitas data dalam skrip ETL
+ Anda ingin mengelola kualitas data yang mengalir di pipeline data visual Anda

Anda dapat mengelola kualitas data untuk pekerjaan ETL menggunakan antarmuka berikut:
+ AWS Glue Studio, AWS Glue Studio notebook, dan sesi AWS Glue interaktif
+ AWS Glue pustaka untuk skrip ETL
+ AWS Glue APIs

Untuk memulai kualitas data untuk pekerjaan ETL, lihat [Tutorial: Memulai Kualitas Data](https://docs.aws.amazon.com/glue/latest/ug/gs-data-quality-chapter.html) di *Panduan AWS Glue Studio Pengguna*.

### Membandingkan kualitas data untuk Katalog Data dengan kualitas data untuk pekerjaan ETL
<a name="glue-data-quality-compare"></a>

Tabel ini memberikan ikhtisar fitur yang didukung oleh setiap titik masuk untuk Kualitas AWS Glue Data.


****  

| Fitur | Kualitas data untuk Katalog Data | Kualitas data untuk pekerjaan ETL | 
| --- | --- | --- | 
| Sumber data | Amazon S3, Amazon Redshift, sumber JDBC kompatibel dengan Katalog Data, dan format danau data transaksional seperti Apache Iceberg, Apache Hudi, dan Delta Lake. AWS Lake Formation Format OTF terkelola juga didukung dengan beberapa batasan. Amazon Athena tampilan yang dikatalogkan dalam Katalog AWS Glue Data tidak didukung. Silakan lihat[Jenis sumber yang didukung](data-quality-getting-started.md#data-quality-get-started-supported-source-types).  | Semua sumber data yang didukung oleh AWS Glue, termasuk konektor khusus dan konektor pihak ketiga. | 
| Rekomendasi aturan Kualitas Data | Didukung | Tidak Support | 
| Penulis dan jalankan aturan DQDL | Didukung | Didukung | 
| Penskalaan otomatis | Tidak didukung | Didukung | 
| AWS Glue Dukungan Flex | Tidak didukung | Didukung | 
| Penjadwalan | Didukung saat mengevaluasi aturan Kualitas Data dan melalui Step Functions. | Didukung saat menggunakan Step Functions dan alur kerja. | 
| Mengidentifikasi catatan yang gagal memeriksa kualitas data | Tidak didukung | Didukung | 
| Integrasi dengan Amazon Eventbridge | Didukung | Didukung | 
| Integrasi dengan AWS Cloudwatch | Didukung | Didukung | 
| Menulis hasil kualitas data ke Amazon S3 | Didukung | Didukung | 
| Kualitas data tambahan | Didukung melalui predikat pushdown | Didukung melalui AWS Glue bookmark | 
| AWS CloudFormation dukungan | Didukung | Didukung | 
| Deteksi anomali berbasis ML | Tidak didukung | Didukung | 
| Aturan dinamis | Tidak didukung | Didukung | 

## Pertimbangan-pertimbangan
<a name="glue-data-quality-considerations"></a>

Pertimbangkan hal-hal berikut sebelum Anda menggunakan Kualitas AWS Glue Data:
+ Aturan kualitas data tidak dapat mengevaluasi sumber data bertingkat atau tipe daftar. Lihat [Ratakan struct bersarang](transforms-flatten.md). 

## Terminologi
<a name="data-quality-terms"></a>

Daftar berikut mendefinisikan istilah yang terkait dengan Kualitas AWS Glue Data.

**Bahasa Definisi Kualitas Data (DQDL)**  
Bahasa khusus domain yang dapat Anda gunakan untuk menulis aturan Kualitas AWS Glue Data.   
Untuk mempelajari lebih lanjut tentang DQDL, lihat panduan. [Referensi Bahasa Definisi Kualitas Data (DQDL)](dqdl.md)

**kualitas data **  
Menjelaskan seberapa baik dataset melayani tujuan spesifiknya. AWS Glue Kualitas Data mengevaluasi aturan terhadap kumpulan data untuk mengukur kualitas data. Setiap aturan memeriksa karakteristik tertentu seperti kesegaran atau integritas data. Untuk mengukur kualitas data, Anda dapat menggunakan skor *kualitas data*.

**skor kualitas data**  
Persentase aturan kualitas data yang lulus (menghasilkan true) saat Anda mengevaluasi kumpulan aturan dengan Kualitas AWS Glue Data.

**aturan**  
Ekspresi DQDL yang memeriksa data Anda untuk karakteristik tertentu dan mengembalikan nilai Boolean. Untuk informasi selengkapnya, lihat [Struktur aturan](dqdl.md#dqdl-syntax-rule-structure).

**analyzer**  
Ekspresi DQDL yang mengumpulkan statistik data. Analyzer mengumpulkan statistik data yang dapat digunakan oleh algoritma ML untuk mendeteksi anomali dan masalah kualitas hard-to-detect data dari waktu ke waktu.

**aturan**  
 AWS Glue Sumber daya yang terdiri dari seperangkat aturan kualitas data. Sebuah aturan harus dikaitkan dengan tabel di. AWS Glue Data Catalog Saat Anda menyimpan kumpulan aturan, AWS Glue tetapkan Nama Sumber Daya Amazon (ARN) ke kumpulan aturan.

**skor kualitas data**  
Persentase aturan kualitas data yang lulus (menghasilkan true) saat Anda mengevaluasi kumpulan aturan dengan Kualitas AWS Glue Data.

**observasi**  
Wawasan yang belum dikonfirmasi dihasilkan AWS Glue dengan menganalisis statistik data yang dikumpulkan dari aturan dan penganalisis dari waktu ke waktu.

## Batas
<a name="data-quality-limits"></a>

 AWS Glue Batas layanan Kualitas Data: 
+  Anda dapat memiliki 2.000 aturan dalam satu set aturan. Jika aturan Anda lebih besar, kami sarankan untuk membagi menjadi beberapa aturan. 
+  Ukuran ruleset adalah 65KB. Jika aturan Anda lebih besar, kami sarankan untuk membagi menjadi beberapa aturan. 
+  AWS Glue Kualitas Data mengumpulkan statistik saat Anda membuat aturan atau penganalisis. Tidak ada biaya yang terkait dengan penyimpanan statistik ini. Namun, ada batas 100.000 statistik per akun, dan statistik ini akan dipertahankan selama maksimal dua tahun. 

## Catatan rilis untuk Kualitas AWS Glue Data
<a name="data-quality-release-notes"></a>

Topik ini menjelaskan fitur yang diperkenalkan dalam Kualitas AWS Glue Data.

### Ketersediaan umum: fitur baru
<a name="data-quality-release-notes-ga"></a>

Fitur-fitur baru berikut tersedia dengan ketersediaan umum Kualitas AWS Glue Data:
+ Kemampuan untuk mengidentifikasi catatan mana yang gagal pemeriksaan kualitas data sekarang didukung AWS Glue Studio
+ Jenis aturan kualitas data baru seperti memvalidasi integritas referensial data antara dua set data, membandingkan data antara dua kumpulan data, dan pemeriksaan tipe data
+ Peningkatan pengalaman pengguna di AWS Glue Data Catalog
+ Support untuk Apache Iceberg, Apache Hudi dan Delta Lake
+ Dukungan untuk Amazon Redshift
+ Pemberitahuan yang disederhanakan dengan Amazon EventBridge
+ AWS CloudFormation dukungan untuk membuat rulesets
+ Peningkatan kinerja: opsi caching di ETL dan AWS Glue Studio untuk kinerja yang lebih cepat saat mengevaluasi kualitas data

### 27 November 2023 (Pratinjau)
<a name="data-quality-release-notes-preview"></a>
+  Kemampuan deteksi anomali bertenaga ML sekarang tersedia di ETL dan. AWS Glue AWS Glue Studio Dengan ini, Anda sekarang dapat mendeteksi anomali dan masalah kualitas hard-to-detect data 
+  [Aturan Dinamis memungkinkan Anda untuk memberikan ambang dinamis (mis:) `RowCount> avg(last(10))`](https://docs.aws.amazon.com/glue/latest/dg/dqdl.html#dqdl-dynamic-rules) 

### Mar 12, 2024
<a name="data-quality-release-notes-mar12"></a>
+  Perbaikan DQDL 
  +  [Support untuk Kata Kunci seperti NULL, BLANKS, WHITESPACES\$1ONLY](dqdl.md#dqdl-keywords-null-empty-whitespaces_only) 
  +  [Opsi untuk menentukan bagaimana Kualitas AWS Glue Data harus menangani aturan Komposit](dqdl.md#dqdl-syntax-rule-composition) 
  +  [ ColumnValues tipe aturan tidak akan mengizinkan nilai NULL lewat selama perbandingan](dqdl.md#dqdl-keywords-null-empty-whitespaces_only) 
  +  [Support untuk operator NOT di DQDL](dqdl.md#dqdl-syntax-rule-expressions) 

### Juni 26, 2024
<a name="data-quality-release-notes-jun26"></a>
+ Perbaikan DQDL
  + DQDL sekarang mendukung [klausa where](dqdl.md#dqdl-filtering-data-in-dqdl) sehingga Anda dapat memfilter data sebelum menerapkan aturan DQ

### Agustus 7, 2024
<a name="data-quality-release-notes-aug7"></a>
+ Deteksi Anomali dan Aturan Dinamis sekarang tersedia secara umum

### Nov 22, 2024
<a name="data-quality-release-notes-nov22-2024"></a>
+  [Aturan komposit yang kompleks memungkinkan Anda membuat aturan bisnis yang lebih kompleks dengan dukungan bersarang](https://docs.aws.amazon.com/glue/latest/dg/dqdl.html#dqdl-syntax-rule-composition) 
+  Jenis aturan baru untuk mengelola kualitas data untuk file Anda 
  +  [ FileFreshness ](https://docs.aws.amazon.com/glue/latest/dg/dqdl-rule-types-FileFreshness) 
  +  [ FileSize ](https://docs.aws.amazon.com/glue/latest/dg/dqdl-rule-types-FileSize) 
  +  [ FileUniqueness ](https://docs.aws.amazon.com/glue/latest/dg/dqdl-rule-types-FileUniqueness) 
  +  [ FileMatch ](https://docs.aws.amazon.com/glue/latest/dg/dqdl-rule-types-FileMatch) 
+ Pemeriksaan kualitas data default dalam pekerjaan Visual ETL

### 6 Des 2024
<a name="data-quality-release-notes-dec6-2024"></a>
+ AWS Glue Kualitas Data sekarang mendukung Amazon SageMaker AI LakeHouse tabel dan tabel Iceberg, Delta, dan HUDI yang AWS Lake Formation dikelola di ETL 5.0. AWS Glue 

### Juli 7, 2025
<a name="data-quality-release-notes-jul7-2025"></a>
+  AWS Glue Kualitas Data; sekarang mendukung Amazon S3 Tables, RMS, Lakehouse dan tabel Iceberg AWS Lake Formation terkelola di Katalog Data. AWS Glue 

### Nov 21, 2025
<a name="data-quality-release-notes-nov21-2025"></a>
+ AWS Glue Kualitas Data sekarang mendukung pelabelan aturan untuk pelaporan yang ditingkatkan. Anda dapat mengatur dan menganalisis hasil kualitas data secara lebih efektif dengan menanyakan hasil berdasarkan label tertentu untuk mengidentifikasi aturan yang gagal dalam kategori tertentu, menghitung hasil aturan berdasarkan tim atau domain, dan membuat laporan terfokus untuk pemangku kepentingan yang berbeda. Untuk informasi selengkapnya, lihat [Label](dqdl.md#dqdl-labels).
+ AWS Glue Kualitas Data sekarang mendukung Konstanta di DQDL, memungkinkan Anda untuk menentukan nilai konstan dan mereferensikannya di seluruh skrip Anda. Ini membantu mencegah masalah yang terkait dengan batas ukuran kueri saat bekerja dengan pernyataan SQL besar. Lihat informasi yang lebih lengkap di [Konstanta](dqdl.md#dqdl-constants).

# Deteksi anomali dalam Kualitas Data AWS Glue
<a name="data-quality-anomaly-detection"></a>

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/IWHzrupqlGM/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/IWHzrupqlGM)




 Insinyur mengelola ratusan pipa data secara bersamaan. Setiap pipeline dapat mengekstrak data dari berbagai sumber dan memuatnya ke dalam data lake atau repositori data lainnya. Untuk memastikan data berkualitas tinggi dikirimkan untuk pengambilan keputusan, mereka menetapkan aturan kualitas data. Aturan-aturan ini menilai data berdasarkan kriteria tetap yang mencerminkan keadaan bisnis saat ini. Namun, ketika lingkungan bisnis berubah, properti data bergeser, membuat kriteria tetap ini ketinggalan zaman dan menyebabkan kualitas data yang buruk. 

 Misalnya, seorang insinyur data di perusahaan ritel menetapkan aturan yang memvalidasi penjualan harian harus melebihi one-million-dollar ambang batas. Setelah beberapa bulan, penjualan harian melampaui dua juta dolar, membuat ambang batas usang. Insinyur data tidak dapat memperbarui aturan untuk mencerminkan ambang batas terbaru karena kurangnya pemberitahuan dan upaya yang diperlukan untuk menganalisis dan memperbarui aturan secara manual. Kemudian di bulan itu, pengguna bisnis melihat penurunan 25% dalam penjualan mereka. Setelah berjam-jam penyelidikan, para insinyur data menemukan bahwa pipa ETL yang bertanggung jawab untuk mengekstraksi data dari beberapa toko telah gagal tanpa menghasilkan kesalahan. Aturan dengan ambang batas yang sudah ketinggalan zaman terus beroperasi dengan sukses tanpa mendeteksi masalah ini. 

 Atau, peringatan proaktif yang dapat mendeteksi anomali ini dapat memungkinkan pengguna mendeteksi masalah ini. Selain itu, melacak musiman dalam bisnis dapat menyoroti masalah kualitas data yang signifikan. Misalnya, penjualan ritel mungkin tertinggi pada akhir pekan dan selama musim liburan sementara relatif rendah pada hari kerja. Divergensi dari pola ini dapat mengindikasikan masalah kualitas data atau pergeseran dalam keadaan bisnis. Aturan kualitas data tidak dapat mendeteksi pola musiman karena ini memerlukan algoritme canggih yang dapat belajar dari pola masa lalu yang menangkap musiman untuk mendeteksi penyimpangan. 

 Akhirnya, pengguna merasa sulit untuk membuat dan memelihara aturan karena sifat teknis dari proses pembuatan aturan dan waktu yang diperlukan untuk menulisnya. Akibatnya, mereka lebih suka menjelajahi wawasan data terlebih dahulu sebelum menentukan aturan. Pelanggan membutuhkan kemampuan untuk menemukan anomali dengan mudah, memungkinkan mereka untuk secara proaktif mendeteksi masalah kualitas data dan membuat keputusan bisnis yang percaya diri. 

## Cara kerjanya
<a name="data-quality-anomaly-detection-how-it-works"></a>

**catatan**  
 Deteksi anomali hanya didukung di AWS Glue ETL. Ini tidak didukung dalam kualitas data berbasis Katalog Data. 

![\[Tangkapan layar menunjukkan proses deteksi anomali kualitas data.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data-quality-anomaly-detection-process.png)


 AWS Glue Data Quality menggabungkan kekuatan kualitas data berbasis aturan dan kemampuan deteksi anomali untuk menghasilkan data berkualitas tinggi. Untuk memulai, Anda harus terlebih dahulu mengkonfigurasi aturan dan penganalisis, dan kemudian mengaktifkan deteksi anomali. 

### Aturan
<a name="data-quality-anomaly-rules"></a>

 **Aturan** — Aturan mengungkapkan harapan untuk data Anda dalam bahasa terbuka yang disebut Data Quality Definition Language (DQDL). Contoh aturan ditunjukkan di bawah ini. Aturan ini akan berhasil bila tidak ada nilai kosong atau NULL di kolom `penumpang \$1count`: 

```
Rules = [
    IsComplete "passenger_count"
]
```

### Analisa
<a name="data-quality-anomaly-analyzers"></a>

 Dalam situasi di mana Anda mengetahui kolom kritis tetapi mungkin tidak cukup tahu tentang data untuk menulis aturan tertentu, Anda dapat memantau kolom tersebut menggunakan Analyzer. Analyzer adalah cara untuk mengumpulkan statistik data tanpa mendefinisikan aturan eksplisit. Contoh konfigurasi Analyzers ditunjukkan di bawah ini: 

```
Analyzers = [
AllStatistics "fare_amount",
DistinctValuesCount "pulocationid",
RowCount
]
```

 Dalam contoh ini, tiga Analyzer dikonfigurasi: 

1.  Analyzer pertama, `AllStatistics “fare\$1amount"`, akan menangkap semua statistik yang tersedia untuk bidang `fare\$1amount`. 

1.  Analyzer kedua, `DistinctValuesCount “pulocationid"`, akan menangkap jumlah nilai yang berbeda di kolom `pulocationid`. 

1.  Analyzer ketiga, `RowCount`, akan menangkap jumlah total catatan dalam dataset. 

 Analyzer berfungsi sebagai cara sederhana untuk mengumpulkan statistik data yang relevan tanpa menentukan aturan yang kompleks. Dengan memantau statistik ini, Anda dapat memperoleh wawasan tentang kualitas data dan mengidentifikasi potensi masalah atau anomali yang mungkin memerlukan penyelidikan lebih lanjut atau pembuatan aturan khusus. 

### Statistik data
<a name="data-quality-anomaly-data-statistics"></a>

 Baik Analyzer dan Rules in AWS Glue Data Quality mengumpulkan statistik data, juga dikenal sebagai profil data. Statistik ini memberikan wawasan tentang karakteristik dan kualitas data Anda. Statistik yang dikumpulkan disimpan dari waktu ke waktu dalam layanan AWS Glue, memungkinkan Anda melacak dan menganalisis perubahan dalam profil data Anda. 

 Anda dapat dengan mudah mengambil statistik ini dan menuliskannya ke Amazon S3 untuk analisis lebih lanjut atau penyimpanan jangka panjang dengan menggunakan yang sesuai. APIs Fungsionalitas ini memungkinkan Anda untuk mengintegrasikan profil data ke dalam alur kerja pemrosesan data Anda dan memanfaatkan statistik yang dikumpulkan untuk berbagai tujuan, seperti pemantauan kualitas data, deteksi anomali. 

 Dengan menyimpan profil data di Amazon S3, Anda dapat memanfaatkan skalabilitas, daya tahan, dan efektivitas biaya layanan penyimpanan objek Amazon. Selain itu, Anda dapat memanfaatkan AWS layanan lain atau alat pihak ketiga untuk menganalisis dan memvisualisasikan profil data, memungkinkan Anda untuk mendapatkan wawasan yang lebih dalam tentang kualitas data Anda dan membuat keputusan berdasarkan informasi tentang manajemen dan tata kelola data. 

 Berikut adalah contoh statistik data yang disimpan dari waktu ke waktu. 

![\[Tangkapan layar menunjukkan grafik garis statistik kualitas data dari waktu ke waktu.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data-quality-data-statistics-over-time.png)


**catatan**  
 AWS Glue Data Quality akan mengumpulkan statistik hanya sekali, bahkan jika Anda memiliki **Rule** dan **Analyzer** untuk kolom yang sama, membuat proses pembuatan statistik menjadi efisien. 

### Deteksi Anomali
<a name="data-quality-anomaly-observation-detection"></a>

 AWS Glue Data Quality membutuhkan minimal tiga titik data untuk mendeteksi anomali. Ini menggunakan algoritma pembelajaran mesin untuk belajar dari tren masa lalu dan kemudian memprediksi nilai-nilai masa depan. Ketika nilai aktual tidak termasuk dalam kisaran yang diprediksi, AWS Glue Data Quality menciptakan Observasi Anomali. Ini memberikan representasi visual dari nilai aktual dan tren. Empat nilai ditampilkan pada grafik di bawah ini. 

![\[Tangkapan layar menunjukkan grafik garis peristiwa deteksi anomali kualitas data dari waktu ke waktu.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data-quality-anomaly-detection-trend.png)


1.  Statistik aktual dan trennya dari waktu ke waktu. 

1.  Tren turunan dengan belajar dari tren yang sebenarnya. Ini berguna untuk memahami arah tren. 

1.  Kemungkinan batas atas untuk statistik. 

1.  Kemungkinan batas bawah untuk statistik. 

1.  Aturan kualitas data yang direkomendasikan yang dapat mendeteksi masalah ini di masa depan. 

 Ada beberapa hal penting yang perlu diperhatikan mengenai Anomali: 
+  Ketika anomali dihasilkan, skor kualitas data tidak terpengaruh. 
+  Ketika anomali terdeteksi, itu dianggap normal untuk lari berikutnya. Algoritma pembelajaran mesin akan mempertimbangkan nilai anomali ini sebagai input kecuali secara eksplisit dikecualikan. 

### Pelatihan Ulang
<a name="data-quality-anomaly-detection-retraining"></a>

 Melatih ulang model deteksi anomali sangat penting untuk mendeteksi anomali yang tepat. Ketika anomali terdeteksi, AWS Glue Data Quality memasukkan anomali dalam model sebagai nilai normal. Untuk memastikan deteksi anomali bekerja secara akurat, penting untuk memberikan umpan balik dengan mengakui atau menolak anomali. AWS Glue Data Quality menyediakan mekanisme baik di AWS Glue Studio maupun APIs untuk memberikan umpan balik kepada model. Untuk mengetahui lebih lanjut, lihat dokumentasi tentang pengaturan [Deteksi Anomali di pipeline AWS Glue ETL](data-quality-configuring-anomaly-detection-etl-jobs.md). 

## Detail algoritma Deteksi Anomali
<a name="data-quality-anomaly-detection-algorithm"></a>
+  Algoritma Deteksi Anomali memeriksa statistik data dari waktu ke waktu. Algoritma mempertimbangkan semua titik data yang tersedia dan mengabaikan statistik apa pun yang secara eksplisit dikecualikan. 
+  Statistik data ini disimpan dalam layanan AWS Glue, dan Anda dapat memberikan AWS KMS kunci untuk mengenkripsi mereka. Lihat Panduan Keamanan tentang cara menyediakan AWS KMS kunci untuk mengenkripsi statistik Kualitas Data AWS Glue. 
+  Komponen waktu sangat penting untuk algoritma Deteksi Anomali. Berdasarkan nilai masa lalu, AWS Glue Data Quality menentukan batas atas dan bawah. Selama penentuan ini, ia mempertimbangkan komponen waktu. Batas akan berbeda untuk nilai yang sama selama interval satu menit, interval per jam, atau interval harian. 

### Menangkap musiman
<a name="data-quality-anomaly-capturing-seasonality"></a>

 AWS Algoritma deteksi anomali Glue Data Quality dapat menangkap pola musiman. Misalnya, dapat dipahami bahwa pola hari kerja berbeda dari pola akhir pekan. Hal ini dapat dilihat pada contoh di bawah ini, di mana AWS Glue Data Quality mendeteksi tren musiman dalam nilai data. Anda tidak perlu melakukan sesuatu yang spesifik untuk mengaktifkan kemampuan ini. Seiring waktu, AWS Glue Data Quality mempelajari tren musiman dan mendeteksi anomali ketika pola-pola ini rusak. 

![\[Tangkapan layar menunjukkan tab kualitas data dengan data yang menunjukkan anomali saat menangkap tren musiman.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data-quality-capturing-seasonality.png)


### Biaya
<a name="data-quality-anomaly-detection-cost"></a>

 Anda akan dikenakan biaya berdasarkan waktu yang diperlukan untuk mendeteksi anomali. Setiap statistik dibebankan 1 DPU untuk waktu yang diperlukan untuk mendeteksi anomali. Lihat [AWS Glue Pricing](https://aws.amazon.com/glue/pricing/) untuk contoh rinci. 

### Pertimbangan utama
<a name="data-quality-anomaly-detection-considerations"></a>

 Tidak ada biaya untuk menyimpan statistik. Namun, ada batas 100.000 statistik per akun. Statistik ini akan disimpan maksimal dua tahun. 

# Konfigurasikan izin IAM untuk Kualitas Data AWS Glue
<a name="data-quality-authorization"></a>

Topik ini memberikan informasi untuk membantu Anda memahami tindakan dan sumber daya yang dapat Anda gunakan oleh administrator IAM dalam kebijakan AWS Identity and Access Management (IAM) untuk Kualitas Data AWS Glue. Ini juga mencakup contoh kebijakan IAM dengan izin minimum yang Anda perlukan untuk menggunakan Kualitas Data AWS Glue dengan Katalog Data AWS Glue.

Untuk informasi tambahan tentang keamanan di AWS Glue, lihat[Keamanan di AWS Glue](security.md).

## Izin IAM untuk Kualitas Data AWS Glue
<a name="data-quality-authorization-permissions"></a>

Tabel berikut mencantumkan izin yang dibutuhkan pengguna untuk melakukan operasi Kualitas Data AWS Glue tertentu. Untuk menetapkan otorisasi halus untuk AWS Glue Data Quality, Anda dapat menentukan tindakan ini dalam elemen pernyataan `Action` kebijakan IAM. 


**AWS Glue Data Tindakan Kualitas**  

| Tindakan | Deskripsi | Jenis sumber daya | 
| --- | --- | --- | 
| glue:CreateDataQualityRuleset | Memberikan izin untuk membuat kumpulan aturan kualitas data. | ::dataQualityRuleset/<name> | 
| glue:DeleteDataQualityRuleset | Memberikan izin untuk menghapus kumpulan aturan kualitas data. | ::dataQualityRuleset/<name> | 
| glue:GetDataQualityRuleset | Memberikan izin untuk mengambil kumpulan aturan kualitas data. | ::dataQualityRuleset/<name> | 
| glue:ListDataQualityRulesets | Memberikan izin untuk mengambil semua aturan kualitas data. | ::dataQualityRuleset/\$1 | 
| glue:UpdateDataQualityRuleset | Memberikan izin untuk memperbarui kumpulan aturan kualitas data. | ::dataQualityRuleset/<name> | 
| glue:GetDataQualityResult |  Memberikan izin untuk mengambil hasil tugas kualitas data yang dijalankan. Tindakan IAM ini juga memberikan izin ke API berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/data-quality-authorization.html)  | ::dataQualityRuleset/<name> | 
| glue:ListDataQualityResults | Memberikan izin untuk mengambil semua hasil tugas kualitas data yang dijalankan. | ::dataQualityRuleset/\$1 | 
| glue:CancelDataQualityRuleRecommendationRun | Memberikan izin untuk menghentikan menjalankan tugas rekomendasi kualitas data yang sedang berlangsung. | ::dataQualityRuleset/\$1 | 
| glue:GetDataQualityRuleRecommendationRun | Memberikan izin untuk mengambil tugas rekomendasi kualitas data yang dijalankan. | ::dataQualityRuleset/\$1 | 
| glue:ListDataQualityRuleRecommendationRuns | Memberikan izin untuk mengambil semua tugas rekomendasi kualitas data yang berjalan. | ::dataQualityRuleset/\$1 | 
| glue:StartDataQualityRuleRecommendationRun | Memberikan izin untuk memulai tugas rekomendasi kualitas data yang dijalankan. | ::dataQualityRuleset/\$1 | 
| glue:CancelDataQualityRulesetEvaluationRun | Memberikan izin untuk menghentikan menjalankan tugas kualitas data yang sedang berlangsung. | ::dataQualityRuleset/\$1 | 
| glue:GetDataQualityRulesetEvaluationRun | Memberikan izin untuk mengambil tugas kualitas data yang dijalankan. | ::dataQualityRuleset/\$1 | 
| glue:ListDataQualityRulesetEvaluationRuns | Memberikan izin untuk mengambil semua tugas kualitas data yang berjalan. | ::dataQualityRuleset/\$1 | 
| glue:StartDataQualityRulesetEvaluationRun | Memberikan izin untuk memulai menjalankan tugas kualitas data. | ::dataQualityRuleset/<name> | 
| glue:PublishDataQuality | Memberikan izin untuk mempublikasikan hasil kualitas data. | ::dataQualityRuleset/<name> | 
| glue:GetDataQualityModel | Memberikan izin untuk mengambil Model Kualitas Data. | ::dataQualityRuleset/<name>, ::job/<name>  | 
| glue:GetDataQualityModelResult | Memberikan izin untuk mengambil Hasil Model Kualitas Data. | ::dataQualityRuleset/<name>, ::job/<name>  | 
| glue:PutDataQualityStatisticAnnotation |  Memberikan izin untuk menambahkan anotasi ke Statistik. Tindakan IAM ini juga memberikan izin ke API berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/data-quality-authorization.html)  | ::dataQualityRuleset/<name>, ::job/<name>  | 
| glue:PutDataQualityProfileAnnotation | Memberikan izin untuk menempatkan anotasi ke semua Statistik dalam Profil. | ::dataQualityRuleset/<name>, ::job/<name>  | 

## Penyiapan IAM diperlukan untuk evaluasi penjadwalan berjalan
<a name="data-quality-iam-setup-evaluation-runs"></a>

### Izin IAM
<a name="data-quality-iam-setup-evaluation-runs-permissions"></a>

Untuk menjalankan evaluasi Kualitas Data terjadwal, Anda harus menambahkan `IAM:PassRole` tindakan ke kebijakan izin.


**AWS EventBridge Izin yang diperlukan penjadwal**  

| Tindakan | Deskripsi | Jenis sumber daya | 
| --- | --- | --- | 
| iam:PassRole | Memberikan izin kepada IAM untuk memungkinkan pengguna melewati peran yang disetujui. | ARN dari peran yang digunakan untuk memanggil StartDataQualityRulesetEvaluationRun | 

Tanpa izin ini terjadi kesalahan berikut:

```
"errorCode": "AccessDenied"
"errorMessage": "User: arn:aws:sts::account_id:assumed-role/AWSGlueServiceRole is not 
authorized to perform: iam:PassRole on resource: arn:aws:iam::account_id:role/service-role/AWSGlueServiceRole 
because no identity-based policy allows the iam:PassRole action"
```

### Entitas tepercaya IAM
<a name="data-quality-iam-setup-evaluation-runs-trusted-entities"></a>

Layanan AWS Glue dan AWS EventBridge Scheduler harus terdaftar di entitas tepercaya untuk membuat dan menjalankan jadwal`StartDataQualityEvaluationRun`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "glue.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "scheduler.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

## Contoh kebijakan IAM
<a name="data-quality-authorization-example-policy"></a>

Peran IAM untuk AWS Glue Data Quality memerlukan jenis izin berikut:
+ Izin untuk operasi AWS Glue Data Quality sehingga Anda bisa mendapatkan aturan kualitas data yang direkomendasikan dan menjalankan tugas kualitas data terhadap tabel di Katalog Data AWS Glue. Contoh kebijakan IAM di bagian ini mencakup izin minimum yang diperlukan untuk operasi AWS Glue Data Quality.
+ Izin yang memberikan akses ke tabel Katalog Data Anda dan data yang mendasarinya. Izin ini bervariasi tergantung pada kasus penggunaan Anda. Misalnya, untuk data yang Anda katalog di Amazon S3, izin harus menyertakan akses ke Amazon S3. 
**catatan**  
Anda harus mengonfigurasi izin Amazon S3 selain izin yang dijelaskan di bagian ini.

### Izin minimum untuk mendapatkan aturan kualitas data yang direkomendasikan
<a name="example-policy-get-dq-rule-recommendations"></a>

Kebijakan contoh ini mencakup izin yang Anda perlukan untuk menghasilkan aturan kualitas data yang direkomendasikan. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowGlueRuleRecommendationRunActions",
      "Effect": "Allow",
      "Action": [
        "glue:GetDataQualityRuleRecommendationRun",
        "glue:PublishDataQuality",
        "glue:CreateDataQualityRuleset"
      ],
      "Resource": "arn:aws:glue:us-east-1:111122223333:dataQualityRuleset/*"
    },
	{
     "Sid": "AllowCatalogPermissions",
     "Effect": "Allow",
     "Action": [
        "glue:GetPartitions",
        "glue:GetTable"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "AllowS3GetObjectToRunRuleRecommendationTask",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::aws-glue-*"
    },
		{
			"Sid": "AllowPublishingCloudwatchLogs",
			"Effect": "Allow",
			"Action": [
			  "logs:CreateLogStream",
			  "logs:CreateLogGroup",
			  "logs:PutLogEvents"
			],
			"Resource": "*"
    }
  ]
}
```

------

### Izin minimum untuk menjalankan tugas kualitas data
<a name="example-policy-run-dq-task"></a>

Kebijakan contoh ini mencakup izin yang Anda perlukan untuk menjalankan tugas evaluasi kualitas data. 

Pernyataan kebijakan berikut bersifat opsional, tergantung pada kasus penggunaan Anda:
+ `AllowCloudWatchPutMetricDataToPublishTaskMetrics`- Diperlukan jika Anda ingin mempublikasikan metrik run kualitas data ke Amazon CloudWatch.
+ `AllowS3PutObjectToWriteTaskResults`- Diperlukan jika Anda ingin menulis hasil menjalankan kualitas data ke Amazon S3.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowGlueGetDataQualityRuleset",
      "Effect": "Allow",
      "Action": [
        "glue:GetDataQualityRuleset"
      ],
      "Resource": "arn:aws:glue:us-east-1:111122223333:dataQualityRuleset/YOUR-RULESET-NAME"
    },
    {
      "Sid": "AllowGlueRulesetEvaluationRunActions",
      "Effect": "Allow",
      "Action": [
        "glue:GetDataQualityRulesetEvaluationRun",
        "glue:PublishDataQuality"
      ],
      "Resource": "arn:aws:glue:us-east-1:111122223333:dataQualityRuleset/*"
    },
    {
      "Sid": "AllowCatalogPermissions",
      "Effect": "Allow",
      "Action": [
        "glue:GetPartitions",
        "glue:GetTable"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "AllowS3GetObjectForRulesetEvaluationRun",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::aws-glue-*"
    },
    {
      "Sid": "AllowCloudWatchPutMetricDataToPublishTaskMetrics",
      "Effect": "Allow",
      "Action": [
        "cloudwatch:PutMetricData"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "cloudwatch:namespace": "Glue Data Quality"
        }
      }
    },
    {
      "Sid": "AllowS3PutObjectToWriteTaskResults",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject*"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
    }
  ]
}
```

------

### Izin minimum untuk menjalankan pekerjaan ETL kualitas data
<a name="example-policy-run-dq-etl-job"></a>

 Kebijakan contoh ini mencakup izin yang Anda perlukan untuk menjalankan Job ETL kualitas data. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowGluePublishDataQualityResult",
      "Effect": "Allow",
      "Action": [
        "glue:PublishDataQuality"
      ],
      "Resource": "arn:aws:glue:us-east-1:111122223333:dataQualityRuleset/*"
    },
    {
      "Sid": "AllowGlueGetDataQualityResult",
      "Effect": "Allow",
      "Action": [
        "glue:GetDataQualityResult"
      ],
      "Resource": "arn:aws:glue:us-east-1:111122223333:dataQualityRuleset/*"
    },
    {
      "Sid": "AllowGlueDataQualityStatisticAnnotation",
      "Effect": "Allow",
      "Action": [
        "glue:PutDataQualityStatisticAnnotation"
      ],
      "Resource": [
        "arn:aws:glue:us-east-1:111122223333:dataQualityRuleset/*",
        "arn:aws:glue:us-east-1:111122223333::job/{JobName}"
      ]
    },
    {
      "Sid": "AllowGlueDataQualityProfileAnnotation",
      "Effect": "Allow",
      "Action": [
        "glue:PutDataQualityProfileAnnotation"
      ],
      "Resource": [
        "arn:aws:glue:us-east-1:111122223333:dataQualityRuleset/*",
        "arn:aws:glue:us-east-1:111122223333::job/{JobName}"
      ]
    }
	]
}
```

------

# Memulai dengan AWS Glue Data Quality untuk Data Catalog
<a name="data-quality-getting-started"></a>

 Bagian  memulai ini memberikan petunjuk untuk membantu Anda memulai AWS Glue Data Quality di AWS Glue konsol. Anda akan belajar cara menyelesaikan tugas-tugas penting seperti menghasilkan rekomendasi aturan kualitas data dan mengevaluasi kumpulan aturan terhadap data Anda. 

**Topics**
+ [

## Prasyarat
](#data-quality-prereqs)
+ [

## Step-by-step contoh
](#data-quality-step-by-step-example)
+ [

## Menghasilkan rekomendasi aturan
](#data-quality-get-recommendations)
+ [

## Rekomendasi aturan pemantauan
](#data-quality-monitor-recommendations)
+ [

## Mengedit set aturan yang direkomendasikan
](#data-quality-edit-ruleset)
+ [

## Membuat ruleset baru
](#data-quality-create-ruleset)
+ [

## Menjalankan kumpulan aturan untuk mengevaluasi kualitas data
](#data-quality-run-data-quality-task)
+ [

## Melihat skor kualitas data dan hasil
](#data-quality-view-results)
+ [

## Menggunakan kueri pra-pemrosesan
](#data-quality-preprocessing-queries)
+ [

## Jenis sumber yang didukung
](#data-quality-get-started-supported-source-types)
+ [

## Topik terkait
](#data-quality-get-started-related)

## Prasyarat
<a name="data-quality-prereqs"></a>

 Sebelum Anda menggunakanAWS Glue Data Quality, Anda harus terbiasa menggunakan Data Catalog dan crawler diAWS Glue. DenganAWS Glue Data Quality, Anda dapat mengevaluasi kualitas untuk tabel dalam Data Catalog database. Anda juga memerlukan hal berikut: 
+  Tabel di Data Catalog untuk mengevaluasi aturan kualitas data Anda terhadap. 
+  Peran IAM untuk AWS Glue yang Anda berikan saat Anda membuat rekomendasi aturan atau menjalankan tugas kualitas data. Peran ini harus memiliki izin untuk mengakses sumber daya yang diperlukan berbagai AWS Glue Data Quality proses untuk dijalankan atas nama Anda. Sumber daya ini termasukAWS Glue, Amazon S3, dan. CloudWatch Untuk melihat contoh kebijakan yang menyertakan izin minimumAWS Glue Data Quality, lihat[Contoh kebijakan IAM](data-quality-authorization.md#data-quality-authorization-example-policy). 

   Untuk mempelajari lebih lanjut tentang peran IAMAWS Glue, lihat [Membuat kebijakan IAM untuk AWS Glue layanan](https://docs.aws.amazon.com/glue/latest/dg/create-service-policy.html) dan [Membuat peran IAM untuk](https://docs.aws.amazon.com/glue/latest/dg/create-an-iam-role.html) layanan. AWS Glue Anda juga dapat melihat daftar semua AWS Glue izin yang khusus untuk kualitas data di [Otorisasi untuk AWS Glue Data Quality tindakan](https://docs.aws.amazon.com/glue/latest/dg/data-quality-authorization.html). 
+  Database dengan setidaknya satu tabel yang berisi berbagai data. Tabel yang digunakan dalam tutorial ini diberi nama`yyz-tickets`, dengan tabel`tickets`. Data ini adalah kumpulan informasi yang tersedia untuk umum dari Kota Toronto untuk kutipan parkir. Jika Anda membuat tabel Anda sendiri, pastikan bahwa itu diisi dengan berbagai data yang valid untuk mendapatkan set terbaik dari aturan yang direkomendasikan. 

## Step-by-step contoh
<a name="data-quality-step-by-step-example"></a>

 Untuk step-by-step contoh dengan kumpulan data sampel, lihat [posting blog AWS Glue Data Quality](https://aws.amazon.com/blogs/big-data/getting-started-with-aws-glue-data-quality-from-the-aws-glue-data-catalog/). 

## Menghasilkan rekomendasi aturan
<a name="data-quality-get-recommendations"></a>

 Rekomendasi aturan memudahkan untuk memulai dengan kualitas data tanpa menulis kode. Dengan AWS Glue Data Quality, Anda dapat menganalisis data Anda, mengidentifikasi aturan, dan membuat kumpulan aturan yang dapat Anda evaluasi dalam tugas kualitas data. Rekomendasi berjalan secara otomatis dihapus setelah 90 hari.

**Untuk menghasilkan rekomendasi aturan kualitas data**

1.  Buka konsol AWS Glue di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/). 

1.  Pilih **Tabel** di panel navigasi. Kemudian pilih tabel yang ingin Anda hasilkan rekomendasi aturan kualitas data. 

1.  Pada halaman detail tabel, pilih tab **Kualitas data** untuk mengakses aturan dan pengaturan Kualitas Data AWS Glue untuk tabel Anda. 

1.  Pada tab **Kualitas data**, pilih **Tambahkan aturan dan pantau kualitas data**. 

1.  Pada halaman **pembuat Ruleset**, peringatan di bagian atas halaman akan meminta Anda untuk memulai tugas rekomendasi jika tidak ada rekomendasi aturan yang berjalan. 

1.  Pilih **Rekomendasikan aturan** untuk membuka modal dan memasukkan parameter Anda untuk tugas rekomendasi. 

1.  Pilih peran IAM dengan akses ke AWS Glue. Peran ini harus memiliki izin untuk mengakses sumber daya yang diperlukan oleh berbagai proses AWS Glue Data Quality untuk dijalankan atas nama Anda. 

1.  Setelah bidang selesai sesuai dengan preferensi Anda, pilih **Rekomendasikan aturan** untuk memulai tugas rekomendasi dijalankan. Jika rekomendasi berjalan atau selesai, Anda dapat mengelola proses Anda di peringatan ini. Anda mungkin perlu menyegarkan peringatan untuk melihat perubahan status. Tugas rekomendasi yang sudah selesai dan sedang berjalan muncul di halaman **Riwayat Jalankan** yang mencantumkan semua rekomendasi yang berjalan selama 90 hari terakhir. 

### Apa arti aturan yang direkomendasikan
<a name="data-quality-recommend-rules"></a>

 AWS Glue Data Quality menghasilkan aturan berdasarkan data dari setiap kolom tabel input. Ini menggunakan aturan untuk mengidentifikasi batas-batas potensial di mana data dapat disaring untuk mempertahankan persyaratan kualitas. Daftar aturan yang dihasilkan berikut mencakup contoh yang berguna untuk memahami apa arti aturan dan apa yang mungkin mereka lakukan ketika diterapkan pada data Anda. 

 Untuk daftar lengkap tipe aturan Data Quality Definition Language (DQDL) yang dihasilkan, lihat referensi tipe aturan [DQDL](https://docs.aws.amazon.com/glue/latest/dg/dqdl.html#dqdl-rule-types). 
+  `IsComplete "SET_FINE_AMOUNT"``IsComplete`—Aturan memverifikasi bahwa kolom diisi untuk setiap baris yang diberikan. Gunakan aturan ini untuk menandai kolom sebagai non-opsional dalam data. 
+  `Uniqueness "TICKET_NUMBER" > 0.95`— `Uniqueness` Aturan memverifikasi bahwa data dalam kolom memenuhi beberapa ambang keunikan. Dalam contoh ini, data yang mengisi setiap baris tertentu ditentukan paling banyak 95% identik dalam konten untuk semua baris lainnya, yang menunjukkan aturan ini. `"TICKET_NUMBER"` 
+  `ColumnValues "PROVINCE" in ["ON", "QC", "AB", "NY",...]`— `ColumnValues` Aturan mendefinisikan nilai yang valid untuk kolom, berdasarkan isi kolom yang ada. Dalam contoh ini, data untuk setiap baris adalah plat kode nomor 2 huruf untuk negara bagian atau provinsi. 
+  `ColumnLength "INFRACTION_DESCRIPTION" between 15 and 31`— `ColumnLength` Aturan memberlakukan pembatasan panjang pada data kolom. Aturan ini dihasilkan dari data sampel berdasarkan panjang minimum dan maksimum yang direkam untuk kolom string. 

## Rekomendasi aturan pemantauan
<a name="data-quality-monitor-recommendations"></a>

 Saat rekomendasi aturan kualitas data berjalan, halaman **Tambahkan aturan dan monitor kualitas data** menampilkan informasi dan tindakan tambahan yang dapat Anda lakukan di bilah atas. 

 Saat rekomendasi aturan sedang berlangsung, Anda dapat memilih **Stop run** sebelum tugas rekomendasi selesai. Saat tugas sedang berlangsung, Anda akan melihat status, **dalam proses**, dan tanggal dan waktu saat proses dimulai. 

 Ketika rekomendasi aturan selesai, bilah rekomendasi aturan menampilkan jumlah aturan yang direkomendasikan, status rekomendasi terakhir yang dijalankan, dan tanggal serta stempel waktu saat selesai. 

 Anda dapat menambahkan aturan yang disarankan dengan memilih **Sisipkan Rekomendasi Aturan**. Untuk melihat aturan yang direkomendasikan sebelumnya, pilih tanggal tertentu. Untuk menjalankan rekomendasi baru, pilih **Tindakan lainnya**, lalu pilih **Aturan yang disarankan**. 

 Tetapkan pengaturan default dengan memilih **Kelola pengaturan pengguna**. Anda dapat mengatur jalur default Amazon S3 untuk menyimpan kumpulan aturan atau mengatur peran default untuk menjalankan Katalog Data. 

## Mengedit set aturan yang direkomendasikan
<a name="data-quality-edit-ruleset"></a>

Karena Kualitas Data AWS Glue menghasilkan aturan berdasarkan data yang ada yang tersedia, Anda mungkin melihat beberapa aturan yang tidak terduga atau tidak diinginkan dalam saran otomatis. Untuk mendapatkan hasil maksimal dari aturan yang direkomendasikan, Anda perlu mengevaluasi dan memodifikasinya. Untuk langkah tutorial ini, Anda mengambil aturan yang dihasilkan pada langkah sebelumnya dan menyesuaikannya untuk menegakkan kualitas yang lebih ketat pada beberapa data. Anda juga melonggarkan aturan lain untuk memastikan bahwa data unik yang benar dapat ditambahkan nanti. 

**Edit kumpulan aturan yang disarankan**

1.  Di konsol AWS Glue, pilih **Katalog Data**, lalu pilih **tabel Database** di panel navigasi. Pilih tabel `tickets`. 

1. Pada halaman detail tabel, pilih tab **Kualitas data** untuk mengakses aturan dan pengaturan Kualitas Data AWS Glue untuk tabel.

1.  Di bagian **Rulesets**, pilih ruleset yang dihasilkan di. [Menghasilkan rekomendasi aturan](#data-quality-get-recommendations) 

1.  Pilih **Tindakan**, lalu pilih **Edit** di jendela konsol. Editor ruleset dimuat di konsol. Ini termasuk panel pengeditan untuk aturan Anda dan referensi cepat untuk DQDL. 

1. `2`Hapus baris skrip. Ini melonggarkan persyaratan bahwa ukuran database dibatasi dalam sejumlah baris tertentu. Setelah pengeditan, file Anda harus berisi yang berikut pada baris 1-3:

   ```
   Rules = [
       IsComplete "TAG_NUMBER_MASKED",
       ColumnLength "TAG_NUMBER_MASKED" between 6 and 9,
   ```

1. `25`Hapus baris skrip. Ini melonggarkan persyaratan bahwa 96% dari provinsi yang tercatat adalah. `ON` Setelah pengeditan, file Anda harus berisi yang berikut dari baris `24` ke akhir kumpulan aturan:

   ```
   ColumnValues "PROVINCE" in ["ON", "QC", "AB", "NY", "AZ", "NS", "BC", "MI", "PQ", "MB", "PA", "FL", "SK", "NJ", "OH", "NB", "IL", "MA", "CA",
       "VA", "TX", "NF", "MD", "PE", "CT", "NC", "GA", "IN", "OR", "MN", "TN", "WI", "KY", "MO", "WA", "NH", "SC", "CO", "OK", "VT", "RI", "ME", "AL",
       "YT", "IA", "DE", "AR", "LA", "XX", "WV", "MT", "KS", "NT", "DC", "NV", "NE", "UT", "MS", "NM", "ID", "SD", "ND", "AK", "NU", "GO", "WY", "HI"],
   ColumnLength "PROVINCE" = 2
   ]
   ```

1. Ubah baris `14` menjadi berikut:

   ```
   IsComplete "TIME_OF_INFRACTION",
   ```

    Ini *memperkuat* persyaratan pada kolom dengan membatasi database hanya untuk tiket yang berisi waktu pelanggaran yang tercatat. Anda harus selalu menganggap tiket tanpa waktu pelanggaran yang tercatat sebagai data yang tidak valid dalam kumpulan data ini. Ini berbeda dari situasi di mana partisi atau transformasi mungkin lebih tepat untuk penggunaan data lebih lanjut atau inspeksi untuk menentukan aturan kualitas.

1. Pilih **Perbarui Aturan di** bagian bawah halaman konsol.

## Membuat ruleset baru
<a name="data-quality-create-ruleset"></a>

 Kumpulan aturan adalah sekelompok aturan kualitas data yang Anda evaluasi terhadap data Anda. Di AWS Glue konsol, Anda dapat membuat aturan khusus menggunakan Data Quality Definition Language (DQDL). 

**Untuk membuat kumpulan aturan kualitas data**

1.  Di konsol AWS Glue, pilih **Katalog Data**, pilih **Database**, lalu pilih **Tabel** di panel navigasi. Pilih tabel`tickets`. 

1. Buka tab **Kualitas data**.

1.  Di bagian **Rulesets**, pilih **Create** ruleset. Editor DQDL diluncurkan di konsol. Ini memiliki area teks untuk pengeditan langsung, dan referensi cepat untuk aturan DQDL dan skema tabel. 

1.  Mulai menambahkan aturan ke area teks editor DQDL. Anda dapat menulis aturan langsung dari tutorial ini, atau menggunakan fitur **pembuat aturan DQDL dari editor aturan** kualitas data. 
**catatan**  
 Pilih jenis aturan dari daftar, dan pilih tanda plus untuk menyisipkan sintaks contoh ke panel editor. 
Tukarkan nama kolom placeholder dengan nama kolom Anda sendiri. Nama kolom dari tabel tersedia di tab **Skema**. 
 Perbarui parameter ekspresi sesuai keinginan Anda. Untuk daftar lengkap ekspresi yang didukung DQDL, lihat. [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions) 

    Sebagai contoh, aturan berikut adalah kendala untuk validasi data `ticket_number` kolom dalam tabel. `tickets` Untuk menambahkan aturan berikut, gunakan pembuat aturan DQDL atau langsung edit kumpulan aturan Anda: 

   ```
   IsComplete "ticket_number",
   IsUnique "ticket_number",
   ColumnValues "ticket_number" > 9000000000
   ```

1. Berikan nama untuk kumpulan aturan baru Anda di bidang nama **Ruleset**.

1. Pilih **Simpan ruleset**.

### Mengevaluasi kualitas data di beberapa kumpulan data
<a name="data-quality-create-ruleset-referential-integrity"></a>

 Anda dapat mengatur aturan kualitas data di beberapa kumpulan data menggunakan ReferentialIntegrity dan DatasetMatch kumpulan aturan. ReferentialIntegritymemeriksa untuk melihat apakah data dalam kumpulan data utama ada di kumpulan data lain. 

Untuk menambahkan kumpulan data referensi, pilih tab **Skema** dan kemudian pilih **Perbarui tabel referensi**. Anda akan diminta untuk memilih database dan tabel. Anda dapat menambahkan tabel dan kemudian mengatur aturan kualitas data. Jenis aturan seperti AggregateMatch, RowCountMatch, ReferentialIntegrity, SchemaMatch, dan DatasetMatch mendukung kemampuan untuk melakukan pemeriksaan kualitas data di beberapa kumpulan data. 

## Menjalankan kumpulan aturan untuk mengevaluasi kualitas data
<a name="data-quality-run-data-quality-task"></a>

 Saat Anda menjalankan tugas kualitas data, AWS Glue Data Quality mengevaluasi kumpulan aturan terhadap data Anda dan menghitung skor kualitas data. Skor ini mewakili persentase aturan kualitas data yang diteruskan untuk input. 

**Untuk menjalankan tugas kualitas data**

1. Di konsol AWS Glue, pilih **Katalog Data**, pilih **Database**, lalu pilih **Tabel** di panel navigasi. Pilih tabel`tickets`.

1. Pilih tab **Kualitas data**.

1. Dalam daftar **Rulesets**, pilih kumpulan aturan yang ingin Anda evaluasi terhadap tabel. Untuk langkah ini, sebaiknya gunakan kumpulan aturan yang sudah Anda tulis atau modifikasi daripada membuat aturan. Pilih **Jalankan**. 

1.  Dalam modal, pilih peran IAM Anda. Peran ini harus memiliki izin untuk mengakses sumber daya yang diperlukan oleh berbagai proses AWS Glue Data Quality untuk dijalankan atas nama Anda. Anda dapat menyimpan peran IAM sebagai default atau memodifikasinya dengan membuka halaman **Pengaturan Default**. 

1.  Di bawah **Tindakan kualitas data**, pilih apakah Anda ingin **Menerbitkan metrik ke Amazon CloudWatch**. Ketika opsi ini dipilih, AWS Glue Data Quality menerbitkan metrik yang menunjukkan jumlah aturan yang disahkan dan jumlah aturan yang gagal. Untuk mengambil tindakan pada metrik yang disimpan dengan cara ini, Anda dapat menggunakan CloudWatch alarm. Metrik kunci juga dipublikasikan Amazon EventBridge agar Anda dapat mengatur peringatan. Untuk informasi selengkapnya, lihat [Menyiapkan peringatan, penerapan, dan penjadwalan](https://docs.aws.amazon.com/glue/latest/dg/data-quality-alerts.html). 

1.  Di **Run Frequency**, pilih run on demand atau jadwalkan aturan. Saat Anda menjadwalkan kumpulan aturan, Anda akan diminta untuk nama tugas. Jadwal akan dibuat di Amazon EventBridge. Anda dapat mengedit jadwal Anda di Amazon EventBridge. 

1.  Untuk menyimpan hasil kualitas data di Amazon S3, pilih lokasi **hasil kualitas data**. Peran IAM yang sebelumnya Anda pilih untuk tugas ini harus memiliki akses tulis ke lokasi ini. 

1.  Di bawah **Konfigurasi Tambahan**, masukkan **jumlah pekerja yang diminta** yang ingin AWS Glue alokasikan untuk tugas kualitas data Anda. 

1.  Anda dapat secara opsional mengatur filter di sumber data. Ini membantu Anda mengurangi data yang Anda baca. Anda juga dapat menggunakan filter untuk menjalankan validasi inkremental dengan memilih informasi partisi dan meneruskannya sebagai parameter melalui panggilan API. Untuk meningkatkan kinerja, Anda dapat memberikan predikat partisi. 

1.  Pilih **Jalankan**. Anda akan melihat tugas baru Anda dalam daftar **tugas kualitas data berjalan**. Ketika kolom **status Jalankan** untuk tugas ditampilkan sebagai **Selesai**, Anda dapat melihat hasil skor kualitas. Anda mungkin perlu menyegarkan jendela konsol agar status diperbarui dengan benar. 

1.  Untuk melihat kolom untuk detail hasil kualitas data, pilih ikon “\$1” untuk memperluas kumpulan aturan. Hasilnya menunjukkan kepada Anda aturan yang lulus dan gagal dalam evaluasi, dan apa yang memicu kegagalan aturan. 

## Melihat skor kualitas data dan hasil
<a name="data-quality-view-results"></a>

**Untuk melihat proses terbaru pada semua set aturan yang dibuat**

1.  Di konsol AWS Glue, pilih **Tabel** di panel navigasi. Kemudian pilih tabel yang ingin Anda jalankan tugas kualitas data. 

1.  Pilih tab **Kualitas data**. 

1.  **Snapshot kualitas data** menunjukkan tren umum berjalan dari waktu ke waktu. 10 run terakhir di semua set aturan ditampilkan secara default. Untuk memfilter berdasarkan aturan, pilih yang diinginkan dari daftar dropdown. Jika ada kurang dari 10 run, semua proses selesai yang tersedia akan ditampilkan. 

1.  Dalam tabel **kualitas Data**, setiap kumpulan aturan dengan proses terbarunya (jika ada) ditampilkan, bersama dengan skor. Memperluas ruleset menampilkan aturan yang ada di ruleset itu, bersama dengan hasil aturan untuk menjalankan itu. 



**Untuk melihat proses terbaru pada kumpulan aturan tertentu**

1.  Di konsol AWS Glue, pilih **Tabel** di panel navigasi. Kemudian pilih tabel yang ingin Anda jalankan tugas kualitas data. 

1.  Pilih tab **Kualitas data**. 

1.  Dalam tabel **kualitas data**, pilih pada set aturan tertentu. 

1.  Pada halaman **Rincian Ruleset**, pilih tab **Run history**. 

    Semua evaluasi berjalan untuk kumpulan aturan khusus ini tercantum dalam tabel di dalam tab ini. Anda dapat melihat sejarah skor dan status lari. 

1.  Untuk melihat informasi selengkapnya tentang proses tertentu, pilih **Run ID** untuk membuka halaman **Evaluasi run details**. Di halaman ini, Anda dapat melihat secara spesifik tentang proses dan detail lebih lanjut tentang status hasil aturan individu. 

## Menggunakan kueri pra-pemrosesan
<a name="data-quality-preprocessing-queries"></a>

 AWS Glue Data Quality mendukung kueri pra-pemrosesan yang memungkinkan Anda mengubah data sebelum menjalankan pemeriksaan kualitas data. Fitur ini memungkinkan Anda untuk: 
+ Buat kolom turunan untuk validasi kualitas data.
+ Filter data berdasarkan kondisi tertentu.
+ Lakukan perhitungan atau transformasi untuk pemeriksaan kualitas.
+ Validasi hubungan antar kolom.

**catatan**  
 Fitur ini hanya didukung APIs dan tidak didukung melalui konsol. 

### Menggunakan kueri preprocessing dengan CLI dan SDK
<a name="data-quality-preprocessing-queries-cli-sdk"></a>

#### Rekomendasi berjalan
<a name="data-quality-preprocessing-queries-recommendation-runs"></a>

 Contoh berikut menunjukkan cara menggunakan kueri preprocessing dengan rekomendasi berjalan. 

 **AWS CLI:** 

```
aws glue start-data-quality-rule-recommendation-run \
  --data-source '{"DataQualityGlueTable": { \
    "DatabaseName": "mydatabase", \
    "TableName": "mytable", \
    "PreProcessingQuery": "SELECT sepal_length, sepal_width, petal_length, petal_width, class, (sepal_length + sepal_width) as sepal_total FROM `mydatabase.mytable`" \
  }}' \
  --role "arn:aws:iam::123456789012:role/GlueDataQualityRole" \
  --created-ruleset-name "my-ruleset-with-preprocessing"
```

 **SDK Java:** 

```
StartDataQualityRuleRecommendationRunRequest request = new StartDataQualityRuleRecommendationRunRequest()
    .withDataSource(new DataSource()
        .withDataQualityGlueTable(new DataQualityGlueTable()
            .withDatabaseName("mydatabase")
            .withTableName("mytable")
            .withPreProcessingQuery("SELECT sepal_length, sepal_width, " + 
                "(sepal_length + sepal_width) as sepal_total " +
                "FROM `mydatabase.mytable`")))
    .withRole("arn:aws:iam::123456789012:role/GlueDataQualityRole")
    .withCreatedRulesetName("my-ruleset-with-preprocessing");

glueClient.startDataQualityRuleRecommendationRun(request);
```

#### Evaluasi Ruleset berjalan
<a name="data-quality-preprocessing-queries-evaluation-runs"></a>

 Contoh berikut menunjukkan cara menggunakan kueri preprocessing dengan evaluasi ruleset berjalan. 

 **AWS CLI:** 

```
aws glue start-data-quality-ruleset-evaluation-run \
  --data-source '{"DataQualityGlueTable": { \
    "DatabaseName": "mydatabase", \
    "TableName": "mytable", \
    "PreProcessingQuery": "SELECT order_id, amount, (tax + shipping) as total_fees FROM `mydatabase.mytable`" \
  }}' \
  --role "arn:aws:iam::123456789012:role/GlueDataQualityRole" \
  --ruleset-names '["my-ruleset"]'
```

 **SDK Java:** 

```
StartDataQualityRulesetEvaluationRunRequest request = new StartDataQualityRulesetEvaluationRunRequest()
    .withDataSource(new DataSource()
        .withDataQualityGlueTable(new DataQualityGlueTable()
            .withDatabaseName("mydatabase")
            .withTableName("mytable")
            .withPreProcessingQuery("SELECT order_id, amount, " +
                "(tax + shipping) as total_fees " +
                "FROM `mydatabase.mytable`")))
    .withRole("arn:aws:iam::123456789012:role/GlueDataQualityRole")
    .withRulesetNames(Arrays.asList("my-ruleset"));

glueClient.startDataQualityRulesetEvaluationRun(request);
```

### Pertimbangan saat membuat kueri pra-pemrosesan
<a name="data-quality-preprocessing-queries-considerations"></a>

 Saat menulis kueri pra-pemrosesan: 
+ Referensi tabel harus diformat ``databaseName.tableName`` menggunakan backticks.
+ Kueri harus berupa pernyataan SELECT yang valid.
+ Nama kolom dalam output kueri akan digunakan untuk aturan kualitas data.

 Contoh berikut menunjukkan query preprocessing: 

```
SELECT 
    sepal_length, 
    sepal_width, 
    petal_length, 
    petal_width, 
    class,
    (sepal_length + sepal_width) as sepal_total 
FROM `mydatabase.mytable`
```

### Batasan
<a name="data-quality-preprocessing-queries-limitations"></a>
+ Kueri harus mereferensikan tabel menggunakan backticks dan format lengkap``databaseName.tableName``.
+ Panjang kueri maksimum adalah 51.200 karakter.
+ Kueri harus mengembalikan setidaknya satu baris data.
+ Semua kolom yang direferensikan dalam kumpulan aturan Anda harus ada dalam output kueri.

## Jenis sumber yang didukung
<a name="data-quality-get-started-supported-source-types"></a>


**Dukungan tipe tabel berdasarkan AWS Lake Formation konfigurasi**  

| Tipe Tabel | AWS Lake Formation - Semua Akses Tabel | AWS Lake Formation Diaktifkan dengan Kolom | AWS Lake Formation Diaktifkan dengan Filter Data |  AWS Lake Formation Dukungan Lintas Akun - Semua Akses Tabel | AWS Lake Formation Dinonaktifkan | 
| --- | --- | --- | --- | --- | --- | 
| Parquet | Didukung | Tidak Didukung | Tidak Didukung | Didukung | Didukung | 
| ORC | Didukung | Tidak Didukung | Tidak Didukung | Didukung | Didukung | 
| CSV, JSON, TSV | Didukung | Tidak Didukung | Tidak Didukung | Didukung | Didukung | 
| Avro | Didukung | Tidak Didukung | Tidak Didukung | Didukung | Didukung | 
| JSON | Didukung | Tidak Didukung | Tidak Didukung | Didukung | Didukung | 
| Gunung es | Didukung | Tidak Didukung | Tidak Didukung | Didukung | Didukung | 
| HUDI | Tidak Didukung | Tidak Didukung | Tidak Didukung | Tidak Didukung | Didukung | 
| kuala | Tidak Didukung | Tidak Didukung | Tidak Didukung | Tidak Didukung | Didukung | 
| RMS | Didukung\$1 | Didukung\$1 | Didukung\$1 | Tidak Didukung | Tidak Didukung | 
| Tabel Amazon S3 | Didukung\$1 | Tidak Didukung | Tidak Didukung | Tidak berlaku | Didukung | 
| Amazon RDS dan Aurora | Tidak berlaku | Tidak berlaku | Tidak berlaku | Tidak berlaku | Tidak Didukung | 
| JDBC | Tidak berlaku | Tidak berlaku | Tidak berlaku | Tidak berlaku | Didukung | 

 \$1 Tabel Amazon S3 dan SageMaker dukungan Lakehouse di AWS Glue Console tidak didukung. Saat ini, tabel Amazon S3 dan SageMaker Lakehouse Data Catalog Rekomendasi Runs dan Data Catalog Data Quality Evaluation berjalan hanya didukung melalui CLI. 

### Keterbatasan lain yang diketahui
<a name="w2aac49c43c47b7"></a>
+  Tabel Symlink Delta Lake: Tidak didukung untuk menjalankan rekomendasi Kualitas Data AWS Glue atau evaluasi Kualitas Data Katalog Data berjalan. 
+  Penerbitan Aset Tabel Amazon S3 di Studio SageMaker Terpadu: Saat ini, menerbitkan Tabel Amazon S3 sebagai Aset di Studio SageMaker Terpadu tidak tersedia; memvisualisasikan Kualitas Data Tabel Amazon S3 berjalan tidak tersedia dari Unified Studio sebagai hasilnya. SageMaker 

## Topik terkait
<a name="data-quality-get-started-related"></a>
+ [Referensi tipe aturan DQDL](dqdl-rule-types.md)
+ [Referensi Bahasa Definisi Kualitas Data (DQDL)](dqdl.md)

# Mengevaluasi kualitas data dengan AWS Glue Studio
<a name="data-quality-gs-studio"></a>

 AWS GlueKualitas Data mengevaluasi dan memantau kualitas data Anda berdasarkan aturan yang Anda tetapkan. Ini memudahkan untuk mengidentifikasi data yang membutuhkan tindakan. DiAWS Glue Studio, Anda dapat menambahkan node kualitas data ke pekerjaan visual Anda untuk membuat aturan kualitas data pada tabel di Katalog Data Anda. Anda kemudian dapat memantau dan mengevaluasi perubahan pada kumpulan data Anda saat mereka berkembang dari waktu ke waktu. Untuk gambaran umum tentang cara bekerja dengan Kualitas AWS Glue Data diAWS Glue Studio, lihat video berikut.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/DUd5s_CFtBM/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/DUd5s_CFtBM)


 Berikut ini adalah langkah-langkah tingkat tinggi untuk bagaimana Anda bekerja dengan Kualitas AWS Glue Data: 

1. **Buat aturan kualitas data** — Buat seperangkat aturan kualitas data menggunakan pembuat DQDL dengan memilih kumpulan aturan bawaan yang Anda konfigurasikan. 

1.  **Konfigurasikan pekerjaan kualitas data** - Tentukan tindakan berdasarkan hasil kualitas data dan opsi keluaran. 

1.  **Simpan dan jalankan pekerjaan berkualitas data** — Buat dan jalankan pekerjaan. Menyimpan pekerjaan akan menyimpan aturan yang Anda buat untuk pekerjaan itu. 

1.  **Pantau dan tinjau hasil kualitas data** — Tinjau hasil kualitas data setelah pekerjaan selesai. Secara opsional, jadwalkan pekerjaan untuk kencan masa depan. 

## Manfaat
<a name="gs-data-quality-benefits"></a>

 Analis data, insinyur data, dan ilmuwan data dapat menggunakan node Evaluate Data Quality AWS Glue Studio untuk menganalisis, mengkonfigurasi, memantau, dan meningkatkan kualitas data dari editor pekerjaan visual. Manfaat menggunakan node kualitas data meliputi: 
+  **Anda dapat mendeteksi masalah kualitas data** - Anda dapat memeriksa masalah dengan membuat aturan yang memeriksa karakteristik kumpulan data Anda. 
+  **Sangat mudah untuk memulai** - Anda dapat mulai dengan aturan dan tindakan pra-dibangun. 
+  **Integrasi ketat** - Anda dapat menggunakan node kualitas AWS Glue data AWS Glue Studio karena Kualitas Data berjalan di atas Katalog AWS Glue Data. 

# Mengevaluasi kualitas data untuk pekerjaan ETL di AWS Glue Studio
<a name="tutorial-data-quality"></a>

Dalam tutorial ini, Anda memulai dengan Kualitas AWS Glue Data diAWS Glue Studio. Anda akan mempelajari cara: 
+  Buat aturan menggunakan pembuat aturan Data Quality Definition Language (DQDL). 
+  Tentukan tindakan kualitas data, data ke output, dan lokasi output dari hasil kualitas data. 
+  Tinjau hasil kualitas data. 

 Untuk berlatih dengan contoh, tinjau posting blog [https://aws.amazon.com/blogs/big-data/getting-started-with-aws-glue-data-quality-for-etl-pipelines/](https://aws.amazon.com/blogs/big-data/getting-started-with-aws-glue-data-quality-for-etl-pipelines/). 

## Langkah 1: Tambahkan node transformasi Kualitas Data Evaluasi ke pekerjaan visual
<a name="tutorial-data-quality-step1"></a>

Pada langkah ini, Anda menambahkan node Evaluate Data Quality ke editor pekerjaan visual. 

**Untuk menambahkan node kualitas data**

1.  Di konsol AWS Glue Studio, pilih **Visual dengan sumber dan target** dari bagian **Buat pekerjaan**, lalu pilih **Buat**. 

1.  Pilih node  yang ingin Anda terapkan transformasi kualitas data. Biasanya, ini akan menjadi node transformasi atau sumber data. 

1.  Buka panel sumber daya di sebelah kiri dengan memilih ikon “\$1”. Kemudian cari **Evaluasi Kualitas Data** di bilah pencarian dan pilih **Evaluasi Kualitas Data** dari hasil pencarian. 

1.  Editor pekerjaan visual menampilkan **Evaluate Data Quality** transform node percabangan dari node yang Anda pilih. Di sisi kanan konsol, tab **Transform** dibuka secara otomatis. Jika Anda perlu mengubah node induk, pilih tab **Properti Node**, lalu pilih induk simpul dari menu tarik-turun. 

    Ketika Anda memilih induk node baru, koneksi baru dibuat antara node induk dan node **Evaluate Data Quality**. Hapus semua node induk yang tidak diinginkan. Hanya satu node induk yang dapat dihubungkan ke satu node **Evaluate Data Quality**. 

1.  Transformasi Evaluasi Kualitas Data mendukung beberapa induk sehingga Anda dapat memvalidasi aturan kualitas data di beberapa kumpulan data. Aturan yang mendukung beberapa kumpulan data termasuk ReferentialIntegrity,,, DatasetMatch SchemaMatch RowCountMatch, dan. AggregateMatch 

   Saat Anda menambahkan beberapa input ke transformasi Evaluasi Kualitas Data, Anda harus memilih input “primer” Anda. Masukan utama Anda adalah kumpulan data yang ingin Anda validasi kualitas data. Semua node atau input lainnya diperlakukan sebagai referensi. 

   Anda dapat menggunakan transformasi Evaluasi Kualitas Data untuk mengidentifikasi catatan tertentu yang gagal memeriksa kualitas data. Kami menyarankan Anda memilih kumpulan data utama karena kolom baru yang menandai catatan buruk ditambahkan ke kumpulan data utama. 

1.  Anda dapat menentukan alias untuk sumber data input. Alias menyediakan cara lain untuk mereferensikan sumber input saat Anda menggunakan ReferentialIntegrity aturan. Karena hanya satu sumber data yang dapat ditetapkan sebagai sumber utama, setiap sumber data tambahan yang Anda tambahkan akan memerlukan alias. 

   Dalam contoh berikut, ReferentialIntegrity aturan menentukan sumber data input dengan nama alias dan melakukan one-to-one perbandingan dengan sumber data primer. 

   ```
   Rules = [
   	ReferentialIntegrity “Aliasname.name” = 1
   ]
   ```

## Langkah 2: Buat aturan menggunakan DQDL
<a name="tutorial-data-quality-step2"></a>

Pada langkah ini, Anda membuat aturan menggunakan DQDL. Untuk tutorial ini, Anda membuat aturan tunggal menggunakan tipe aturan **Kelengkapan**. Jenis aturan ini memeriksa persentase nilai lengkap (non-null) dalam kolom terhadap ekspresi yang diberikan. [Untuk informasi selengkapnya tentang penggunaan DQDL, lihat DQDL.](https://docs.aws.amazon.com/glue/latest/dg/dqdl.html) 

1.  Pada tab **Transform**, tambahkan **tipe Rule** dengan memilih tombol **Insert**. Ini menambahkan jenis aturan ke editor aturan, di mana Anda dapat memasukkan parameter untuk aturan. 
**catatan**  
 Saat Anda mengedit aturan, pastikan aturan berada dalam tanda kurung dan aturan dipisahkan dengan koma. Misalnya, ekspresi aturan lengkap akan terlihat seperti berikut:   

   ```
   Rules= [
       Completeness "year">0.8, Completeness "month">0.8
   ]
   ```
 Contoh ini menentukan parameter untuk kelengkapan untuk kolom bernama 'tahun' dan 'bulan'. Agar aturan dapat lulus, kolom ini harus lebih besar dari 80% 'lengkap', atau harus memiliki data di lebih dari 80% contoh untuk setiap kolom masing-masing. 

    Dalam contoh ini, cari dan masukkan tipe aturan **Kelengkapan**. Ini menambahkan jenis aturan ke editor aturan. Jenis aturan ini memiliki sintaks berikut:`Completeness <COL_NAME> <EXPRESSION>`. 

   Sebagian besar tipe aturan mengharuskan Anda memberikan ekspresi sebagai parameter untuk membuat respons Boolean. [Untuk informasi selengkapnya tentang ekspresi DQDL yang didukung,  lihat ekspresi DQDL.](https://docs.aws.amazon.com/glue/latest/dg/dqdl.html#dqdl-syntax) Selanjutnya, Anda akan menambahkan nama kolom. 

1.  **Di pembuat aturan DQDL, pilih tab Skema.** Gunakan bilah pencarian untuk menemukan nama kolom dalam skema input. Skema input menampilkan nama kolom dan tipe data. 

1.  Di editor aturan, klik di sebelah kanan jenis aturan untuk menyisipkan kursor tempat kolom akan dimasukkan. Bergantian, Anda dapat memasukkan nama kolom dalam aturan. 

    Misalnya, dari daftar kolom dalam daftar skema input, pilih tombol **Sisipkan** di sebelah kolom (dalam contoh ini, **tahun**). Ini menambahkan kolom ke aturan. 

1.  Kemudian, di editor aturan, tambahkan ekspresi untuk mengevaluasi aturan. Karena tipe aturan **Kelengkapan** memeriksa persentase nilai lengkap (non-null) dalam kolom terhadap ekspresi yang diberikan, masukkan ekspresi seperti. `> 0.8` Aturan ini memeriksa kolom jika lebih besar dari 80% nilai lengkap (non-null). 

## Langkah 3: Konfigurasikan output kualitas data
<a name="tutorial-data-quality-step3"></a>

 Setelah membuat aturan kualitas data, Anda dapat memilih opsi tambahan untuk menentukan output node kualitas data. 

1.  Dalam **output transformasi kualitas data**, pilih dari opsi berikut: 
   +  **Data asli** - Pilih untuk mengeluarkan data input asli. Saat Anda memilih opsi ini, simpul anak baru “rowLevelOutcomes” ditambahkan ke pekerjaan. Skema cocok dengan skema kumpulan data utama yang diteruskan sebagai input ke transformasi. Opsi ini berguna jika Anda hanya ingin meneruskan data dan gagal dalam pekerjaan ketika masalah kualitas terjadi. 

     Kasus penggunaan lainnya adalah ketika Anda ingin mendeteksi catatan buruk yang gagal memeriksa kualitas data. Untuk mendeteksi catatan buruk, pilih opsi **Tambahkan kolom baru untuk menunjukkan kesalahan kualitas data**. Tindakan ini menambahkan empat kolom baru ke skema transformasi “rowLevelOutcomes”. 
     +  **DataQualityRulesPass**(string array) - Menyediakan array aturan yang lulus pemeriksaan kualitas data. 
     +  **DataQualityRulesFail**(string array) - Menyediakan array aturan yang gagal pemeriksaan kualitas data. 
     +  **DataQualityRulesSkip**(string array) - Menyediakan array aturan yang dilewati. Aturan berikut tidak dapat mengidentifikasi catatan kesalahan karena diterapkan pada tingkat kumpulan data. 
       +  AggregateMatch 
       +  ColumnCount 
       +  ColumnExists 
       +  ColumnNamesMatchPattern 
       +  CustomSql 
       +  RowCount 
       +  RowCountMatch 
       +  StandardDeviation 
       +  Berarti 
       +  ColumnCorrelation 
     +  **DataQualityEvaluationResult**— Menyediakan status “Lulus” atau “Gagal” di tingkat baris. Perhatikan bahwa hasil keseluruhan Anda bisa GAGAL, tetapi catatan tertentu mungkin lolos. Misalnya, RowCount aturan mungkin gagal, tetapi semua aturan lain mungkin berhasil. Dalam kasus seperti itu, status bidang ini adalah 'Lulus'. 

1.  **Hasil kualitas data** — Pilih untuk menampilkan aturan yang dikonfigurasi dan status lulus atau gagalnya. Opsi ini berguna jika Anda ingin menulis hasil Anda ke Amazon S3 atau database lainnya. 

1. **Pengaturan keluaran kualitas data** (Opsional) - Pilih **pengaturan keluaran kualitas data** **untuk mengungkapkan bidang lokasi hasil kualitas data**. Kemudian, pilih **Browse** untuk mencari lokasi Amazon S3 untuk ditetapkan sebagai target output kualitas data. 

## Langkah 4. Konfigurasikan tindakan kualitas data
<a name="tutorial-data-quality-step4"></a>

 Anda dapat menggunakan tindakan untuk mempublikasikan metrik ke CloudWatch atau menghentikan pekerjaan berdasarkan kriteria tertentu. Tindakan hanya tersedia setelah Anda membuat aturan. Saat Anda memilih opsi ini, metrik yang sama juga dipublikasikan ke Amazon EventBridge. Anda dapat menggunakan opsi ini untuk [membuat peringatan untuk pemberitahuan](https://docs.aws.amazon.com/glue/latest/dg/data-quality-alerts.html). 
+  **Pada kegagalan ruleset** — Anda dapat memilih apa yang harus dilakukan jika kumpulan aturan gagal saat pekerjaan sedang berjalan. Jika Anda ingin pekerjaan gagal jika kualitas data gagal, pilih kapan pekerjaan harus gagal dengan memilih salah satu opsi berikut. Secara default, tindakan ini tidak dipilih, dan pekerjaan menyelesaikan jalannya meskipun aturan kualitas data gagal. 
  +  **None** - Jika Anda memilih **None** (default), pekerjaan tidak gagal dan terus berjalan meskipun ruleset gagal. 
  +  **Gagal pekerjaan setelah memuat data ke target** - Pekerjaan gagal dan tidak ada data yang disimpan. Untuk menyimpan hasil, pilih lokasi Amazon S3 di mana hasil kualitas data akan disimpan. 
  +  **Gagal pekerjaan tanpa memuat ke data target** - Opsi ini gagal pekerjaan segera ketika kesalahan kualitas data terjadi. Itu tidak memuat target data apa pun, termasuk hasil dari transformasi kualitas data. 

## Langkah 5: Lihat hasil kualitas data
<a name="tutorial-data-quality-step5"></a>

 Setelah menjalankan pekerjaan, lihat hasil kualitas data dengan memilih tab **Kualitas data**. 

1.  Untuk setiap pekerjaan yang dijalankan, lihat hasil kualitas data. Setiap node menampilkan status kualitas data dan detail status. Pilih node untuk melihat semua aturan dan status setiap aturan. 

1.  Pilih **Unduh hasil** untuk mengunduh file CSV yang berisi informasi tentang pekerjaan dan hasil kualitas data. 

1.  Jika Anda memiliki lebih dari satu pekerjaan yang dijalankan dengan hasil kualitas data, Anda dapat memfilter hasil berdasarkan tanggal dan rentang waktu. Pilih *Filter berdasarkan tanggal dan rentang waktu* untuk memperluas jendela filter. 

1.  Pilih rentang relatif atau rentang absolut. Untuk rentang absolut, gunakan kalender untuk memilih tanggal, dan masukkan nilai untuk waktu mulai dan waktu akhir. Setelah selesai, pilih **Terapkan**. 

## Kualitas Data Otomatis
<a name="automatic-data-quality"></a>

 Saat Anda membuat pekerjaan AWS Glue ETL dengan Amazon S3 sebagai target, AWS Glue ETL secara otomatis mengaktifkan aturan Kualitas Data yang memeriksa apakah data yang dimuat memiliki setidaknya satu kolom. Aturan ini dirancang untuk memastikan bahwa data yang dimuat tidak kosong atau rusak. Namun, jika aturan ini gagal, pekerjaan tidak akan gagal; sebagai gantinya, Anda akan melihat penurunan skor kualitas data Anda. Selain itu, Deteksi Anomali diaktifkan secara default, yang memantau jumlah kolom dalam data. Jika ada variasi atau kelainan dalam jumlah kolom, AWS Glue ETL akan memberi tahu Anda tentang anomali ini. Fitur ini membantu Anda mengidentifikasi potensi masalah dengan data dan mengambil tindakan yang tepat. Untuk melihat aturan Kualitas Data dan konfigurasinya, Anda dapat mengklik target Amazon S3 di pekerjaan AWS Glue ETL Anda. Konfigurasi aturan akan ditampilkan, seperti yang ditunjukkan pada tangkapan layar yang disediakan. 

![\[Tangkapan layar menunjukkan opsi kualitas data otomatis yang tersedia untuk dipilih.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/automatic-data-quality.png)


 Anda dapat menambahkan aturan kualitas data tambahan dengan memilih **Edit konfigurasi kualitas data**. 

## Metrik Agregat
<a name="data-quality-aggregated-metrics"></a>

Anda mungkin memerlukan metrik agregat seperti jumlah catatan yang lulus, gagal, dilewati pada tingkat aturan atau pada tingkat aturan untuk membangun dasbor. Untuk mendapatkan Metrik Agregat dan Metrik Aturan untuk setiap aturan, pertama, aktifkan Metrik Teragregasi dengan menambahkan opsi ke `publishAggregatedMetrics` fungsi Anda. `EvaluateDataQuality`

Opsi yang memungkinkan untuk `additional_options` `publishAggregatedMetrics` adalah `ENABLED` dan`DISABLED`. Sebagai contoh:

```
EvaluateDataQualityMultiframe = EvaluateDataQuality().process_rows(
    frame=medicare_dyf,
    ruleset=EvaluateDataQuality_ruleset,
    publishing_options={
        "dataQualityEvaluationContext": "EvaluateDataQualityMultiframe",
        "enableDataQualityCloudWatchMetrics": False,
        "enableDataQualityResultsPublishing": False,
    },
    additional_options={"publishAggregatedMetrics.status": "ENABLED"},
)
```

Jika tidak ditentukan, `publishAggregatedMetrics.status` is secara `DISABLED` default dan RuleMetrics dan metrik agregat sekarang akan dihitung. Fitur ini saat ini didukung di AWS Glue Interactive Sessions dan dalam pekerjaan Glue ETL. Ini tidak didukung dalam Kualitas Data Katalog Glue APIs.

### Mengambil hasil metrik agregat
<a name="data-quality-aggregated-metrics-results"></a>

Kapan `additionalOptions``"publishAggregatedMetrics.status": "ENABLED"`, Anda bisa mendapatkan hasilnya di dua tempat:

1. `AggregatedMetrics`dan `RuleMetrics` dikembalikan melalui `GetDataQualityResult()` saat memberikan `resultId` tempat `AggregatedMetrics` dan `RuleMetrics` termasuk:

   **Metrik Agregat:**
   + Total baris diproses
   + Total baris yang dilewati
   + Total baris gagal
   + Total Aturan Diproses
   + Total Aturan Lulus
   + Total Aturan Gagal  
![\[Tangkapan layar menunjukkan metrik agregat dan struktur metrik aturan untuk evaluasi Kualitas Data AWS Glue.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data-quality-aggregated-metrics.png)

   Juga, pada tingkat aturan, metrik berikut disediakan:

   **Metrik Aturan:**
   + Baris Lulus
   + Baris Gagal
   + Baris Dilewati
   + Total Baris Diproses

1. `AggregatedMetrics`dikembalikan sebagai bingkai data tambahan dan bingkai `RuleOutcomes` data ditambah untuk disertakan`RuleMetrics`.

### Contoh implementasi
<a name="data-quality-aggregated-metrics-example"></a>

Contoh berikut menunjukkan cara menerapkan metrik agregat di Scala:

```
// Script generated for node Evaluate Data Quality
val EvaluateDataQuality_node1741974822533_ruleset = """
  # Example rules: Completeness "colA" between 0.4 and 0.8, ColumnCount > 10
  Rules = [
      IsUnique "customer_identifier",
      RowCount > 10,
      Completeness "customer_identifier" > 0.5
  ]
"""

val EvaluateDataQuality_node1741974822533 = EvaluateDataQuality.processRows(frame=ChangeSchema_node1742850392012, ruleset=EvaluateDataQuality_node1741974822533_ruleset, publishingOptions=JsonOptions("""{"dataQualityEvaluationContext": "EvaluateDataQuality_node1741974822533", "enableDataQualityCloudWatchMetrics": "true", "enableDataQualityResultsPublishing": "true"}"""), additionalOptions=JsonOptions("""{"compositeRuleEvaluation.method":"ROW","observations.scope":"ALL","performanceTuning.caching":"CACHE_NOTHING", "publishAggregatedMetrics.status": "ENABLED"}"""))

println("--------------------------------ROW LEVEL OUTCOMES--------------------------------")
val rowLevelOutcomes_node = EvaluateDataQuality_node1741974822533("rowLevelOutcomes")

rowLevelOutcomes_node.show(10)

 println("--------------------------------RULE LEVEL OUTCOMES--------------------------------")

val ruleOutcomes_node = EvaluateDataQuality_node1741974822533("ruleOutcomes")

ruleOutcomes_node.show()

 println("--------------------------------AGGREGATED METRICS--------------------------------")

val aggregatedMetrics_node = EvaluateDataQuality_node1741974822533("aggregatedMetrics")

aggregatedMetrics_node.show()
```

### Hasil sampel
<a name="data-quality-aggregated-metrics-sample-results"></a>

Hasil dikembalikan sebagai berikut:

```
{
    "Rule": "IsUnique \"customer_identifier\"",
    "Outcome": "Passed",
    "FailureReason": null,
    "EvaluatedMetrics": {
        "Column.customer_identifier.Uniqueness": 1
    },
    "EvaluatedRule": "IsUnique \"customer_identifier\"",
    "PassedCount": 10,
    "FailedCount": 0,
    "SkippedCount": 0,
    "TotalCount": 10
}
{
    "Rule": "RowCount > 10",
    "Outcome": "Failed",
    "FailureReason": "Value: 10 does not meet the constraint requirement!",
    "EvaluatedMetrics": {
        "Dataset.*.RowCount": 10
    },
    "EvaluatedRule": "RowCount > 10",
    "PassedCount": 0,
    "FailedCount": 0,
    "SkippedCount": 10,
    "TotalCount": 10
}
{
    "Rule": "Completeness \"customer_identifier\" > 0.5",
    "Outcome": "Passed",
    "FailureReason": null,
    "EvaluatedMetrics": {
        "Column.customer_identifier.Completeness": 1
    },
    "EvaluatedRule": "Completeness \"customer_identifier\" > 0.5",
    "PassedCount": 10,
    "FailedCount": 0,
    "SkippedCount": 0,
    "TotalCount": 10
}
```

Metrik Agregat adalah sebagai berikut:

```
{ "TotalRowsProcessed": 10, "PassedRows": 10, "FailedRows": 0, "TotalRulesProcessed": 3, "RulesPassed": 2, "RulesFailed": 1 }
```

# Pembuat aturan Kualitas Data
<a name="data-quality-rule-builder"></a>

Dengan pembuat aturan Data Quality Definition Language (DQDL), Anda dapat membuat aturan kualitas data untuk mengevaluasi data Anda. Mulailah dengan memilih jenis aturan, lalu tentukan parameter di editor aturan. Editor aturan juga menunjukkan kesalahan dan peringatan apa pun saat Anda membuat aturan. 

 [Panduan DQDL](https://docs.aws.amazon.com/glue/latest/dg/dqdl.html) menyediakan dokumentasi komprehensif tentang cara membuat aturan menggunakan sintaks DQDL, tipe aturan bawaan, dan contoh. 

## Mengevaluasi node Kualitas Data
<a name="gs-data-quality-transform-expand-view"></a>

 Saat Anda bekerja dengan node transformasi **Evaluate Data Quality** dan pembuat aturan DQDL, Anda dapat memperluas ruang kerja. 
+  Untuk memperluas tab **Transform** untuk mengisi seluruh layar, pilih ikon perluas di sudut kanan atas panel detail simpul. 
+  **Untuk memperluas editor aturan DQDL, pilih ikon  **<<** untuk memperluas editor aturan dan menciutkan tab **Rule types** dan Schema.**   
![\[Tangkapan layar menunjukkan diagram pekerjaan dengan node Evaluate Data Quality.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data_quality_example.png)

## Komponen-komponen
<a name="gs-data-quality-rule-builder-components"></a>

 Ada 26 jenis aturan yang dibangun ke dalamAWS Glue Studio. Setiap jenis aturan memiliki deskripsi dan contoh bagaimana mereka dapat digunakan. 

### Jenis aturan kualitas data
<a name="gs-data-quality-rule-types"></a>

 AWS Glue Studiomenyediakan tipe aturan bawaan untuk kemudahan dalam membuat aturan. Untuk informasi selengkapnya tentang jenis aturan, lihat referensi tipe [aturan DQDL](https://docs.aws.amazon.com/glue/latest/dg/dqdl.html#dqdl-rule-types). 

### Skema
<a name="gs-data-quality-schema"></a>

 Tab **Skema** menampilkan nama kolom dan tipe data dari node induk. Skema dari beberapa node ditampilkan. Anda dapat melihat skema input, mencari berdasarkan nama kolom, dan menyisipkan kolom ke editor aturan. 

![\[Tangkapan layar menunjukkan editor aturan dengan aturan lengkap yang menggunakan tipe aturan Kelengkapan.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data_quality_schema.png)


### Editor aturan
<a name="gs-dataquality-rule-editor"></a>

 Editor aturan adalah editor teks tempat Anda dapat menulis dan mengedit aturan. Jika Anda memilih jenis aturan dari pembuat aturan DQDL, jenis aturan ditambahkan ke editor aturan. Anda kemudian dapat menentukan parameter, menambahkan aturan, dan mengedit aturan sesuai kebutuhan dengan memodifikasi teks. AWS Glue Studiomemvalidasi aturan di editor aturan dan menampilkan kesalahan dan peringatan jika ada. 

 **Kesalahan dan peringatan** 

 Jika aturan tidak mengikuti sintaks aturan DQDL, editor aturan menunjukkan beberapa indikator visual bahwa ada kesalahan: 
+  Editor aturan menampilkan ikon kesalahan dan warna merah pada baris dengan kesalahan. 
+  Editor aturan menampilkan jumlah kesalahan di sebelah ikon kesalahan merah. 
+  Ketika Anda memilih baris dengan kesalahan, deskripsi kesalahan dan lokasi (baris dan kolom) ditampilkan di bagian bawah editor aturan. 

![\[Tangkapan layar menunjukkan editor aturan DQDL dengan indikator kesalahan pada baris 1 dan di bagian bawah editor aturan dengan jumlah kesalahan. Di bawah ini adalah deskripsi kesalahan.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data_quality_rule_editor_error.png)


## 
<a name="gs-data-quality-settings"></a>

 **Tindakan kualitas data** 

 Secara default, tindakan ini tidak dipilih dan pekerjaan akan menyelesaikan jalannya bahkan jika aturan kualitas data gagal. 

 Pilih di antara tindakan berikut. Anda dapat menggunakan tindakan untuk mempublikasikan hasil CloudWatch atau menghentikan pekerjaan berdasarkan kriteria tertentu. Tindakan hanya tersedia setelah Anda membuat aturan. 
+  **Publikasikan hasil ke CloudWatch** — Saat Anda menjalankan pekerjaan, tambahkan hasilnya ke CloudWatch. 
+  **Gagal pekerjaan ketika kualitas data gagal** - Jika aturan kualitas data gagal, pekerjaan juga akan gagal sebagai hasilnya. 

 **Output transformasi kualitas data** 
+  **Data asli** - Pilih untuk mengeluarkan data input asli. Opsi ini sangat ideal jika Anda ingin menghentikan pekerjaan ketika masalah kualitas terdeteksi. 
+  **Metrik kualitas data** — Pilih untuk menampilkan aturan yang dikonfigurasi dan status lulus atau gagalnya. Opsi ini berguna jika Anda ingin mengambil tindakan khusus. 

 **Pengaturan output kualitas data** 

 Tetapkan lokasi hasil kualitas data dengan menentukan lokasi Amazon S3 sebagai target keluaran kualitas data. 

# Mengkonfigurasi deteksi anomali dalam pekerjaan Glue AWS ETL
<a name="data-quality-configuring-anomaly-detection-etl-jobs"></a>

 Untuk memulai dengan deteksi anomali di AWS Glue Studio, buka pekerjaan AWS Glue Studio dan klik **Evaluate Data Quality** Transform. 

 Dengan mengaktifkan fitur ini, AWS Glue Data Quality akan menganalisis data Anda dari waktu ke waktu untuk mendeteksi anomali. Ini memberikan statistik data berharga dan pengamatan tentang data Anda, memungkinkan Anda untuk mengambil tindakan pada anomali yang diidentifikasi. 

 Tinjau dokumentasi [Deteksi Anomali](data-quality-anomaly-detection.md) untuk memahami cara kerja bagian dalam fitur ini. 

## Mengaktifkan deteksi anomali
<a name="data-quality-enabling-anomaly-detection"></a>

**Untuk mengaktifkan deteksi anomali di: AWS Glue Studio**

1.  Pilih node **Kualitas Data** di pekerjaan Anda, lalu pilih tab **Deteksi anomali**. Beralih untuk mengaktifkan **Aktifkan Deteksi Anomali**.   
![\[Tangkapan layar menunjukkan sakelar untuk “Aktifkan deteksi anomali” aktif. Ini dapat diaktifkan atau dimatikan.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data-quality-enable-anomaly-detection.png)

1.  Tentukan data untuk memantau anomali dengan memilih **Add** analyzer. Ada dua bidang yang dapat Anda isi: Statistik dan Data. 
   +  **Statistik** adalah informasi tentang bentuk data Anda dan properti lainnya. Anda dapat memilih satu atau lebih statistik sekaligus, atau memilih **Semua statistik**. Statistik meliputi: Kelengkapan, Keunikan, Mean, Jumlah,, Entropi, StandardDeviation, dan banyak lagi. DistinctValuesCount UniqueValueRatio Lihat dokumentasi [Analyzers](dqdl.md#dqdl-analyzers) untuk detail selengkapnya. 
   +  **Data** adalah kolom dalam dataset Anda. Anda dapat memilih semua kolom atau kolom individual.   
![\[Tangkapan layar menunjukkan bidang untuk Statistik dan Data. Anda dapat memilih statistik mana yang ingin Anda terapkan ke kumpulan data Anda dan kolom mana.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data-quality-add-analyzer.png)

1.  Pilih **Tambahkan cakupan deteksi anomali** untuk menyimpan perubahan Anda. Setelah menambahkan penganalisis, Anda dapat melihatnya di bagian cakupan **deteksi anomali**. 

    Anda juga dapat menggunakan menu **Tindakan** untuk mengedit penganalisis Anda, atau memilih tab **editor Ruleset dan mengedit penganalisis langsung di notepad editor** ruleset. Anda akan melihat penganalisis yang Anda simpan di bawah aturan apa pun yang telah Anda buat. 

   ```
   Rules = [
   
   ]
   
   Analyzers = [
       Completeness “id”
   ]
   ```

 Setelah set aturan dan penganalisis yang diperbarui dikonfigurasi, AWS Glue Data Quality terus memantau aliran data yang masuk. Ini dapat menandakan anomali potensial melalui peringatan atau penghentian pekerjaan, tergantung pada pengaturan Anda. Pemantauan proaktif ini membantu memastikan kualitas dan integritas data di seluruh jalur data Anda. 

 Di bagian selanjutnya, Anda akan belajar cara memantau anomali yang diidentifikasi oleh sistem secara efektif. Anda juga akan belajar cara melihat dan menganalisis statistik data yang dikumpulkan oleh AWS Glue Data Quality. Selain itu, Anda akan memahami cara memberikan umpan balik ke model pembelajaran mesin yang mendukung fitur Deteksi Anomali. Lingkaran umpan balik ini sangat penting untuk meningkatkan akurasi model dan memastikannya dapat secara efektif mendeteksi anomali yang sesuai dengan kebutuhan bisnis dan pola data spesifik Anda. 

# Melihat skor kualitas data dan anomali
<a name="data-quality-viewing-scores-and-anomalies"></a>

 Di bagian ini, kita akan menjelajahi dasbor kualitas data dan berbagai fungsi yang disediakannya. 

## Visualisasikan dan pahami metrik dan tren kualitas data tingkat tinggi
<a name="data-quality-visualize-metrics-and-trends"></a>

 Setelah pekerjaan Anda berhasil, pilih tab **Kualitas Data** untuk melihat skor kualitas data dan anomali. 

![\[Tangkapan layar menunjukkan tab Kualitas data yang dipilih dan skor serta metrik.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data-quality-visualize-data-quality-metrics.png)


 Komponen berikut di tab Kualitas data memberikan informasi yang berguna. 

1.  Pilih tab **Kualitas Data** untuk melihat metrik kualitas data. 

1.  Pilih ID job run tertentu untuk melihat skor Kualitas Data. 

1.  Panel ini menampilkan tiga informasi penting. Anda dapat memilih masing-masing untuk menavigasi ke tabel tertentu untuk melihat anomali, statistik data, atau aturan. 
   +  Skor Kualitas Data saat aturan dikonfigurasi. 
   +  Jumlah statistik yang dikumpulkan oleh Aturan dan Analyzer. 
   +  Jumlah anomali yang terdeteksi. 

1.  Grafik tren ini menunjukkan bagaimana kualitas data menjadi tren dari waktu ke waktu. Anda dapat mengarahkan kursor ke tren dan pergi ke waktu tertentu ketika skor kualitas data memburuk. 

1.  Tren anomali dari waktu ke waktu akan menunjukkan kepada Anda jumlah anomali yang terdeteksi dari waktu ke waktu. 

1.  Tab: 
   +  Aturan Tab adalah tab default yang menampilkan daftar semua aturan dan status. Aturan yang Dievaluasi berguna dalam kasus aturan dinamis untuk melihat nilai aktual aturan yang dievaluasi. 
   +  Statistik Tab mencantumkan semua statistik, memungkinkan Anda untuk melihat metrik dan tren dari waktu ke waktu. 
   +  Tab anomali menunjukkan daftar anomali yang terdeteksi. 

## Melihat anomali dan melatih algoritma deteksi anomali
<a name="data-quality-visualize-anomalies"></a>

![\[Tangkapan layar menunjukkan tab Anomali dengan metrik.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data-quality-visualize-anomaly-detection.png)


 Panggilan untuk gambar di atas: 

1.  Ketika anomali terdeteksi, klik anomali atau pilih tab Anomali 

1.  AWS Glue Data Quality memberikan penjelasan rinci tentang anomali, nilai aktual, rentang prediksi 

1.  AWS Glue Data Quality menunjukkan garis tren. Ini memiliki nilai aktual, tren turunan berdasarkan nilai aktual (garis merah), batas atas dan batas bawah 

1.  AWS Glue Data Quality merekomendasikan aturan kualitas data yang dapat digunakan untuk menangkap pola untuk masa depan. Anda dapat menyalin semua aturan yang direkomendasikan kepada Anda dan menerapkannya ke node kualitas data Anda untuk menangkap pola-pola ini secara efektif. 

1.  Anda dapat memberikan input ke model machine learning (ML) untuk mengecualikan nilai anomali, memastikan bahwa future run mendeteksi anomali secara akurat. Jika Anda tidak secara eksplisit mengecualikan anomali, AWS Glue Data Quality akan secara otomatis menganggapnya sebagai bagian dari model untuk prediksi masa depan. Penting untuk dicatat bahwa hanya proses terbaru yang akan mencerminkan input model yang Anda berikan. Misalnya, jika Anda kembali dan mengecualikan titik anomali dari beberapa proses sebelumnya, model tidak akan mencerminkan perubahan tersebut kecuali Anda melihat dan memperbarui input model dalam proses terbaru. Model akan terus menggunakan input yang disediakan sebelumnya sampai Anda membuat penyesuaian yang diperlukan dalam proses terbaru. Dengan secara aktif mengelola pengecualian nilai anomali, Anda dapat menyempurnakan pemahaman model ML tentang apa yang merupakan anomali untuk pola dan persyaratan data spesifik Anda, yang mengarah ke deteksi anomali yang lebih akurat dari waktu ke waktu. 

## Melihat Statistik Data dari waktu ke waktu dan memberikan masukan pelatihan
<a name="data-quality-visualize-data-statistics-over-time"></a>

 Terkadang, Anda mungkin ingin melihat statistik data atau profil data dan melihat perkembangannya dari waktu ke waktu. Untuk melakukan ini, pilih **Statistik** atau buka tab **Statistik**. Anda kemudian dapat melihat statistik data terbaru yang dikumpulkan oleh AWS Glue Data Quality. 

![\[Tangkapan layar menunjukkan tab Statistik dengan kumpulan data dan statistik kolom.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data-quality-visualize-data-statistics-over-time.png)


 Mengklik **Tren Tampilan** menunjukkan kepada Anda bagaimana masing-masing statistik berkembang dari waktu ke waktu. 

![\[Tangkapan layar menunjukkan tab Statistik dengan kumpulan data dan statistik kolom.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data-quality-view-trends-over-time.png)


1.  Anda dapat memilih statistik untuk kolom tertentu 

1.  Anda dapat melihat bagaimana tren berkembang 

1.  Anda dapat memilih nilai anomali dan memilih untuk mengecualikan atau memasukkannya. Dengan memberikan umpan balik ini, algoritme akan mengecualikan atau menyertakan titik data anomali yang diidentifikasi dan melatih kembali model. Proses pelatihan ulang ini memastikan deteksi anomali yang akurat bergerak maju, karena model belajar dari umpan balik yang Anda berikan tentang nilai mana yang harus dianggap anomali atau tidak. 

    Melalui loop umpan balik ini, Anda memiliki kemampuan untuk menyempurnakan pemahaman algoritme tentang apa yang merupakan anomali untuk pola data spesifik dan persyaratan bisnis Anda. Dengan mengecualikan nilai yang tidak boleh ditandai sebagai anomali, atau termasuk nilai yang terlewatkan, model yang dilatih ulang akan menjadi lebih baik dalam membedakan antara titik data yang diharapkan dan benar-benar anomali. 

# Kualitas Data untuk pekerjaan ETL di notebook AWS Glue Studio
<a name="data-quality-gs-studio-notebooks"></a>

Dalam tutorial ini, Anda mempelajari cara menggunakan Kualitas AWS Glue Data untuk mengekstrak, mengubah, dan memuat (ETL) pekerjaan di AWS Glue Studio notebook. 

Anda dapat menggunakan buku catatan AWS Glue Studio untuk mengedit skrip pekerjaan dan melihat output tanpa harus menjalankan pekerjaan penuh. Anda juga dapat menambahkan penurunan harga dan menyimpan buku catatan sebagai `.ipynb` file dan skrip pekerjaan. Perhatikan bahwa Anda dapat memulai notebook tanpa menginstal perangkat lunak secara lokal atau mengelola server. Ketika Anda puas dengan kode Anda, Anda dapat menggunakannya AWS Glue Studio untuk dengan mudah mengonversi buku catatan Anda ke AWS Glue pekerjaan. 

Kumpulan data yang Anda gunakan dalam contoh ini terdiri dari data pembayaran Penyedia Medicare yang diunduh dari dua kumpulan data *data.cms.gov*: “Ringkasan Penyedia Sistem Pembayaran Prospektif Rawat Inap untuk 100 Grup Terkait Diagnosis Teratas -" dan “Data Biaya Rawat Inap TA 2011". FY2011 

Setelah mengunduh data, kami memodifikasi kumpulan data untuk memperkenalkan beberapa catatan yang salah di akhir file. File yang dimodifikasi ini terletak di bucket Amazon S3 publik di `s3://awsglue-datasets/examples/medicare/Medicare_Hospital_Provider.csv`. 

## Prasyarat
<a name="w2aac49c54c14"></a>
+  AWS Glueperan dengan izin Amazon S3 untuk menulis ke bucket Amazon S3 tujuan Anda 
+  Notebook baru (lihat [Memulai notebook di AWS Glue Studio](https://docs.aws.amazon.com/glue/latest/ug/notebook-getting-started.html)) 

## Membuat pekerjaan ETL di AWS Glue Studio
<a name="data-quality-notebooks-example"></a>

**Untuk membuat pekerjaan ETL**

1.  Ubah versi sesi ke AWS Glue 3.0. 

    Untuk melakukan ini, hapus semua sel kode boilerplate dengan sihir berikut dan jalankan sel. Perhatikan bahwa kode boilerplate ini secara otomatis disediakan di sel pertama saat notebook baru dibuat.

   ```
   %glue_version 3.0
   ```

1.  Salin kode  berikut dan jalankan di sel. 

   ```
   import sys
   from awsglue.transforms import *
   from awsglue.utils import getResolvedOptions
   from pyspark.context import SparkContext
   from awsglue.context import GlueContext
   from awsglue.job import Job
   
   sc = SparkContext.getOrCreate()
   glueContext = GlueContext(sc)
   spark = glueContext.spark_session
   job = Job(glueContext)
   ```

1.  Di sel berikutnya, impor `EvaluateDataQuality` kelas yang mengevaluasi Kualitas AWS Glue Data. 

   ```
   from awsgluedq.transforms import EvaluateDataQuality
   ```

1. Di sel berikutnya, baca data sumber menggunakan file.csv yang disimpan di bucket Amazon S3 publik. 

   ```
   medicare = spark.read.format(
   "csv").option(
   "header", "true").option(
   "inferSchema", "true").load(
   's3://awsglue-datasets/examples/medicare/Medicare_Hospital_Provider.csv')
   medicare.printSchema()
   ```

1.  Konversikan data ke file AWS Glue DynamicFrame. 

   ```
   from awsglue.dynamicframe import DynamicFrame
   medicare_dyf = DynamicFrame.fromDF(medicare,glueContext,"medicare_dyf")
   ```

1.  Buat kumpulan aturan menggunakan Data Quality Definition Language (DQDL).

   ```
   EvaluateDataQuality_ruleset = """
       Rules = [
           ColumnExists "Provider Id",
           IsComplete "Provider Id",
           ColumnValues  " Total Discharges " > 15
   ]
       ]
   """
   ```

1.  Validasi kumpulan data terhadap kumpulan aturan. 

   ```
   EvaluateDataQualityMultiframe = EvaluateDataQuality().process_rows(
       frame=medicare_dyf,
       ruleset=EvaluateDataQuality_ruleset,
       publishing_options={
           "dataQualityEvaluationContext": "EvaluateDataQualityMultiframe",
           "enableDataQualityCloudWatchMetrics": False,
           "enableDataQualityResultsPublishing": False,
       },
       additional_options={"performanceTuning.caching": "CACHE_NOTHING"},
   )
   ```

1.  Tinjau hasilnya.

   ```
   ruleOutcomes = SelectFromCollection.apply(
       dfc=EvaluateDataQualityMultiframe,
       key="ruleOutcomes",
       transformation_ctx="ruleOutcomes",
   )
   
   ruleOutcomes.toDF().show(truncate=False)
   ```

    Output: 

   ```
   --------------------------------------+-------+-----------------------------------------------------+-------------------------------------------+
   |Rule                                  |Outcome|FailureReason                                        |EvaluatedMetrics                           |
   +--------------------------------------+-------+-----------------------------------------------------+-------------------------------------------+
   |ColumnExists "Provider Id"            |Passed |null                                                 |{}                                         |
   |IsComplete "Provider Id"              |Passed |null                                                 |{Column.Provider Id.Completeness -> 1.0}   |
   |ColumnValues " Total Discharges " > 15|Failed |Value: 11.0 does not meet the constraint requirement!|{Column. Total Discharges .Minimum -> 11.0}|
   +--------------------------------------+-------+-----------------------------------------------------+-------------------------------------------+
   ```

1.  Filter baris yang diteruskan dan tinjau baris yang gagal dari hasil tingkat baris Kualitas Data. 

   ```
   owLevelOutcomes = SelectFromCollection.apply(
   dfc=EvaluateDataQualityMultiframe,
   key="rowLevelOutcomes",
   transformation_ctx="rowLevelOutcomes",
   )
   
   rowLevelOutcomes_df = rowLevelOutcomes.toDF() # Convert Glue DynamicFrame to SparkSQL DataFrame
   rowLevelOutcomes_df_passed = rowLevelOutcomes_df.filter(rowLevelOutcomes_df.DataQualityEvaluationResult == "Passed") # Filter only the Passed records.
   rowLevelOutcomes_df.filter(rowLevelOutcomes_df.DataQualityEvaluationResult == "Failed").show(5, truncate=False) # Review the Failed records
   ```

    Output: 

   ```
   +----------------------------------------+-----------+-------------------------------------+--------------------------+-------------+--------------+-----------------+------------------------------------+------------------+-------------------------+------------------------+-------------------------+--------------------------+----------------------------------------+----------------------------+---------------------------+
   |DRG Definition                          |Provider Id|Provider Name                        |Provider Street Address   |Provider City|Provider State|Provider Zip Code|Hospital Referral Region Description| Total Discharges | Average Covered Charges | Average Total Payments |Average Medicare Payments|DataQualityRulesPass      |DataQualityRulesFail                    |DataQualityRulesSkip        |DataQualityEvaluationResult|
   +----------------------------------------+-----------+-------------------------------------+--------------------------+-------------+--------------+-----------------+------------------------------------+------------------+-------------------------+------------------------+-------------------------+--------------------------+----------------------------------------+----------------------------+---------------------------+
   |039 - EXTRACRANIAL PROCEDURES W/O CC/MCC|10005      |MARSHALL MEDICAL CENTER SOUTH        |2505 U S HIGHWAY 431 NORTH|BOAZ         |AL            |35957            |AL - Birmingham                     |14                |$15131.85                |$5787.57                |$4976.71                 |[IsComplete "Provider Id"]|[ColumnValues " Total Discharges " > 15]|[ColumnExists "Provider Id"]|Failed                     |
   |039 - EXTRACRANIAL PROCEDURES W/O CC/MCC|10046      |RIVERVIEW REGIONAL MEDICAL CENTER    |600 SOUTH THIRD STREET    |GADSDEN      |AL            |35901            |AL - Birmingham                     |14                |$67327.92                |$5461.57                |$4493.57                 |[IsComplete "Provider Id"]|[ColumnValues " Total Discharges " > 15]|[ColumnExists "Provider Id"]|Failed                     |
   |039 - EXTRACRANIAL PROCEDURES W/O CC/MCC|10083      |SOUTH BALDWIN REGIONAL MEDICAL CENTER|1613 NORTH MCKENZIE STREET|FOLEY        |AL            |36535            |AL - Mobile                         |15                |$25411.33                |$5282.93                |$4383.73                 |[IsComplete "Provider Id"]|[ColumnValues " Total Discharges " > 15]|[ColumnExists "Provider Id"]|Failed                     |
   |039 - EXTRACRANIAL PROCEDURES W/O CC/MCC|30002      |BANNER GOOD SAMARITAN MEDICAL CENTER |1111 EAST MCDOWELL ROAD   |PHOENIX      |AZ            |85006            |AZ - Phoenix                        |11                |$34803.81                |$7768.90                |$6951.45                 |[IsComplete "Provider Id"]|[ColumnValues " Total Discharges " > 15]|[ColumnExists "Provider Id"]|Failed                     |
   |039 - EXTRACRANIAL PROCEDURES W/O CC/MCC|30010      |CARONDELET ST  MARYS HOSPITAL        |1601 WEST ST MARY'S ROAD  |TUCSON       |AZ            |85745            |AZ - Tucson                         |12                |$35968.50                |$6506.50                |$5379.83                 |[IsComplete "Provider Id"]|[ColumnValues " Total Discharges " > 15]|[ColumnExists "Provider Id"]|Failed                     |
   +----------------------------------------+-----------+-------------------------------------+--------------------------+-------------+--------------+-----------------+------------------------------------+------------------+-------------------------+------------------------+-------------------------+--------------------------+----------------------------------------+----------------------------+---------------------------+
   only showing top 5 rows
   ```

    Perhatikan bahwa AWS Glue Data Quality menambahkan empat kolom baru (DataQualityRulesPass DataQualityRulesFail, DataQualityRulesSkip,, dan DataQualityEvaluationResult). Ini menunjukkan catatan yang lulus, catatan yang gagal, aturan yang dilewati untuk evaluasi tingkat baris, dan hasil tingkat baris keseluruhan. 

1.  Tulis output ke bucket Amazon S3 untuk menganalisis data dan memvisualisasikan hasilnya.

   ```
   #Write the Passed records to the destination. 
   
   glueContext.write_dynamic_frame.from_options(
          frame = rowLevelOutcomes_df_passed,
          connection_type = "s3",
          connection_options = {"path": "s3://glue-sample-target/output-dir/medicare_parquet"},
          format = "parquet")
   ```

# Referensi Bahasa Definisi Kualitas Data (DQDL)
<a name="dqdl"></a>

Data Quality Definition Language (DQDL) adalah bahasa khusus domain yang Anda gunakan untuk menentukan aturan untuk AWS Glue Data Quality.

Panduan ini memperkenalkan konsep kunci DQDL untuk membantu Anda memahami bahasa. Ini juga menyediakan referensi untuk jenis aturan DQDL dengan sintaks dan contoh. Sebelum Anda menggunakan panduan ini, kami menyarankan Anda untuk membiasakan diri dengan AWS Glue Data Quality. Untuk informasi selengkapnya, lihat [AWS Glue Kualitas Data](glue-data-quality.md). 

**catatan**  
 DynamicRules hanya didukung di AWS Glue ETL. 

**Contents**
+ [

## Sintaks DQDL
](#dqdl-syntax)
  + [

### Struktur aturan
](#dqdl-syntax-rule-structure)
  + [

### Aturan komposit
](#dqdl-syntax-rule-composition)
    + [

#### Cara kerja aturan Komposit
](#dqdl-syntax-composite-rules)
  + [

### Ekspresi
](#dqdl-syntax-rule-expressions)
    + [

#### Kata kunci untuk NULL, EMPTY dan WHITESPACES\$1ONLY
](#dqdl-keywords-null-empty-whitespaces_only)
    + [

#### Pemfilteran dengan Klausul Where
](#dqdl-filtering-data-in-dqdl)
  + [

### Konstanta
](#dqdl-constants)
  + [

### Label
](#dqdl-labels)
    + [

#### Sintaks untuk label DQDL
](#dqdl-labels-syntax)
      + [

##### Kendala label
](#dqdl-labels-constraints)
    + [

#### Mengambil label DQDL
](#dqdl-labels-retrieving)
      + [

##### Hasil aturan
](#dqdl-labels-rule-outcomes)
      + [

##### Hasil tingkat baris
](#dqdl-labels-row-level-results)
      + [

##### Respon API
](#dqdl-labels-api-response)
  + [

### Aturan dinamis
](#dqdl-dynamic-rules)
  + [

### Analisa
](#dqdl-analyzers)
  + [

### Komentar
](#dqdl-syntax-comments)
+ [

# Referensi tipe aturan DQDL
](dqdl-rule-types.md)
  + [

# AggregateMatch
](dqdl-rule-types-AggregateMatch.md)
  + [

# ColumnCorrelation
](dqdl-rule-types-ColumnCorrelation.md)
  + [

# ColumnCount
](dqdl-rule-types-ColumnCount.md)
  + [

# ColumnDataType
](dqdl-rule-types-ColumnDataType.md)
  + [

# ColumnExists
](dqdl-rule-types-ColumnExists.md)
  + [

# ColumnLength
](dqdl-rule-types-ColumnLength.md)
  + [

# ColumnNamesMatchPattern
](dqdl-rule-types-ColumnNamesMatchPattern.md)
  + [

# ColumnValues
](dqdl-rule-types-ColumnValues.md)
  + [

# Kelengkapan
](dqdl-rule-types-Completeness.md)
  + [

# CustomSQL
](dqdl-rule-types-CustomSql.md)
  + [

# DataFreshness
](dqdl-rule-types-DataFreshness.md)
  + [

# DatasetMatch
](dqdl-rule-types-DatasetMatch.md)
  + [

# DistinctValuesCount
](dqdl-rule-types-DistinctValuesCount.md)
  + [

# Entropi
](dqdl-rule-types-Entropy.md)
  + [

# IsComplete
](dqdl-rule-types-IsComplete.md)
  + [

# IsPrimaryKey
](dqdl-rule-types-IsPrimaryKey.md)
  + [

# IsUnique
](dqdl-rule-types-IsUnique.md)
  + [

# Berarti
](dqdl-rule-types-Mean.md)
  + [

# ReferentialIntegrity
](dqdl-rule-types-ReferentialIntegrity.md)
  + [

# RowCount
](dqdl-rule-types-RowCount.md)
  + [

# RowCountMatch
](dqdl-rule-types-RowCountMatch.md)
  + [

# StandardDeviation
](dqdl-rule-types-StandardDeviation.md)
  + [

# Jumlah
](dqdl-rule-types-Sum.md)
  + [

# SchemaMatch
](dqdl-rule-types-SchemaMatch.md)
  + [

# Keunikan
](dqdl-rule-types-Uniqueness.md)
  + [

# UniqueValueRatio
](dqdl-rule-types-UniqueValueRatio.md)
  + [

# DetectAnomalies
](dqdl-rule-types-DetectAnomalies.md)
  + [

# FileFreshness
](dqdl-rule-types-FileFreshness.md)
  + [

# FileMatch
](dqdl-rule-types-FileMatch.md)
  + [

# FileUniqueness
](dqdl-rule-types-FileUniqueness.md)
  + [

# FileSize
](dqdl-rule-types-FileSize.md)

## Sintaks DQDL
<a name="dqdl-syntax"></a>

Dokumen DQDL peka huruf *besar/kecil dan berisi kumpulan aturan, yang mengelompokkan aturan* kualitas data individu bersama-sama. Untuk membuat kumpulan aturan, Anda harus membuat daftar bernama `Rules` (huruf besar), dibatasi oleh sepasang tanda kurung siku. Daftar harus berisi satu atau lebih aturan DQDL yang dipisahkan koma seperti contoh berikut.

```
Rules = [
   IsComplete "order-id",
   IsUnique "order-id"
]
```

### Struktur aturan
<a name="dqdl-syntax-rule-structure"></a>

Struktur aturan DQDL tergantung pada jenis aturan. Namun, aturan DQDL umumnya sesuai dengan format berikut.

```
<RuleType> <Parameter> <Parameter> <Expression>
```

`RuleType`adalah nama peka huruf besar/kecil dari jenis aturan yang ingin Anda konfigurasikan. Sebagai contoh, `IsComplete`, `IsUnique`, atau `CustomSql`. Parameter aturan berbeda untuk setiap jenis aturan. Untuk referensi lengkap jenis aturan DQDL dan parameternya, lihat. [Referensi tipe aturan DQDL](dqdl-rule-types.md)

### Aturan komposit
<a name="dqdl-syntax-rule-composition"></a>

 DQDL mendukung operator logis berikut yang dapat Anda gunakan untuk menggabungkan aturan. Aturan ini disebut aturan komposit. 

**and**  
`and`Operator logis menghasilkan `true` if dan hanya jika aturan yang menghubungkannya`true`. Jika tidak, aturan gabungan menghasilkan`false`. Setiap aturan yang Anda hubungkan dengan `and` operator harus dikelilingi oleh tanda kurung.  
Contoh berikut menggunakan `and` operator untuk menggabungkan dua aturan DQDL.  

```
(IsComplete "id") and (IsUnique "id")
```

**atau**  
`or`Operator logis menghasilkan `true` jika dan hanya jika satu atau lebih aturan yang menghubungkannya`true`. Setiap aturan yang Anda hubungkan dengan `or` operator harus dikelilingi oleh tanda kurung.  
Contoh berikut menggunakan `or` operator untuk menggabungkan dua aturan DQDL.  

```
(RowCount "id" > 100) or (IsPrimaryKey "id")
```

Anda dapat menggunakan operator yang sama untuk menghubungkan beberapa aturan, sehingga kombinasi aturan berikut diperbolehkan.

```
(Mean "Star_Rating" > 3) and (Mean "Order_Total" > 500) and (IsComplete "Order_Id")
```

Anda dapat menggabungkan operator logis menjadi satu ekspresi. Contoh:

```
(Mean "Star_Rating" > 3) and ((Mean "Order_Total" > 500) or (IsComplete "Order_Id"))
```

Anda juga dapat membuat aturan yang lebih kompleks dan bersarang.

```
(RowCount > 0) or ((IsComplete "colA") and (IsUnique "colA"))
```

#### Cara kerja aturan Komposit
<a name="dqdl-syntax-composite-rules"></a>

 Secara default, Aturan Komposit dievaluasi sebagai aturan individual di seluruh kumpulan data atau tabel dan kemudian hasilnya digabungkan. Dengan kata lain, ini mengevaluasi seluruh kolom terlebih dahulu dan kemudian menerapkan operator. Perilaku default ini dijelaskan di bawah ini dengan contoh: 

```
# Dataset

+------+------+
|myCol1|myCol2|
+------+------+
|     2|     1|
|     0|     3|
+------+------+

# Overall outcome

+----------------------------------------------------------+-------+
|Rule                                                      |Outcome|
+----------------------------------------------------------+-------+
|(ColumnValues "myCol1" > 1) OR (ColumnValues "myCol2" > 2)|Failed |
+----------------------------------------------------------+-------+
```

 Dalam contoh di atas, AWS Glue Data Quality pertama mengevaluasi `(ColumnValues "myCol1" > 1)` yang akan mengakibatkan kegagalan. Maka akan mengevaluasi `(ColumnValues "myCol2" > 2)` mana yang juga akan gagal. Kombinasi kedua hasil akan dicatat sebagai GAGAL. 

 Namun, jika Anda lebih suka perilaku seperti SQL, di mana Anda memerlukan seluruh baris untuk dievaluasi, Anda harus secara eksplisit mengatur `ruleEvaluation.scope` parameter seperti yang ditunjukkan pada cuplikan kode `additionalOptions` di bawah ini. 

```
object GlueApp {
  val datasource = glueContext.getCatalogSource(
    database="<db>",
    tableName="<table>",
    transformationContext="datasource"
  ).getDynamicFrame()

  val ruleset = """
    Rules = [
        (ColumnValues "age" >= 26) OR (ColumnLength "name" >= 4)        
    ]
  """

  val dq_results = EvaluateDataQuality.processRows(
    frame=datasource,
    ruleset=ruleset,
    additionalOptions=JsonOptions("""
        {
          "compositeRuleEvaluation.method":"ROW"
        }
      """
    )
  )
}
```

 Di AWS Glue Data Catalog, Anda dapat dengan mudah mengkonfigurasi opsi ini di antarmuka pengguna seperti yang ditunjukkan di bawah ini. 

![\[Tangkapan layar menunjukkan jendela pengaturan aturan komposit di mana Anda dapat memilih konfigurasi evaluasi aturan antara baris dan kolom. Jika Anda memilih Baris, aturan komposit akan berperilaku sebagai aturan tunggal yang mengevaluasi seluruh baris. Jika Anda memilih Kolom, aturan komposit akan mengevaluasi aturan individual di seluruh kumpulan data dan menggabungkan hasilnya.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/composite-rule-settings.png)


 Setelah ditetapkan, aturan komposit akan berperilaku sebagai aturan tunggal yang mengevaluasi seluruh baris. Contoh berikut menggambarkan perilaku ini. 

```
# Row Level outcome

+------+------+------------------------------------------------------------+---------------------------+
|myCol1|myCol2|DataQualityRulesPass                                        |DataQualityEvaluationResult|
+------+------+------------------------------------------------------------+---------------------------+
|2     |1     |[(ColumnValues "myCol1" > 1) OR (ColumnValues "myCol2" > 2)]|Passed                     |
|0     |3     |[(ColumnValues "myCol1" > 1) OR (ColumnValues "myCol2" > 2)]|Passed                     |
+------+------+------------------------------------------------------------+---------------------------+
```

 Beberapa aturan tidak dapat didukung dalam fitur ini karena hasil keseluruhannya bergantung pada ambang batas atau rasio. Mereka tercantum di bawah ini. 

 Aturan yang mengandalkan rasio: 
+  Kelengkapan 
+  DatasetMatch 
+  ReferentialIntegrity 
+  Keunikan 

 Aturan tergantung pada ambang batas: 

 Ketika aturan berikut termasuk dengan ambang batas, mereka tidak didukung. Namun, aturan yang tidak melibatkan `with threshold` tetap didukung. 
+  ColumnDataType 
+  ColumnValues 
+  CustomSQL 

### Ekspresi
<a name="dqdl-syntax-rule-expressions"></a>

Jika tipe aturan tidak menghasilkan respons Boolean, Anda harus memberikan ekspresi sebagai parameter untuk membuat respons Boolean. Misalnya, aturan berikut memeriksa rata-rata (rata-rata) dari semua nilai dalam kolom terhadap ekspresi untuk mengembalikan hasil benar atau salah.

```
Mean "colA" between 80 and 100
```

Beberapa jenis aturan seperti `IsUnique` dan `IsComplete` sudah mengembalikan respons Boolean.

Tabel berikut mencantumkan ekspresi yang dapat Anda gunakan dalam aturan DQDL. 


**Ekspresi DQDL yang didukung**  

| Ekspresi | Deskripsi | Contoh | 
| --- | --- | --- | 
| =x | Menyelesaikan true jika respons tipe aturan sama dengan. x |  <pre>Completeness "colA" = "1.0",<br />ColumnValues "colA" = "2022-06-30"</pre>  | 
|  \$1=x  | x Menyelesaikan ke true jika respons tipe aturan tidak sama dengan. x |  <pre>ColumnValues "colA" != "a",<br />ColumnValues "colA" != "2022-06-30"</pre>  | 
| > x | Menyelesaikan true jika respons tipe aturan lebih besar dari. x |  <pre>ColumnValues "colA" > 10</pre>  | 
| < x | Menyelesaikan true jika respons tipe aturan kurang dari. x |  <pre>ColumnValues "colA" < 1000,<br />ColumnValues "colA" < "2022-06-30"</pre>  | 
| >= x | Menyelesaikan true jika respons tipe aturan lebih besar dari atau sama dengan. x |  <pre>ColumnValues "colA" >= 10</pre>  | 
| <= x | Menyelesaikan true jika respons tipe aturan kurang dari atau sama dengan. x |  <pre>ColumnValues "colA" <= 1000</pre>  | 
| antara x  dan y | Menyelesaikan true jika respons tipe aturan jatuh dalam rentang tertentu (eksklusif). Hanya gunakan jenis ekspresi ini untuk tipe numerik dan tanggal. |  <pre>Mean "colA" between 8 and 100,<br />ColumnValues "colA" between "2022-05-31" and "2022-06-30"</pre>  | 
|  Bukan antara x dan y  |  Menyelesaikan ke true jika respons tipe aturan tidak termasuk dalam rentang tertentu (inklusif). Anda hanya harus menggunakan tipe ekspresi ini untuk tipe numerik dan tanggal.  |  <pre>ColumnValues "colA" not between "2022-05-31" and "2022-06-30"</pre>  | 
| di [a, b, c, ...] | Menyelesaikan true jika respons tipe aturan ada di set yang ditentukan. |  <pre>ColumnValues "colA" in [ 1, 2, 3 ],<br />ColumnValues "colA" in [ "a", "b", "c" ]</pre>  | 
| tidak di [a, b, c, ...] | Menyelesaikan true jika respons tipe aturan tidak ada dalam set yang ditentukan. |  <pre>ColumnValues "colA" not in [ 1, 2, 3 ],<br />ColumnValues "colA" not in [ "a", "b", "c" ]</pre>  | 
| pertandingan /ab\$1c/i | Menyelesaikan true jika respons tipe aturan cocok dengan ekspresi reguler. |  <pre>ColumnValues "colA" matches "[a-zA-Z]*"</pre>  | 
| tidak cocok /ab\$1c/i | Menyelesaikan true jika respons tipe aturan tidak cocok dengan ekspresi reguler. |  <pre>ColumnValues "colA" not matches "[a-zA-Z]*"</pre>  | 
| now() | Bekerja hanya dengan jenis ColumnValues aturan untuk membuat ekspresi tanggal. |  <pre>ColumnValues "load_date" > (now() - 3 days)</pre>  | 
| matches/in […]/not matches/notdi [...] with threshold | Menentukan persentase nilai yang cocok dengan kondisi aturan. Bekerja hanya denganColumnValues,ColumnDataType, dan jenis CustomSQL aturan. |  <pre>ColumnValues "colA" in ["A", "B"] with threshold > 0.8,<br />ColumnValues "colA" matches "[a-zA-Z]*" with threshold between 0.2 and 0.9<br />ColumnDataType "colA" = "Timestamp" with threshold > 0.9</pre>  | 

#### Kata kunci untuk NULL, EMPTY dan WHITESPACES\$1ONLY
<a name="dqdl-keywords-null-empty-whitespaces_only"></a>

 Jika Anda ingin memvalidasi jika kolom string memiliki nol, kosong atau string dengan hanya spasi putih Anda dapat menggunakan kata kunci berikut: 
+  NULL/null — Kata kunci ini menyelesaikan true untuk `null` nilai dalam kolom string. 

   `ColumnValues "colA" != NULL with threshold > 0.5`akan mengembalikan true jika lebih dari 50% data Anda tidak memiliki nilai nol. 

   `(ColumnValues "colA" = NULL) or (ColumnLength "colA" > 5)`akan mengembalikan true untuk semua baris yang memiliki nilai nol atau memiliki panjang> 5. *Perhatikan bahwa ini akan memerlukan penggunaan opsi “compositeRuleEvaluation.method” = “ROW”.* 
+  EMPTY/empty - Kata kunci ini menyelesaikan true untuk nilai string kosong (“”) dalam kolom string. Beberapa format data mengubah nol dalam kolom string menjadi string kosong. Kata kunci ini membantu menyaring string kosong dalam data Anda. 

   `(ColumnValues "colA" = EMPTY) or (ColumnValues "colA" in ["a", "b"])`akan mengembalikan true jika baris kosong, “a” atau “b”. *Perhatikan bahwa ini memerlukan penggunaan opsi “compositeRuleEvaluation.method” = “ROW”.* 
+  WHITESPACES\$1ONLY/whitespaces\$1only — Kata kunci ini menyelesaikan true untuk string dengan hanya spasi putih (“”) nilai dalam kolom string. 

   `ColumnValues "colA" not in ["a", "b", WHITESPACES_ONLY]`akan mengembalikan true jika baris bukan “a” atau “b” atau hanya spasi putih. 

   Aturan yang didukung: 
  +  [ColumnValues](https://docs.aws.amazon.com/glue/latest/dg/dqdl.html#dqdl-rule-types-ColumnValues) 

 Untuk ekspresi berbasis numerik atau tanggal, jika Anda ingin memvalidasi jika kolom memiliki nol, Anda dapat menggunakan kata kunci berikut. 
+  NULL/null — Kata kunci ini menyelesaikan true untuk nilai null dalam kolom string. 

   `ColumnValues "colA" in [NULL, "2023-01-01"]`akan mengembalikan true jika tanggal di kolom Anda salah satu `2023-01-01` atau null. 

   `(ColumnValues "colA" = NULL) or (ColumnValues "colA" between 1 and 9)`akan mengembalikan true untuk semua baris yang memiliki nilai nol atau memiliki nilai antara 1 dan 9. *Perhatikan bahwa ini akan memerlukan penggunaan opsi “compositeRuleEvaluation.method” = “ROW”.* 

   Aturan yang didukung: 
  +  [ColumnValues](https://docs.aws.amazon.com/glue/latest/dg/dqdl.html#dqdl-rule-types-ColumnValues) 

#### Pemfilteran dengan Klausul Where
<a name="dqdl-filtering-data-in-dqdl"></a>

**catatan**  
 Di mana Klausul hanya didukung di AWS Glue 4.0. 

 Anda dapat memfilter data Anda saat membuat aturan. Ini sangat membantu ketika Anda ingin menerapkan aturan bersyarat. 

```
<DQDL Rule> where "<valid SparkSQL where clause> "
```

 Filter harus ditentukan dengan `where` kata kunci, diikuti oleh pernyataan SparkSQL yang valid yang terlampir dalam tanda kutip. `("")` 

 Jika aturan Anda ingin menambahkan klausa where ke aturan dengan ambang batas, klausa where harus ditentukan sebelum kondisi ambang batas. 

```
<DQDL Rule> where "valid SparkSQL statement>" with threshold <threshold condition>
```

 Dengan sintaks ini Anda dapat menulis aturan seperti berikut ini. 

```
Completeness "colA" > 0.5 where "colB = 10"
ColumnValues "colB" in ["A", "B"] where "colC is not null" with threshold > 0.9
ColumnLength "colC" > 10 where "colD != Concat(colE, colF)"
```

 Kami akan memvalidasi bahwa pernyataan SparkSQL yang diberikan valid. Jika tidak valid, evaluasi aturan akan gagal dan kami akan melempar a `IllegalArgumentException` dengan format berikut: 

```
Rule <DQDL Rule> where "<invalid SparkSQL>" has provided an invalid where clause :
<SparkSQL Error>
```

 **Di mana perilaku klausa saat identifikasi catatan kesalahan tingkat baris diaktifkan** 

 Dengan AWS Glue Data Quality, Anda dapat mengidentifikasi catatan spesifik yang gagal. Saat menerapkan klausa where ke aturan yang mendukung hasil tingkat baris, kami akan memberi label pada baris yang disaring oleh klausa where sebagai. `Passed` 

 Jika Anda lebih suka memberi label secara terpisah pada baris yang difilter sebagai`SKIPPED`, Anda dapat mengatur yang berikut ini `additionalOptions` untuk pekerjaan ETL. 

```
object GlueApp {
  val datasource = glueContext.getCatalogSource(
    database="<db>",
    tableName="<table>",
    transformationContext="datasource"
  ).getDynamicFrame()

  val ruleset = """
    Rules = [
       IsComplete "att2" where "att1 = 'a'"        
    ]
  """

  val dq_results = EvaluateDataQuality.processRows(
    frame=datasource,
    ruleset=ruleset,
    additionalOptions=JsonOptions("""
        {
          "rowLevelConfiguration.filteredRowLabel":"SKIPPED"
        }
      """
    )
  )
}
```

 Sebagai contoh, lihat aturan dan kerangka data berikut: 

```
IsComplete att2 where "att1 = 'a'"
```


| id | att1 | att2 | Hasil tingkat baris (Default) | Hasil Tingkat Baris (Opsi Dilewati) | Komentar | 
| --- | --- | --- | --- | --- | --- | 
| 1 | a | f | BERLALU | BERLALU |  | 
| 2 | b | d | BERLALU | DILEWATI | Baris disaring, att1 karena tidak "a" | 
| 3 | a | null | FAILED | FAILED |  | 
| 4 | a | f | BERLALU | BERLALU |  | 
| 5 | b | null | BERLALU | DILEWATI | Baris disaring, att1 karena tidak "a" | 
| 6 | a | f | BERLALU | BERLALU |  | 

### Konstanta
<a name="dqdl-constants"></a>

 Di DQDL, Anda dapat menentukan nilai konstan dan mereferensikannya di seluruh skrip Anda. Ini membantu mencegah masalah yang terkait dengan batas ukuran kueri—misalnya, saat bekerja dengan pernyataan SQL besar yang mungkin melebihi batas yang diizinkan. Dengan menetapkan nilai-nilai ini ke Konstanta, Anda dapat menyederhanakan DQDL Anda dan menghindari mencapai batas tersebut. 

 Contoh berikut menunjukkan bagaimana mendefinisikan dan menggunakan konstanta: 

```
mySql = "select count(*) from primary"

Rules = [
    CustomSql $mySql between 0 and 100
]
```

 Dalam contoh ini, kueri SQL ditugaskan ke konstanta`mySql`, yang kemudian direferensikan dalam aturan menggunakan awalan. `$` 

### Label
<a name="dqdl-labels"></a>

 Label menyediakan cara yang efektif untuk mengatur dan menganalisis hasil kualitas data. Anda dapat menanyakan hasil berdasarkan label tertentu untuk mengidentifikasi aturan yang gagal dalam kategori tertentu, menghitung hasil aturan berdasarkan tim atau domain, dan membuat laporan terfokus untuk pemangku kepentingan yang berbeda. 

 Misalnya, Anda dapat menerapkan semua aturan yang berkaitan dengan tim keuangan dengan label `"team=finance"` dan membuat laporan khusus untuk menampilkan metrik kualitas khusus untuk tim keuangan. Anda dapat memberi label aturan prioritas tinggi `"criticality=high"` untuk memprioritaskan upaya remediasi. Label dapat ditulis sebagai bagian dari DQDL. Anda dapat menanyakan label sebagai bagian dari hasil aturan, hasil tingkat baris, dan respons API, sehingga memudahkan integrasi dengan alur kerja pemantauan dan pelaporan yang ada. 

**catatan**  
 Label hanya tersedia di AWS Glue ETL dan tidak tersedia dalam Kualitas Data berbasis Katalog Data AWS Glue. 

#### Sintaks untuk label DQDL
<a name="dqdl-labels-syntax"></a>

 DQDL mendukung label default dan khusus aturan. Label default didefinisikan pada tingkat set aturan dan secara otomatis berlaku untuk semua aturan dalam kumpulan aturan tersebut. Aturan individual juga dapat memiliki labelnya sendiri, dan karena label diimplementasikan sebagai pasangan nilai kunci, label khusus aturan dapat mengganti label default saat menggunakan kunci yang sama. 

 Contoh berikut menunjukkan cara menggunakan label default dan khusus aturan: 

```
DefaultLabels=["frequency"="monthly"]

Rules = [
    // Auto includes the default label ["frequency"="monthly"]
    ColumnValues "col" > 21,
    // Add ["foo"="bar"] to default label. Labels for this rule would be ["frequency"="monthly", "foo"="bar"]
    Rule 1 with threshold > 0.8 labels=["foo"="bar"],
    // Override default label. Labels for this rule would be ["frequency"="daily", "foo"="bar"]
    Rule 2 with threshold > 0.8 labels=["foo"="bar", "frequency"="daily"]
    // Labels must be applied to the entire composite rule (parentheses required)
    (Rule 1 AND Rule 2) labels=["foo"="bar]
]
```

##### Kendala label
<a name="dqdl-labels-constraints"></a>

 Label memiliki kendala berikut: 
+ Maksimal 10 label per aturan DQDL.
+ Label ditentukan sebagai daftar pasangan kunci-nilai.
+ Kunci label dan nilai label peka huruf besar/kecil.
+ Panjang kunci label maksimum adalah 128 karakter. Kunci label tidak boleh kosong atau nol.
+ Panjang nilai label maksimum adalah 256 karakter. Nilai label mungkin kosong atau nol.

#### Mengambil label DQDL
<a name="dqdl-labels-retrieving"></a>

 Anda dapat mengambil label DQDL dari hasil aturan, hasil tingkat baris, dan respons API. 

##### Hasil aturan
<a name="dqdl-labels-rule-outcomes"></a>

 Label DQDL selalu terlihat dalam hasil aturan. Tidak diperlukan konfigurasi tambahan untuk mengaktifkannya. 

##### Hasil tingkat baris
<a name="dqdl-labels-row-level-results"></a>

 Label DQDL dinonaktifkan secara default dalam hasil tingkat baris tetapi dapat diaktifkan menggunakan in. `AdditionalOptions` `EvaluateDataQuality` 

 Contoh berikut menunjukkan cara mengaktifkan label dalam hasil tingkat baris: 

```
val evaluateResult = EvaluateDataQuality.processRows(
    frame=AmazonS3_node1754591511068,
    ruleset=example_ruleset,
    publishingOptions=JsonOptions("""{
        "dataQualityEvaluationContext": "evaluateResult",
        "enableDataQualityCloudWatchMetrics": "true",
        "enableDataQualityResultsPublishing": "true"
    }"""),
    additionalOptions=JsonOptions("""{
        "performanceTuning.caching":"CACHE_NOTHING",
        "observations.scope":"ALL",
        "rowLevelConfiguration.ruleWithLabels":"ENABLED"
    }""")
)
```

 Saat diaktifkan, kerangka data hasil tingkat baris menyertakan label untuk setiap aturan di,, dan kolom. `DataQualityRulesPass` `DataQualityRulesFail` `DataQualityRulesSkip` 

##### Respon API
<a name="dqdl-labels-api-response"></a>

 Label DQDL selalu terlihat dalam respons API di bawah bidang baru `Labels` di objek. `RuleResults` 

 Contoh berikut menunjukkan label dalam respons API: 

```
{
    "ResultId": "dqresult-example",
    "ProfileId": "dqprofile-example",
    "Score": 0.6666666666666666,
    "RulesetName": "EvaluateDataQuality_node1754591514205",
    "EvaluationContext": "EvaluateDataQuality_node1754591514205",
    "StartedOn": "2025-08-22T19:36:10.448000+00:00",
    "CompletedOn": "2025-08-22T19:36:16.368000+00:00",
    "JobName": "anniezc-test-labels",
    "JobRunId": "jr_068f6d7a45074d9105d14e4dee09db12c3b95664b45f6ee44fa29ed7e5619ba8",
    "RuleResults": [
        {
            "Name": "Rule_0",
            "Description": "IsComplete colA",
            "EvaluationMessage": "Input data does not include column colA!",
            "Result": "FAIL",
            "EvaluatedMetrics": {},
            "EvaluatedRule": "IsComplete colA",
            "Labels": {
                "frequency": "monthly"
            }
        },
        {
            "Name": "Rule_1",
            "Description": "Rule 1 with threshold > 0.8",
            "Result": "PASS",
            "EvaluatedMetrics": {},
            "EvaluatedRule": "Rule 1 with threshold > 0.8",
            "Labels": {
                "frequency": "monthly",
                "foo": "bar"
            }
        },
        {
            "Name": "Rule_3",
            "Description": "Rule 2 with threshold > 0.8",
            "Result": "PASS",
            "EvaluatedMetrics": {},
            "EvaluatedRule": "Rule 2 with threshold > 0.8",
            "Labels": {
                "frequency": "daily",
                "foo": "bar"
            }
        }
    ]
}
```

### Aturan dinamis
<a name="dqdl-dynamic-rules"></a>

**catatan**  
Aturan Dinamis hanya didukung di AWS Glue ETL dan tidak didukung di AWS Glue Data Catalog.

 Anda sekarang dapat membuat aturan dinamis untuk membandingkan metrik saat ini yang dihasilkan oleh aturan Anda dengan nilai historisnya. Perbandingan historis ini diaktifkan dengan menggunakan `last()` operator dalam ekspresi. Misalnya, aturan `RowCount > last()` akan berhasil ketika jumlah baris dalam proses saat ini lebih besar dari jumlah baris sebelumnya terbaru untuk kumpulan data yang sama. `last()`mengambil argumen bilangan asli opsional yang menjelaskan berapa banyak metrik sebelumnya untuk dipertimbangkan; `last(k)` di mana `k >= 1` akan merujuk metrik terakhir`k`. 
+ Jika tidak ada titik data yang tersedia, `last(k)` akan mengembalikan nilai default 0.0.
+ Jika kurang dari `k` metrik yang tersedia, `last(k)` akan mengembalikan semua metrik sebelumnya.

 Untuk membentuk ekspresi yang valid gunakan`last(k)`, di mana `k > 1` memerlukan fungsi agregasi untuk mengurangi beberapa hasil historis menjadi satu nomor. Misalnya, `RowCount > avg(last(5))` akan memeriksa apakah jumlah baris kumpulan data saat ini benar-benar lebih besar dari rata-rata jumlah lima baris terakhir untuk kumpulan data yang sama. `RowCount > last(5)`akan menghasilkan kesalahan karena jumlah baris kumpulan data saat ini tidak dapat dibandingkan secara bermakna dengan daftar. 

 Fungsi agregasi yang didukung: 
+ `avg`
+ `median`
+ `max`
+ `min`
+ `sum`
+ `std`(standar deviasi)
+ `abs`(nilai absolut)
+  `index(last(k), i)`akan memungkinkan untuk memilih nilai terbaru dari yang terakhir`k`. `i` `i`diindeks nol, jadi `index(last(3), 0)` akan mengembalikan titik data terbaru dan `index(last(3), 3)` akan menghasilkan kesalahan karena hanya ada tiga titik data dan kami mencoba untuk mengindeks yang terbaru ke-4. 

 **Ekspresi sampel** 

 **ColumnCorrelation** 
+ `ColumnCorrelation "colA" "colB" < avg(last(10))`

 **DistinctValuesCount** 
+ `DistinctValuesCount "colA" between min(last(10))-1 and max(last(10))+1`

 Sebagian besar tipe aturan dengan kondisi numerik atau ambang batas mendukung aturan dinamis; lihat tabel yang disediakan, [Analisa dan Aturan](#dqdl-analyzers-table), untuk menentukan apakah aturan dinamis didukung untuk jenis aturan Anda. 

 **Tidak termasuk statistik dari aturan dinamis** 

 Terkadang, Anda perlu mengecualikan statistik data dari perhitungan aturan dinamis Anda. Katakanlah Anda melakukan pemuatan data historis dan Anda tidak ingin itu memengaruhi rata-rata Anda. Untuk melakukan ini, buka pekerjaan di AWS Glue ETL dan pilih Tab **Kualitas Data**, lalu pilih **Statistik** dan pilih statistik yang ingin Anda kecualikan. Anda akan dapat melihat grafik tren bersama dengan tabel statistik. Pilih nilai yang ingin Anda kecualikan dan pilih **Kecualikan Statistik**. Sekarang statistik yang dikecualikan tidak akan dimasukkan dalam perhitungan aturan dinamis. 

![\[Tangkapan layar menunjukkan opsi untuk mengecualikan atau menyertakan statistik dari menu tarik-turun setelah memilih statistik.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data-quality-excluding-statistics-from-dynamic-rules.png)


### Analisa
<a name="dqdl-analyzers"></a>

**catatan**  
 Analyzer tidak didukung di AWS Glue Data Catalog. 

 Aturan DQDL menggunakan fungsi yang disebut *penganalisis* untuk mengumpulkan informasi tentang data Anda. Informasi ini digunakan oleh ekspresi Boolean aturan untuk menentukan apakah aturan harus berhasil atau gagal. Misalnya, RowCount aturan `RowCount > 5 ` akan menggunakan penganalisis hitungan baris untuk menemukan jumlah baris dalam kumpulan data Anda, dan membandingkan jumlah itu dengan ekspresi `> 5` untuk memeriksa apakah ada lebih dari lima baris dalam kumpulan data saat ini. 

 Terkadang, alih-alih membuat aturan, kami sarankan untuk membuat penganalisis dan kemudian membuatnya menghasilkan statistik yang dapat digunakan untuk mendeteksi anomali. Untuk contoh seperti itu, Anda dapat membuat penganalisis. Penganalisis berbeda dari aturan dengan cara berikut. 


| Karakteristik | Analisa | Aturan | 
| --- | --- | --- | 
| Bagian dari ruleset | Ya | Ya | 
| Menghasilkan statistik | Ya | Ya | 
| Menghasilkan pengamatan | Ya | Ya | 
| Dapat mengevaluasi dan menegaskan suatu kondisi | Tidak | Ya | 
| Anda dapat mengonfigurasi tindakan seperti menghentikan pekerjaan pada kegagalan, melanjutkan pekerjaan pemrosesan | Tidak | Ya | 

 Analyzer dapat eksis secara independen tanpa aturan, sehingga Anda dapat dengan cepat mengonfigurasinya dan secara progresif membangun aturan kualitas data. 

 Beberapa jenis aturan dapat dimasukkan ke dalam `Analyzers` blok kumpulan aturan Anda untuk menjalankan aturan yang diperlukan untuk penganalisis dan mengumpulkan informasi tanpa menerapkan pemeriksaan untuk kondisi apa pun. Beberapa penganalisis tidak terkait dengan aturan dan hanya dapat dimasukkan ke dalam `Analyzers` blok. Tabel berikut menunjukkan apakah setiap item didukung sebagai aturan atau penganalisis mandiri, bersama dengan detail tambahan untuk setiap jenis aturan. 

 **Contoh Ruleset dengan Analyzer** 

 Ruleset berikut menggunakan: 
+ aturan dinamis untuk memeriksa apakah kumpulan data tumbuh di atas rata-rata trailing untuk tiga pekerjaan terakhir
+ `DistinctValuesCount`analyzer untuk mencatat jumlah nilai yang berbeda di kolom dataset `Name`
+ `ColumnLength`analyzer untuk melacak `Name` ukuran minimum dan maksimum dari waktu ke waktu

 Hasil metrik penganalisis dapat dilihat di tab Kualitas Data untuk menjalankan pekerjaan Anda. 

```
Rules = [
   RowCount > avg(last(3))
]
Analyzers = [
   DistinctValuesCount "Name",
   ColumnLength "Name"
]
```

 AWS Glue Data Quality mendukung analisa berikut. 


| Nama penganalisis | Fungsionalitas | 
| --- | --- | 
| RowCount | Menghitung jumlah baris untuk kumpulan data | 
| Completeness | Menghitung persentase kelengkapan kolom | 
| Uniqueness | Menghitung persentase keunikan kolom | 
| Mean | Menghitung rata-rata kolom numerik | 
| Sum | Menghitung jumlah kolom numerik | 
| StandardDeviation | Menghitung standar deviasi kolom numerik | 
| Entropy | Menghitung entropi kolom numerik | 
| DistinctValuesCount | Menghitung jumlah nilai yang berbeda dalam kolom | 
| UniqueValueRatio | Menghitung rasio nilai unik dalam kolom | 
| ColumnCount | Menghitung jumlah kolom dalam kumpulan data | 
| ColumnLength | Menghitung panjang kolom | 
| ColumnValues | Menghitung minimum, maksimum untuk kolom numerik. Menghitung Minimum ColumnLength dan Maksimum ColumnLength untuk kolom non-numerik | 
| ColumnCorrelation | Menghitung korelasi kolom untuk kolom yang diberikan | 
| CustomSql | Menghitung statistik yang dikembalikan oleh CustomSQL | 
| AllStatistics | Menghitung statistik berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/dqdl.html)  | 

### Komentar
<a name="dqdl-syntax-comments"></a>

Anda dapat menggunakan karakter '\$1' untuk menambahkan komentar ke dokumen DQDL Anda. Apa pun setelah karakter '\$1' dan sampai akhir baris diabaikan oleh DQDL.

```
Rules = [
    # More items should generally mean a higher price, so correlation should be positive
    ColumnCorrelation "price" "num_items" > 0
]
```

# Referensi tipe aturan DQDL
<a name="dqdl-rule-types"></a>

Bagian ini memberikan referensi untuk setiap jenis aturan yang didukung AWS Glue Data Quality.

**catatan**  
DQDL saat ini tidak mendukung data kolom bersarang atau tipe daftar.
Nilai kurung pada tabel di bawah ini akan diganti dengan informasi yang disediakan dalam argumen aturan.
Aturan biasanya memerlukan argumen tambahan untuk ekspresi.


| Jenis aturan | Deskripsi | Pendapat | Metrik yang Dilaporkan | Didukung sebagai Aturan? | Didukung sebagai Analyzer? | Mengembalikan Hasil tingkat baris? | Dukungan aturan dinamis? | Menghasilkan Pengamatan | Mendukung Sintaks Klausul Dimana? | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| AggregateMatch | Memeriksa apakah dua kumpulan data cocok dengan membandingkan metrik ringkasan seperti jumlah total penjualan. Berguna bagi lembaga keuangan untuk membandingkan jika semua data dicerna dari sistem sumber. | Satu atau lebih agregasi |  Ketika nama kolom agregasi pertama dan kedua cocok: `Column.[Column].AggregateMatch` Ketika nama kolom agregasi pertama dan kedua berbeda: `Column.[Column1,Column2].AggregateMatch`  | Ya | Tidak | Tidak | Tidak | Tidak | Tidak | 
| AllStatistics | Penganalisis mandiri untuk mengumpulkan beberapa metrik untuk kolom yang disediakan dalam kumpulan data. | Nama kolom tunggal |  Untuk kolom dari semua jenis: `Dataset.*.RowCount` `Column.[Column].Completeness` `Column.[Column].Uniqueness` Metrik tambahan untuk kolom bernilai string: `ColumnLength metrics` Metrik tambahan untuk kolom bernilai numerik: `ColumnValues metrics`  | Tidak | Ya | Tidak | Tidak | Tidak | Tidak | 
| ColumnCorrelation | Memeriksa seberapa baik dua kolom berkorelasi. | Tepat dua nama kolom | Multicolumn.[Column1,Column2].ColumnCorrelation | Ya | Ya | Tidak | Ya | Tidak | Ya | 
| ColumnCount | Memeriksa apakah ada kolom yang dijatuhkan. | Tidak ada | Dataset.\$1.ColumnCount | Ya | Ya | Tidak | Ya | Ya | Tidak | 
| ColumnDataType | Memeriksa apakah kolom sesuai dengan tipe data. | Tepat satu nama kolom | Column.[Column].ColumnDataType.Compliance | Ya | Tidak | Tidak | Ya, dalam ekspresi ambang batas tingkat baris | Tidak | Ya | 
| ColumnExists | Memeriksa apakah kolom ada dalam kumpulan data. Hal ini memungkinkan pelanggan membangun platform data layanan mandiri untuk memastikan kolom tertentu tersedia. | Tepat satu nama kolom | N/A | Ya | Tidak | Tidak | Tidak | Tidak | Tidak | 
| ColumnLength | Memeriksa apakah panjang data konsisten. | Tepat satu nama kolom |  `Column.[Column].MaximumLength` `Column.[Column].MinimumLength` Metrik tambahan saat ambang tingkat baris disediakan: `Column.[Column].ColumnValues.Compliance`  | Ya | Ya | Ya, ketika ambang batas tingkat baris disediakan | Tidak | Ya. Hanya menghasilkan pengamatan dengan menganalisis panjang Minimum dan Maksimum | Ya | 
| ColumnNamesMatchPattern | Memeriksa apakah nama kolom cocok dengan pola yang ditentukan. Berguna bagi tim tata kelola untuk menegakkan konsistensi nama kolom.  | Sebuah regex untuk nama kolom | Dataset.\$1.ColumnNamesPatternMatchRatio | Ya | Tidak | Tidak | Tidak | Tidak | Tidak | 
| ColumnValues | Memeriksa apakah data konsisten per nilai yang ditentukan. Aturan ini mendukung ekspresi reguler. | Tepat satu nama kolom |  `Column.[Column].Maximum` `Column.[Column].Minimum` Metrik tambahan saat ambang tingkat baris disediakan: `Column.[Column].ColumnValues.Compliance`  | Ya | Ya | Ya, ketika ambang batas tingkat baris disediakan | Tidak | Ya. Hanya menghasilkan pengamatan dengan menganalisis nilai Minimum dan Maksimum | Ya | 
| Kelengkapan | Memeriksa data kosong atau NULLs dalam data. | Tepat satu nama kolom | `Column.[Column].Completeness` | Ya | Ya | Ya | Ya | Ya | Ya | 
| CustomSql |  Pelanggan dapat menerapkan hampir semua jenis pemeriksaan kualitas data di SQL. |  Pernyataan SQL (Opsional) Ambang batas tingkat baris  |  `Dataset.*.CustomSQL` Metrik tambahan saat ambang tingkat baris disediakan: `Dataset.*.CustomSQL.Compliance`  | Ya | Tidak | Ya, ketika ambang batas tingkat baris disediakan | Ya | Tidak | Tidak | 
| DataFreshness | Memeriksa apakah data masih segar. | Tepat satu nama kolom | Column.[Column].DataFreshness.Compliance | Ya | Tidak | Ya | Tidak | Tidak | Ya | 
| DatasetMatch | Membandingkan dua kumpulan data dan mengidentifikasi jika mereka sinkron. |  Nama dataset referensi Pemetaan kolom (Opsional) Kolom untuk memeriksa kecocokan  | Dataset.[ReferenceDatasetAlias].DatasetMatch | Ya | Tidak | Ya | Ya | Tidak | Tidak | 
| DistinctValuesCount | Memeriksa nilai duplikat. | Tepat satu nama kolom | Column.[Column].DistinctValuesCount | Ya | Ya | Ya | Ya | Ya | Ya | 
| DetectAnomalies | Memeriksa anomali dalam metrik yang dilaporkan tipe aturan lain. | Jenis aturan | Metrik yang dilaporkan oleh argumen tipe aturan | Ya | Tidak | Tidak | Tidak | Tidak | Tidak | 
| Entropi | Memeriksa entropi data. | Tepat satu nama kolom | Column.[Column].Entropy | Ya | Ya | Tidak | Ya | Tidak | Ya | 
| IsComplete | Memeriksa apakah 100% data selesai. | Tepat satu nama kolom | Column.[Column].Completeness | Ya | Tidak | Ya | Tidak | Tidak | Ya | 
| IsPrimaryKey | Memeriksa apakah kolom adalah kunci utama (bukan NULL dan unik). | Tepat satu nama kolom |  Untuk kolom tunggal: `Column.[Column].Uniqueness` Untuk beberapa kolom: `Multicolumn.[CommaDelimitedColumns].Uniqueness`  | Ya | Tidak | Ya | Tidak | Tidak | Ya | 
| IsUnique | Memeriksa apakah 100% data unik. | Tepat satu nama kolom | Column.[Column].Uniqueness | Ya | Tidak | Ya | Tidak | Tidak | Ya | 
| Berarti | Memeriksa apakah mean cocok dengan ambang batas yang ditetapkan. | Tepat satu nama kolom | Column.[Column].Mean | Ya | Ya | Ya | Ya | Tidak | Ya | 
| ReferentialIntegrity | Memeriksa apakah dua kumpulan data memiliki integritas referensial. |  Satu atau beberapa nama kolom dari dataset Satu atau beberapa nama kolom dari dataset referensi  | Column.[ReferenceDatasetAlias].ReferentialIntegrity | Ya | Tidak | Ya | Ya | Tidak | Tidak | 
| RowCount | Memeriksa apakah jumlah catatan cocok dengan ambang batas. | Tidak ada | Dataset.\$1.RowCount | Ya | Ya | Tidak | Ya | Ya | Ya | 
| RowCountMatch | Memeriksa apakah jumlah rekaman antara dua kumpulan data cocok. | Alias dataset referensi | Dataset.[ReferenceDatasetAlias].RowCountMatch | Ya | Tidak | Tidak | Ya | Tidak | Tidak | 
| StandardDeviation | Memeriksa apakah standar deviasi cocok dengan ambang batas. | Tepat satu nama kolom | Column.[Column].StandardDeviation | Ya | Ya | Ya | Ya | Tidak | Ya | 
| SchemaMatch | Memeriksa apakah skema antara dua kumpulan data cocok. | Alias dataset referensi | Dataset.[ReferenceDatasetAlias].SchemaMatch | Ya | Tidak | Tidak | Ya | Tidak | Tidak | 
| Jumlah | Memeriksa apakah jumlah cocok dengan ambang batas yang ditetapkan. | Tepat satu nama kolom | Column.[Column].Sum | Ya | Ya | Tidak | Ya | Tidak | Ya | 
| Keunikan | Memeriksa apakah keunikan kumpulan data cocok dengan ambang batas. | Tepat satu nama kolom | Column.[Column].Uniqueness | Ya | Ya | Ya | Ya | Tidak | Ya | 
| UniqueValueRatio | Memeriksa apakah ransum nilai unik cocok dengan ambang batas. | Tepat satu nama kolom | Column.[Column].UniqueValueRatio | Ya | Ya | Ya | Ya | Tidak | Ya | 
| FileFreshness | Memeriksa apakah file di Amazon S3 masih segar. | Jalur file atau Folder dan ambang batas. |  `Dataset.*.FileFreshness.Compliance` `Dataset.*.FileCount`  | Ya | Tidak | Tidak | Tidak | Tidak | Tidak | 
| FileMatch | Memeriksa apakah isi file cocok dengan checksum atau dengan file lain. Aturan ini menggunakan checksum untuk memvalidasi jika dua file sama. | Sumber File atau jalur Folder dan file Target atau jalur folder. | Tidak ada statistik yang dihasilkan. | Ya | Tidak | Tidak | Tidak | Tidak | Tidak | 
| FileSize | Memeriksa apakah ukuran file cocok dengan kondisi tertentu. | Jalur dan ambang batas file atau folder. | `Dataset.*.FileSize.Compliance` `Dataset.*.FileCount` `Dataset.*.MaximumFileSize` `Dataset.*.MinimumFileSize`  | Ya | Tidak | Tidak | Tidak | Tidak | Tidak | 
| FileUniqueness | Memeriksa apakah file unik menggunakan checksum. | Jalur dan ambang batas file atau folder. | `Dataset.*.FileUniquenessRatio` `Dataset.*.FileCount`  | Ya | Tidak | Tidak | Tidak | Tidak | Tidak | 

**Topics**
+ [

# AggregateMatch
](dqdl-rule-types-AggregateMatch.md)
+ [

# ColumnCorrelation
](dqdl-rule-types-ColumnCorrelation.md)
+ [

# ColumnCount
](dqdl-rule-types-ColumnCount.md)
+ [

# ColumnDataType
](dqdl-rule-types-ColumnDataType.md)
+ [

# ColumnExists
](dqdl-rule-types-ColumnExists.md)
+ [

# ColumnLength
](dqdl-rule-types-ColumnLength.md)
+ [

# ColumnNamesMatchPattern
](dqdl-rule-types-ColumnNamesMatchPattern.md)
+ [

# ColumnValues
](dqdl-rule-types-ColumnValues.md)
+ [

# Kelengkapan
](dqdl-rule-types-Completeness.md)
+ [

# CustomSQL
](dqdl-rule-types-CustomSql.md)
+ [

# DataFreshness
](dqdl-rule-types-DataFreshness.md)
+ [

# DatasetMatch
](dqdl-rule-types-DatasetMatch.md)
+ [

# DistinctValuesCount
](dqdl-rule-types-DistinctValuesCount.md)
+ [

# Entropi
](dqdl-rule-types-Entropy.md)
+ [

# IsComplete
](dqdl-rule-types-IsComplete.md)
+ [

# IsPrimaryKey
](dqdl-rule-types-IsPrimaryKey.md)
+ [

# IsUnique
](dqdl-rule-types-IsUnique.md)
+ [

# Berarti
](dqdl-rule-types-Mean.md)
+ [

# ReferentialIntegrity
](dqdl-rule-types-ReferentialIntegrity.md)
+ [

# RowCount
](dqdl-rule-types-RowCount.md)
+ [

# RowCountMatch
](dqdl-rule-types-RowCountMatch.md)
+ [

# StandardDeviation
](dqdl-rule-types-StandardDeviation.md)
+ [

# Jumlah
](dqdl-rule-types-Sum.md)
+ [

# SchemaMatch
](dqdl-rule-types-SchemaMatch.md)
+ [

# Keunikan
](dqdl-rule-types-Uniqueness.md)
+ [

# UniqueValueRatio
](dqdl-rule-types-UniqueValueRatio.md)
+ [

# DetectAnomalies
](dqdl-rule-types-DetectAnomalies.md)
+ [

# FileFreshness
](dqdl-rule-types-FileFreshness.md)
+ [

# FileMatch
](dqdl-rule-types-FileMatch.md)
+ [

# FileUniqueness
](dqdl-rule-types-FileUniqueness.md)
+ [

# FileSize
](dqdl-rule-types-FileSize.md)

# AggregateMatch
<a name="dqdl-rule-types-AggregateMatch"></a>

Memeriksa rasio agregasi dua kolom terhadap ekspresi yang diberikan. Ruletype ini bekerja pada beberapa dataset. Dua agregasi kolom dievaluasi dan rasio dihasilkan dengan membagi hasil agregasi kolom pertama dengan hasil agregasi kolom kedua. Rasio diperiksa terhadap ekspresi yang disediakan untuk menghasilkan respons boolean.

**Sintaksis**

**Agregasi kolom**

```
AggregateMatch <AGG_OPERATION> (<OPTIONAL_REFERENCE_ALIAS>.<COL_NAME>)
```
+ **AGG\$1OPERATION — Operasi** yang digunakan untuk agregasi. Saat ini, `sum` dan `avg` didukung.

  **Jenis kolom yang didukung**: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek
+ **OPTIONAL\$1REFERENCE\$1ALIAS** - Parameter ini perlu disediakan jika kolom berasal dari kumpulan data referensi dan bukan kumpulan data utama. <database\$1name>Jika Anda menggunakan aturan ini di Katalog Data AWS Glue, alias referensi Anda harus mengikuti format ". <table\$1name>. <column\$1name>

  **Jenis kolom yang didukung**: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek
+ **COL\$1NAME** — Nama kolom untuk agregat.

  **Jenis kolom yang didukung**: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek

**Contoh: Rata-rata**

```
"avg(rating)"
```

**Contoh: Jumlah**

```
"sum(amount)"
```

**Contoh: Rata-rata kolom dalam dataset referensi**

```
"avg(reference.rating)"
```

**Aturan**

```
AggregateMatch <AGG_EXP_1> <AGG_EXP_2> <EXPRESSION>
```
+ **AGG\$1EXP\$11** - Agregasi kolom pertama.

  Jenis kolom yang didukung: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek

  **Jenis kolom yang didukung**: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek
+ **AGG\$1EXP\$12** - Agregasi kolom kedua.

  Jenis kolom yang didukung: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek

  **Jenis kolom yang didukung**: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh: Pencocokan Agregat menggunakan jumlah**

Contoh aturan berikut memeriksa apakah jumlah nilai dalam `amount` kolom persis sama dengan jumlah nilai dalam `total_amount` kolom.

```
AggregateMatch "sum(amount)" "sum(total_amount)" = 1.0
```

**Contoh: Pencocokan Agregat menggunakan rata-rata**

Contoh aturan berikut memeriksa apakah rata-rata nilai dalam `ratings` kolom sama dengan setidaknya 90% dari rata-rata nilai dalam `ratings` kolom dalam `reference` dataset. Dataset referensi disediakan sebagai sumber data tambahan dalam pengalaman ETL atau Katalog Data.

Di AWS Glue ETL, Anda dapat menggunakan:

```
AggregateMatch "avg(ratings)" "avg(reference.ratings)" >= 0.9
```

Dalam Katalog Data AWS Glue, Anda dapat menggunakan:

```
AggregateMatch "avg(ratings)" "avg(database_name.tablename.ratings)" >= 0.9
```

**Perilaku nol**

 `AggregateMatch`Aturan akan mengabaikan baris dengan nilai NULL dalam perhitungan metode agregasi (jumlah/mean). Contoh: 

```
+---+-----------+
|id |units      |
+---+-----------+
|100|0          | 
|101|null       |
|102|20         |
|103|null       |
|104|40         |
+---+-----------+
```

 Rata-rata kolom `units` adalah (0 \$1 20 \$1 40)/3 = 20. Baris 101 dan 103 tidak dipertimbangkan dalam perhitungan ini. 

# ColumnCorrelation
<a name="dqdl-rule-types-ColumnCorrelation"></a>

Memeriksa *korelasi* antara dua kolom terhadap ekspresi yang diberikan. AWS Glue Data Quality menggunakan koefisien korelasi Pearson untuk mengukur korelasi linier antara dua kolom. Hasilnya adalah angka antara -1 dan 1 yang mengukur kekuatan dan arah hubungan. 

**Sintaksis**

```
ColumnCorrelation <COL_1_NAME> <COL_2_NAME> <EXPRESSION>
```
+ **COL\$11\$1NAME** — Nama kolom pertama yang ingin Anda evaluasi terhadap aturan kualitas data.

  **Jenis kolom yang didukung**: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek
+ **COL\$12\$1NAME** — Nama kolom kedua yang ingin Anda evaluasi terhadap aturan kualitas data.

  **Jenis kolom yang didukung**: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh: Korelasi kolom**

Contoh aturan berikut memeriksa apakah koefisien korelasi antara kolom `height` dan `weight` memiliki korelasi positif yang kuat (nilai koefisien lebih besar dari 0,8).

```
ColumnCorrelation "height" "weight" > 0.8
```

```
ColumnCorrelation "weightinkgs" "Salary" > 0.8 where "weightinkgs > 40"
```

 **Contoh aturan dinamis** 
+ `ColumnCorrelation "colA" "colB" between min(last(10)) and max(last(10))`
+ `ColumnCorrelation "colA" "colB" < avg(last(5)) + std(last(5))`

**Perilaku nol**

 `ColumnCorrelation`Aturan akan mengabaikan baris dengan `NULL` nilai dalam perhitungan korelasi. Contoh: 

```
+---+-----------+
|id |units      |
+---+-----------+
|100|0          | 
|101|null       |
|102|20         |
|103|null       |
|104|40         |
+---+-----------+
```

 Baris 101 dan 103 akan diabaikan, dan `ColumnCorrelation` akan menjadi 1.0. 

# ColumnCount
<a name="dqdl-rule-types-ColumnCount"></a>

Memeriksa jumlah kolom dari dataset primer terhadap ekspresi yang diberikan. Dalam ekspresi, Anda dapat menentukan jumlah kolom atau rentang kolom menggunakan operator seperti `>` dan`<`.

**Sintaksis**

```
ColumnCount <EXPRESSION>
```
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh: Pemeriksaan numerik hitungan kolom**

Contoh aturan berikut memeriksa apakah jumlah kolom berada dalam rentang tertentu.

```
ColumnCount between 10 and 20
```

**Contoh aturan dinamis**
+ `ColumnCount >= avg(last(10))`
+ `ColumnCount between min(last(10))-1 and max(last(10))+1`

# ColumnDataType
<a name="dqdl-rule-types-ColumnDataType"></a>

 Memeriksa apakah nilai dalam kolom tertentu dapat dilemparkan di Apache Spark ke jenis yang disediakan. Menerima `with threshold` ekspresi untuk memeriksa subset nilai di kolom. 

 **Sintaksis** 

```
ColumnDataType <COL_NAME> = <EXPECTED_TYPE>
```
+ **COL\$1NAME** — Nama kolom yang ingin Anda evaluasi terhadap aturan kualitas data.

  Jenis kolom yang didukung: Jenis string

  **Jenis kolom yang didukung**: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek
+ **EXPECTED\$1TYPE** — Jenis nilai yang diharapkan di kolom.

  Nilai yang didukung: Boolean, Date, Timestamp, Integer, Double, Float, Long

  **Jenis kolom yang didukung**: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek
+ **EKSPRESI** - Ekspresi opsional untuk menentukan persentase nilai yang harus dari tipe yang diharapkan.

  **Jenis kolom yang didukung**: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek

 **Contoh: Kolom tipe data bilangan bulat sebagai string** 

 Contoh aturan berikut memeriksa apakah nilai-nilai dalam kolom yang diberikan, yang bertipe string, dapat dilemparkan sebagai bilangan bulat.

```
ColumnDataType "colA" = "INTEGER"
```

 **Contoh: Kolom tipe data bilangan bulat sebagai string memeriksa subset dari nilai** 

 Contoh aturan berikut memeriksa apakah lebih dari 90% nilai dalam kolom yang diberikan, yang bertipe string, dapat dilemparkan sebagai bilangan bulat. 

```
ColumnDataType "colA" = "INTEGER" with threshold > 0.9
```

# ColumnExists
<a name="dqdl-rule-types-ColumnExists"></a>

Memeriksa apakah kolom ada.

**Sintaksis**

```
ColumnExists <COL_NAME>
```
+ **COL\$1NAME** — Nama kolom yang ingin Anda evaluasi terhadap aturan kualitas data.

  **Jenis kolom yang didukung: Tipe** kolom apa pun

**Contoh: Kolom ada**

Contoh aturan berikut memeriksa apakah kolom bernama `Middle_Name` ada.

```
ColumnExists "Middle_Name"
```

# ColumnLength
<a name="dqdl-rule-types-ColumnLength"></a>

Memeriksa apakah panjang setiap baris dalam kolom sesuai dengan ekspresi yang diberikan.

**Sintaksis**

```
ColumnLength <COL_NAME><EXPRESSION>
```
+ **COL\$1NAME** — Nama kolom yang ingin Anda evaluasi terhadap aturan kualitas data.

  **Jenis kolom yang didukung**: String
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh: Panjang baris kolom**

Contoh aturan berikut memeriksa apakah nilai di setiap baris dalam kolom bernama `Postal_Code` adalah 5 karakter panjang.

```
ColumnLength "Postal_Code" = 5
ColumnLength "weightinkgs" = 2 where "weightinkgs > 10"
```

**Perilaku nol**

 `ColumnLength`Aturan memperlakukan `NULL` s sebagai 0 string panjang. Untuk satu `NULL` baris: 

```
ColumnLength "Postal_Code" > 4 # this will fail
```

```
ColumnLength "Postal_Code" < 6 # this will succeed 
```

 Contoh aturan majemuk berikut menyediakan cara untuk secara eksplisit gagal `NULL` nilai: 

```
(ColumnLength "Postal_Code" > 4) AND (ColumnValues "Postal_Code" != NULL)
```

# ColumnNamesMatchPattern
<a name="dqdl-rule-types-ColumnNamesMatchPattern"></a>

Memeriksa apakah nama semua kolom dalam kumpulan data utama cocok dengan ekspresi reguler yang diberikan.

**Sintaksis**

```
ColumnNamesMatchPattern <PATTERN>
```
+ **POLA** — Pola yang ingin Anda evaluasi terhadap aturan kualitas data.

  **Jenis kolom yang didukung**: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek

**Contoh: Pola pencocokan nama kolom**

Contoh aturan berikut memeriksa apakah semua kolom dimulai dengan awalan “aws\$1”

```
ColumnNamesMatchPattern "aws_.*"
ColumnNamesMatchPattern "aws_.*" where "weightinkgs > 10"
```

# ColumnValues
<a name="dqdl-rule-types-ColumnValues"></a>

Menjalankan ekspresi terhadap nilai-nilai dalam kolom.

**Sintaksis**

```
ColumnValues <COL_NAME> <EXPRESSION>
```
+ **COL\$1NAME** — Nama kolom yang ingin Anda evaluasi terhadap aturan kualitas data.

  **Jenis kolom yang didukung: Tipe** kolom apa pun
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh: Nilai yang diizinkan**

Contoh aturan berikut memeriksa apakah setiap nilai dalam kolom yang ditentukan berada dalam satu set nilai yang diizinkan (termasuk nol, kosong, dan string dengan hanya spasi putih).

```
ColumnValues "Country" in [ "US", "CA", "UK", NULL, EMPTY, WHITESPACES_ONLY ]
ColumnValues "gender" in ["F", "M"] where "weightinkgs < 10"
```

**Contoh: Ekspresi reguler**

Contoh aturan berikut memeriksa nilai-nilai dalam kolom terhadap ekspresi reguler.

```
ColumnValues "First_Name" matches "[a-zA-Z]*"
```

**Contoh: Nilai tanggal**

Contoh aturan berikut memeriksa nilai-nilai dalam kolom tanggal terhadap ekspresi tanggal.

```
ColumnValues "Load_Date" > (now() - 3 days)
```

**Contoh: Nilai numerik**

Contoh aturan berikut memeriksa apakah nilai kolom cocok dengan kendala numerik tertentu.

```
ColumnValues "Customer_ID" between 1 and 2000
```

**Perilaku nol**

 Untuk semua `ColumnValues` aturan (selain `!=` dan`NOT IN`), `NULL` baris akan gagal aturan. Jika aturan gagal karena nilai nol, alasan kegagalan akan menampilkan yang berikut: 

```
Value: NULL does not meet the constraint requirement!
```

 Contoh aturan majemuk berikut menyediakan cara untuk secara eksplisit mengizinkan nilai: `NULL` 

```
(ColumnValues "Age" > 21) OR (ColumnValues "Age" = NULL)
```

 ColumnValues Aturan yang dinegasikan menggunakan `not in` sintaks `!=` dan akan diteruskan untuk `NULL` baris. Contoh: 

```
ColumnValues "Age" != 21
```

```
ColumnValues "Age" not in [21, 22, 23]
```

 Contoh berikut memberikan cara untuk secara eksplisit gagal nilai `NULL` 

```
(ColumnValues "Age" != 21) AND (ColumnValues "Age" != NULL)
```

```
ColumnValues "Age" not in [21, 22, 23, NULL]
```

# Kelengkapan
<a name="dqdl-rule-types-Completeness"></a>

Memeriksa persentase nilai lengkap (non-null) dalam kolom terhadap ekspresi yang diberikan.

**Sintaksis**

```
Completeness <COL_NAME> <EXPRESSION>
```
+ **COL\$1NAME** — Nama kolom yang ingin Anda evaluasi terhadap aturan kualitas data.

  **Jenis kolom yang didukung: Tipe** kolom apa pun
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh: Persentase nilai nol**

Contoh aturan berikut memeriksa apakah lebih dari 95 persen nilai dalam kolom selesai.

```
Completeness "First_Name" > 0.95
Completeness "First_Name" > 0.95 where "weightinkgs > 10"
```

 **Contoh aturan dinamis** 
+ `Completeness "colA" between min(last(5)) - 1 and max(last(5)) + 1`
+ `Completeness "colA" <= avg(last(10))`

**Perilaku nol**

 Catatan tentang Format Data CSV: Baris kosong pada kolom CSV dapat menampilkan beberapa perilaku. 
+  Jika kolom `String` bertipe, baris kosong akan dikenali sebagai string kosong dan tidak akan gagal `Completeness` aturannya. 
+  Jika kolom adalah tipe data lain seperti`Int`, baris kosong akan dikenali sebagai `NULL` dan akan gagal `Completeness` aturan. 

# CustomSQL
<a name="dqdl-rule-types-CustomSql"></a>

Jenis aturan ini telah diperluas untuk mendukung dua kasus penggunaan:
+ Jalankan pernyataan SQL kustom terhadap dataset dan periksa nilai kembali terhadap ekspresi yang diberikan.
+ Jalankan pernyataan SQL kustom di mana Anda menentukan nama kolom dalam pernyataan SELECT Anda yang Anda bandingkan dengan beberapa kondisi untuk mendapatkan hasil tingkat baris.

**Sintaksis**

```
CustomSql <SQL_STATEMENT> <EXPRESSION>
```
+ **SQL\$1STATEMENT — Pernyataan** SQL yang mengembalikan nilai numerik tunggal, dikelilingi oleh tanda kutip ganda.
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh: Kustom SQL untuk mengambil hasil aturan keseluruhan**

Aturan contoh ini menggunakan pernyataan SQL untuk mengambil jumlah catatan untuk kumpulan data. Aturan kemudian memeriksa bahwa jumlah rekor adalah antara 10 dan 20.

```
CustomSql "select count(*) from primary" between 10 and 20
```

**Contoh: SQL khusus untuk mengambil hasil tingkat baris**

Aturan contoh ini menggunakan pernyataan SQL di mana Anda menentukan nama kolom dalam pernyataan SELECT Anda yang Anda bandingkan dengan beberapa kondisi untuk mendapatkan hasil tingkat baris. Ekspresi kondisi ambang batas mendefinisikan ambang batas berapa banyak catatan yang harus gagal agar seluruh aturan gagal. Perhatikan bahwa aturan mungkin tidak mengandung kondisi dan kata kunci bersama-sama.

```
CustomSql "select Name from primary where Age  > 18"
```

atau

```
CustomSql "select Name from primary where Age > 18" with threshold  > 3
```

**penting**  
`primary`Alias singkatan dari nama kumpulan data yang ingin Anda evaluasi. Saat Anda bekerja dengan pekerjaan ETL visual di konsol, `primary` selalu mewakili `DynamicFrame` diteruskan ke `EvaluateDataQuality.apply()` transformasi. Bila Anda menggunakan AWS Glue Data Catalog untuk menjalankan tugas kualitas data terhadap tabel, `primary` mewakili tabel.

Jika Anda berada di Katalog AWS Glue Data, Anda juga dapat menggunakan nama tabel yang sebenarnya:

```
CustomSql "select count(*) from database.table" between 10 and 20
```

Anda juga dapat bergabung dengan beberapa tabel untuk membandingkan elemen data yang berbeda:

```
CustomSql "select count(*) from database.table inner join database.table2 on id1 = id2" between 10 and 20
```

 Di AWS Glue ETL, CustomSQL dapat mengidentifikasi catatan yang gagal dalam pemeriksaan kualitas data. Agar ini berfungsi, Anda perlu mengembalikan catatan yang merupakan bagian dari tabel utama tempat Anda mengevaluasi kualitas data. Catatan yang dikembalikan sebagai bagian dari kueri dianggap berhasil dan catatan yang tidak dikembalikan dianggap gagal. Ini berfungsi dengan menggabungkan hasil kueri CustomSQL Anda dengan kumpulan data asli. Mungkin ada implikasi kinerja berdasarkan kompleksitas kueri SQL Anda. 

 Untuk melakukannya: 
+  Anda harus memilih setidaknya 1 kolom dari tabel utama Anda. 
  +  `select count(*) from primary`adalah kueri yang valid untuk aturan DQ CUSTOMSQL KESELURUHAN tetapi tidak untuk SQL Kustom Tingkat Baris. 
  +  Aturan ini akan menimbulkan kesalahan selama evaluasi: `The output from CustomSQL must contain at least one column that matches the input dataset for AWS Glue Data Quality to provide row level results. The SQL query is a valid query but the columns from the SQL result are not present in the Input Dataset. Ensure that matching columns are returned from the SQL.` 
+  Dalam kueri SQL Anda, pilih `Kunci Utama` dari tabel Anda atau pilih satu set kolom yang membentuk kunci komposit. Tidak melakukannya dapat mengakibatkan hasil yang tidak konsisten karena pencocokan baris duplikat dan kinerja yang menurun. 
+  Pilih kunci HANYA dari tabel utama Anda dan bukan dari tabel referensi Anda. 

Aturan berikut akan memastikan bahwa catatan dengan usia < 100 diidentifikasi sebagai berhasil dan catatan yang di atas ditandai sebagai gagal.

```
CustomSql "select id from primary where age < 100" 
```

Aturan CustomSQL ini akan berlalu ketika 50% dari catatan memiliki usia> 10 dan juga akan mengidentifikasi catatan yang gagal. Catatan yang dikembalikan oleh CustomSQL ini akan dianggap lulus sementara yang tidak dikembalikan akan dianggap gagal.

```
CustomSQL "select ID, CustomerID from primary where age > 10" with threshold > 0.5
```

Catatan: Aturan CustomSQL akan gagal jika Anda mengembalikan catatan yang tidak tersedia di kumpulan data. 

# DataFreshness
<a name="dqdl-rule-types-DataFreshness"></a>

Memeriksa kesegaran data dalam kolom dengan mengevaluasi perbedaan antara waktu saat ini dan nilai kolom tanggal. Anda dapat menentukan ekspresi berbasis waktu untuk jenis aturan ini untuk memastikan bahwa nilai kolom up to date.

**Sintaksis**

```
DataFreshness <COL_NAME> <EXPRESSION>
```
+ **COL\$1NAME** — Nama kolom yang ingin Anda evaluasi terhadap aturan kualitas data.

  **Jenis kolom yang didukung**: Tanggal 
+ **EKSPRESI — Ekspresi** numerik dalam jam atau hari. Anda harus menentukan satuan waktu dalam ekspresi Anda.

**Contoh: Kesegaran data**

Contoh aturan berikut memeriksa kesegaran data.

```
DataFreshness "Order_Date" <= 24 hours
DataFreshness "Order_Date" between 2 days and 5 days
```

**Perilaku nol**

 `DataFreshness`Aturan akan gagal untuk baris dengan `NULL` nilai. Jika aturan gagal karena nilai nol, alasan kegagalan akan menampilkan yang berikut: 

```
80.00 % of rows passed the threshold
```

 di mana 20% dari baris yang gagal termasuk baris dengan`NULL`. 

 Contoh aturan majemuk berikut menyediakan cara untuk secara eksplisit mengizinkan nilai: `NULL` 

```
(DataFreshness "Order_Date" <= 24 hours) OR (ColumnValues "Order_Date" = NULL)
```

**Kesegaran Data untuk objek Amazon S3**

 Terkadang Anda perlu memvalidasi kesegaran data berdasarkan waktu pembuatan file Amazon S3. Untuk melakukan ini, Anda dapat menggunakan kode berikut untuk mendapatkan stempel waktu dan menambahkannya ke kerangka data Anda, dan kemudian menerapkan pemeriksaan Kesegaran Data. 

```
df = glueContext.create_data_frame.from_catalog(database = "default", table_name = "mytable")
df = df.withColumn("file_ts", df["_metadata.file_modification_time"])

Rules = [
 DataFreshness "file_ts" < 24 hours 
]
```

# DatasetMatch
<a name="dqdl-rule-types-DatasetMatch"></a>

 Memeriksa apakah data dalam kumpulan data utama cocok dengan data dalam kumpulan data referensi. Kedua kumpulan data digabungkan menggunakan pemetaan kolom kunci yang disediakan. Pemetaan kolom tambahan dapat disediakan jika Anda ingin memeriksa kesetaraan data hanya di kolom tersebut. Perhatikan bahwa **DataSetMatch**agar berfungsi, kunci gabungan Anda harus unik dan tidak boleh NULL (harus menjadi kunci utama). Jika Anda tidak memenuhi kondisi ini, Anda akan mendapatkan pesan kesalahan, “Peta kunci yang disediakan tidak cocok untuk bingkai data yang diberikan”. Dalam kasus di mana Anda tidak dapat memiliki kunci gabungan yang unik, pertimbangkan untuk menggunakan tipe aturan lain seperti **AggregateMatch**untuk mencocokkan data ringkasan. 

**Sintaksis**

```
DatasetMatch <REFERENCE_DATASET_ALIAS> <JOIN CONDITION WITH MAPPING> <OPTIONAL_MATCH_COLUMN_MAPPINGS> <EXPRESSION>
```
+ **REFERENCE\$1DATASET\$1ALIAS — Alias** dari dataset referensi yang Anda gunakan untuk membandingkan data dari kumpulan data utama.
+ **KEY\$1COLUMN\$1MAPPINGS** - Daftar nama kolom yang dipisahkan koma yang membentuk kunci dalam kumpulan data. Jika nama kolom tidak sama di kedua kumpulan data, Anda harus memisahkannya dengan `->`
+ **OPTIONAL\$1MATCH\$1COLUMN\$1MAPPINGS** - Anda dapat menyediakan parameter ini jika Anda ingin memeriksa data yang cocok hanya di kolom tertentu. Ini menggunakan sintaks yang sama dengan pemetaan kolom kunci. Jika parameter ini tidak disediakan, kami akan mencocokkan data di semua kolom yang tersisa. Kolom non-kunci yang tersisa harus memiliki nama yang sama di kedua kumpulan data.
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh: Cocokkan set dataset menggunakan kolom ID**

Aturan contoh berikut memeriksa bahwa lebih dari 90% kumpulan data utama cocok dengan kumpulan data referensi, menggunakan kolom “ID” untuk menggabungkan dua kumpulan data. Ini membandingkan semua kolom dalam kasus ini.

```
DatasetMatch "reference" "ID" >= 0.9
```

**Contoh: Cocokkan set dataset menggunakan beberapa kolom kunci**

Dalam contoh berikut, dataset primer dan dataset referensi memiliki nama yang berbeda untuk kolom kunci. `ID_1`dan `ID_2` bersama-sama membentuk kunci komposit dalam dataset primer. `ID_ref1`dan `ID_ref2` bersama-sama membentuk kunci komposit dalam dataset referensi. Dalam skenario ini, Anda dapat menggunakan sintaks khusus untuk menyediakan nama kolom.

```
DatasetMatch "reference" "ID_1->ID_ref1,ID_2->ID_ref2" >= 0.9
```

**Contoh: Cocokkan kumpulan data set menggunakan beberapa kolom kunci dan periksa apakah kolom tertentu cocok**

Contoh ini dibangun di atas contoh sebelumnya. Kami ingin memeriksa bahwa hanya kolom yang berisi jumlah yang cocok. Kolom ini dinamai `Amount1` dalam kumpulan data utama dan `Amount2` dalam kumpulan data referensi. Anda menginginkan kecocokan yang tepat.

```
DatasetMatch "reference" "ID_1->ID_ref1,ID_2->ID_ref2" "Amount1->Amount2" >= 0.9
```

# DistinctValuesCount
<a name="dqdl-rule-types-DistinctValuesCount"></a>

Memeriksa jumlah nilai yang berbeda dalam kolom terhadap ekspresi yang diberikan.

**Sintaksis**

```
DistinctValuesCount <COL_NAME> <EXPRESSION>
```
+ **COL\$1NAME** — Nama kolom yang ingin Anda evaluasi terhadap aturan kualitas data.

  **Jenis kolom yang didukung: Tipe** kolom apa pun
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh: Jumlah nilai kolom yang berbeda**

Contoh aturan berikut memeriksa bahwa kolom bernama `State` berisi lebih dari 3 nilai yang berbeda.

```
DistinctValuesCount "State" > 3
DistinctValuesCount "Customer_ID" < 6  where "Customer_ID < 10"
```

**Contoh aturan dinamis**
+ `DistinctValuesCount "colA" between avg(last(10))-1 and avg(last(10))+1`
+ `DistinctValuesCount "colA" <= index(last(10),2) + std(last(5))`

# Entropi
<a name="dqdl-rule-types-Entropy"></a>

Memeriksa apakah nilai *entropi* kolom cocok dengan ekspresi yang diberikan. Entropi mengukur tingkat informasi yang terkandung dalam pesan. Mengingat distribusi probabilitas atas nilai dalam kolom, entropi menjelaskan berapa banyak bit yang diperlukan untuk mengidentifikasi nilai.

**Sintaksis**

```
Entropy <COL_NAME> <EXPRESSION>
```
+ **COL\$1NAME** — Nama kolom yang ingin Anda evaluasi terhadap aturan kualitas data.

  **Jenis kolom yang didukung: Tipe** kolom apa pun
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh: Entropi kolom**

Contoh aturan berikut memeriksa bahwa kolom bernama `Feedback` memiliki nilai entropi lebih besar dari satu.

```
Entropy "Star_Rating" > 1
Entropy "First_Name" > 1  where "Customer_ID < 10"
```

 **Contoh aturan dinamis** 
+ `Entropy "colA" < max(last(10))`
+ `Entropy "colA" between min(last(10)) and max(last(10))`

# IsComplete
<a name="dqdl-rule-types-IsComplete"></a>

Memeriksa apakah semua nilai dalam kolom selesai (non-null). 

**Sintaksis**

```
IsComplete <COL_NAME>
```
+ **COL\$1NAME** — Nama kolom yang ingin Anda evaluasi terhadap aturan kualitas data.

  **Jenis kolom yang didukung: Tipe** kolom apa pun

**Contoh: Nilai nol**

Contoh berikut memeriksa apakah semua nilai dalam kolom bernama `email` non-null.

```
IsComplete "email"
IsComplete "Email" where "Customer_ID between 1 and 50"
IsComplete "Customer_ID"  where "Customer_ID < 16 and Customer_ID != 12"
IsComplete "passenger_count" where "payment_type<>0"
```

**Perilaku nol**

 Catatan tentang Format Data CSV: Baris kosong pada kolom CSV dapat menampilkan beberapa perilaku. 
+  Jika kolom `String` bertipe, baris kosong akan dikenali sebagai string kosong dan tidak akan gagal `Completeness` aturannya. 
+  Jika kolom adalah tipe data lain seperti`Int`, baris kosong akan dikenali sebagai `NULL` dan akan gagal `Completeness` aturan. 

# IsPrimaryKey
<a name="dqdl-rule-types-IsPrimaryKey"></a>

Memeriksa apakah kolom berisi kunci utama. Kolom berisi kunci primer jika semua nilai dalam kolom unik dan lengkap (non-null). Anda juga dapat memeriksa kunci utama dengan beberapa kolom. 

**Sintaksis**

```
IsPrimaryKey <COL_NAME>
```
+ **COL\$1NAME** — Nama kolom yang ingin Anda evaluasi terhadap aturan kualitas data.

  **Jenis kolom yang didukung: Tipe** kolom apa pun

**Contoh: Kunci utama**

Contoh aturan berikut memeriksa apakah kolom bernama `Customer_ID` berisi kunci utama.

```
IsPrimaryKey "Customer_ID"
IsPrimaryKey "Customer_ID" where "Customer_ID < 10"
```

 **Contoh: Kunci primer dengan beberapa kolom. Salah satu contoh berikut ini valid.** 

```
IsPrimaryKey "colA" "colB"
IsPrimaryKey "colA" "colB" "colC"
IsPrimaryKey colA "colB" "colC"
```

# IsUnique
<a name="dqdl-rule-types-IsUnique"></a>

Memeriksa apakah semua nilai dalam kolom unik, dan mengembalikan nilai Boolean.

**Sintaksis**

```
IsUnique <COL_NAME>
```
+ **COL\$1NAME** — Nama kolom yang ingin Anda evaluasi terhadap aturan kualitas data.

  **Jenis kolom yang didukung: Tipe** kolom apa pun

**Contoh**

Contoh aturan berikut memeriksa apakah semua nilai dalam kolom bernama `email` unik.

```
IsUnique "email"
IsUnique "Customer_ID" where "Customer_ID < 10"]
```

Contoh aturan berikut memeriksa beberapa kolom. 

```
IsUnique "vendorid" "tpep_pickup_datetime"
```

# Berarti
<a name="dqdl-rule-types-Mean"></a>

Memeriksa apakah mean (rata-rata) dari semua nilai dalam kolom cocok dengan ekspresi yang diberikan.

**Sintaksis**

```
Mean <COL_NAME> <EXPRESSION>
```
+ **COL\$1NAME** — Nama kolom yang ingin Anda evaluasi terhadap aturan kualitas data.

  **Jenis kolom yang didukung**: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh: Nilai rata-rata**

Contoh aturan berikut memeriksa apakah rata-rata semua nilai dalam kolom melebihi ambang batas.

```
Mean "Star_Rating" > 3
Mean "Salary" < 6200 where "Customer_ID < 10"
```

 **Contoh aturan dinamis** 
+ `Mean "colA" > avg(last(10)) + std(last(2))`
+ `Mean "colA" between min(last(5)) - 1 and max(last(5)) + 1`

**Perilaku nol**

 `Mean`Aturan akan mengabaikan baris dengan `NULL` nilai dalam perhitungan mean. Contoh: 

```
+---+-----------+
|id |units      |
+---+-----------+
|100|0          |
|101|null       |
|102|20         |
|103|null       |
|104|40         |
+---+-----------+
```

 Rata-rata kolom `units` adalah (0 \$1 20 \$1 40)/3 = 20. Baris 101 dan 103 tidak dipertimbangkan dalam perhitungan ini. 

# ReferentialIntegrity
<a name="dqdl-rule-types-ReferentialIntegrity"></a>

Memeriksa sejauh mana nilai dari satu set kolom dalam dataset primer adalah bagian dari nilai-nilai dari satu set kolom dalam dataset referensi.

**Sintaksis**

```
ReferentialIntegrity <PRIMARY_COLS> <REFERENCE_DATASET_COLS> <EXPRESSION>
```
+ **PRIMARY\$1COLS** — Daftar nama kolom yang dipisahkan koma dalam kumpulan data utama.

  **Jenis kolom yang didukung**: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek
+ **REFERENCE\$1DATASET\$1COLS** — Parameter ini berisi dua bagian yang dipisahkan oleh titik. Bagian pertama adalah alias dari dataset referensi. Bagian kedua adalah daftar nama kolom yang dipisahkan koma dalam kumpulan data referensi yang terlampir dalam tanda kurung gigi.

  **Jenis kolom yang didukung**: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh: Periksa integritas referensial kolom kode pos**

Contoh aturan berikut memeriksa bahwa lebih dari 90% dari nilai-nilai dalam `zipcode` kolom dalam dataset utama, hadir di `zipcode` kolom dalam `reference` dataset.

```
ReferentialIntegrity "zipcode" "reference.zipcode" >= 0.9
```

**Contoh: Periksa integritas referensial kolom kota dan negara bagian**

Dalam contoh berikut, kolom yang berisi informasi kota dan negara bagian ada di kumpulan data utama dan kumpulan data referensi. Nama-nama kolom berbeda di kedua kumpulan data. Aturan memeriksa apakah himpunan nilai kolom dalam dataset primer persis sama dengan himpunan nilai kolom dalam dataset referensi.

```
ReferentialIntegrity "city,state" "reference.{ref_city,ref_state}" = 1.0
```

 **Contoh aturan dinamis** 
+ `ReferentialIntegrity "city,state" "reference.{ref_city,ref_state}" > avg(last(10))`
+ `ReferentialIntegrity "city,state" "reference.{ref_city,ref_state}" between min(last(10)) - 1 and max(last(10)) + 1`

# RowCount
<a name="dqdl-rule-types-RowCount"></a>

Memeriksa jumlah baris dataset terhadap ekspresi yang diberikan. Dalam ekspresi, Anda dapat menentukan jumlah baris atau rentang baris menggunakan operator seperti `>` dan`<`.

**Sintaksis**

```
RowCount <EXPRESSION>
```
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh: Cek numerik hitungan baris**

Contoh aturan berikut memeriksa apakah jumlah baris berada dalam rentang tertentu.

```
RowCount between 10 and 100
RowCount between 1 and 50 where "Customer_ID < 10"
```

 **Contoh aturan dinamis** 

```
RowCount > avg(last(10)) *0.8
```

# RowCountMatch
<a name="dqdl-rule-types-RowCountMatch"></a>

Memeriksa rasio jumlah baris dari kumpulan data utama dan jumlah baris dari kumpulan data referensi terhadap ekspresi yang diberikan.

**Sintaksis**

```
RowCountMatch <REFERENCE_DATASET_ALIAS> <EXPRESSION>
```
+ **REFERENCE\$1DATASET\$1ALIAS — Alias** dari dataset referensi yang digunakan untuk membandingkan jumlah baris.

  **Jenis kolom yang didukung**: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh: Pemeriksaan jumlah baris terhadap kumpulan data referensi**

Contoh aturan berikut memeriksa apakah jumlah baris dari dataset primer setidaknya 90% dari jumlah baris dari dataset referensi.

```
RowCountMatch "reference" >= 0.9
```

# StandardDeviation
<a name="dqdl-rule-types-StandardDeviation"></a>

Memeriksa standar deviasi dari semua nilai dalam kolom terhadap ekspresi yang diberikan.

**Sintaksis**

```
StandardDeviation <COL_NAME> <EXPRESSION>
```
+ **COL\$1NAME** — Nama kolom yang ingin Anda evaluasi terhadap aturan kualitas data.

  **Jenis kolom yang didukung**: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh: Standar deviasi**

Contoh aturan berikut memeriksa apakah standar deviasi nilai dalam kolom bernama `colA` kurang dari nilai yang ditentukan.

```
StandardDeviation "Star_Rating" < 1.5
StandardDeviation "Salary" < 3500 where "Customer_ID < 10"
```

 **Contoh aturan dinamis** 
+ `StandardDeviation "colA" > avg(last(10) + 0.1`
+ `StandardDeviation "colA" between min(last(10)) - 1 and max(last(10)) + 1`

**Perilaku nol**

 `StandardDeviation`Aturan akan mengabaikan baris dengan `NULL` nilai dalam perhitungan standar deviasi. Contoh: 

```
+---+-----------+-----------+
|id |units1     |units2     |
+---+-----------+-----------+
|100|0          |0          |
|101|null       |0          |
|102|20         |20         |
|103|null       |0          |
|104|40         |40         |
+---+-----------+-----------+
```

 Standar deviasi kolom tidak `units1` akan mempertimbangkan baris 101 dan 103 dan hasilnya menjadi 16,33. Standar deviasi untuk kolom `units2` akan menghasilkan 16. 

# Jumlah
<a name="dqdl-rule-types-Sum"></a>

Memeriksa jumlah semua nilai dalam kolom terhadap ekspresi yang diberikan.

**Sintaksis**

```
Sum <COL_NAME> <EXPRESSION>
```
+ **COL\$1NAME** — Nama kolom yang ingin Anda evaluasi terhadap aturan kualitas data.

  **Jenis kolom yang didukung**: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh: Jumlah**

Contoh aturan berikut memeriksa apakah jumlah semua nilai dalam kolom melebihi ambang batas yang diberikan.

```
Sum "transaction_total" > 500000
Sum "Salary" < 55600 where "Customer_ID < 10"
```

 **Contoh aturan dinamis** 
+ `Sum "ColA" > avg(last(10))`
+ `Sum "colA" between min(last(10)) - 1 and max(last(10)) + 1`

**Perilaku nol**

 `Sum`Aturan akan mengabaikan baris dengan `NULL` nilai dalam perhitungan jumlah. Contoh: 

```
+---+-----------+
|id |units      |
+---+-----------+
|100|0          |
|101|null       |
|102|20         |
|103|null       |
|104|40         |
+---+-----------+
```

 Jumlah kolom tidak `units` akan mempertimbangkan baris 101 dan 103 dan hasilnya menjadi (0 \$1 20 \$1 40) = 60. 

# SchemaMatch
<a name="dqdl-rule-types-SchemaMatch"></a>

Memeriksa apakah skema kumpulan data utama cocok dengan skema kumpulan data referensi. Pemeriksaan skema dilakukan kolom demi kolom. Skema dua kolom cocok jika nama identik dan jenisnya identik. Urutan kolom tidak masalah.

**Sintaksis**

```
SchemaMatch <REFERENCE_DATASET_ALIAS> <EXPRESSION>
```
+ **REFERENCE\$1DATASET\$1ALIAS — Alias** dari dataset referensi yang digunakan untuk membandingkan skema.

  **Jenis kolom yang didukung**: Byte, Desimal, Ganda, Float, Integer, Panjang, Pendek
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh: SchemaMatch**

Contoh aturan berikut memeriksa apakah skema dataset primer sama persis dengan skema dataset referensi.

```
SchemaMatch "reference" = 1.0
```

# Keunikan
<a name="dqdl-rule-types-Uniqueness"></a>

Memeriksa persentase nilai unik dalam kolom terhadap ekspresi yang diberikan. Nilai unik terjadi tepat sekali.

**Sintaksis**

```
Uniqueness <COL_NAME> <EXPRESSION>
```
+ **COL\$1NAME** — Nama kolom yang ingin Anda evaluasi terhadap aturan kualitas data.

  **Jenis kolom yang didukung: Tipe** kolom apa pun
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh**

Contoh aturan berikut memeriksa apakah persentase nilai unik dalam kolom cocok dengan kriteria numerik tertentu.

```
Uniqueness "email" = 1.0
Uniqueness "Customer_ID" != 1.0 where "Customer_ID < 10"
```

Contoh aturan berikut memeriksa beberapa kolom. 

```
Uniqueness "vendorid" "tpep_pickup_datetime" = 1
```

 **Contoh aturan dinamis** 
+ `Uniqueness "colA" between min(last(10)) and max(last(10))`
+ `Uniqueness "colA" >= avg(last(10))`

# UniqueValueRatio
<a name="dqdl-rule-types-UniqueValueRatio"></a>

Memeriksa *rasio nilai unik* kolom terhadap ekspresi yang diberikan. Rasio nilai unik adalah pecahan dari nilai unik dibagi dengan jumlah semua nilai yang berbeda dalam kolom. Nilai unik terjadi tepat satu kali, sedangkan nilai yang berbeda terjadi *setidaknya* sekali. 

Misalnya, himpunan `[a, a, b]` berisi satu nilai unik (`b`) dan dua nilai berbeda (`a`dan`b`). Jadi rasio nilai unik dari himpunan adalah ½ = 0,5.

**Sintaksis**

```
UniqueValueRatio <COL_NAME> <EXPRESSION>
```
+ **COL\$1NAME** — Nama kolom yang ingin Anda evaluasi terhadap aturan kualitas data.

  **Jenis kolom yang didukung: Tipe** kolom apa pun
+ EXPRESSION — **Ekspresi** yang dijalankan terhadap respons tipe aturan untuk menghasilkan nilai Boolean. Untuk informasi selengkapnya, lihat [Ekspresi](dqdl.md#dqdl-syntax-rule-expressions).

**Contoh: Rasio nilai unik**

Contoh ini memeriksa rasio nilai unik kolom terhadap rentang nilai.

```
UniqueValueRatio "test_score" between 0 and 0.5
UniqueValueRatio "Customer_ID" between 0 and 0.9 where "Customer_ID < 10"
```

 **Contoh aturan dinamis** 
+ `UniqueValueRatio "colA" > avg(last(10))`
+ `UniqueValueRatio "colA" <= index(last(10),2) + std(last(5))`

# DetectAnomalies
<a name="dqdl-rule-types-DetectAnomalies"></a>

 Mendeteksi anomali untuk aturan kualitas data tertentu. Setiap eksekusi DetectAnomalies aturan menghasilkan penghematan nilai yang dievaluasi untuk aturan yang diberikan. Ketika ada cukup data yang dikumpulkan, algoritma deteksi anomali mengambil semua data historis untuk aturan yang diberikan dan menjalankan deteksi anomali. DetectAnomalies aturan gagal ketika anomali terdeteksi. Info lebih lanjut tentang anomali apa yang terdeteksi dapat diperoleh dari Observasi. 

**Sintaksis**

```
       DetectAnomalies <RULE_NAME> <RULE_PARAMETERS>
```

 `RULE_NAME`— Nama aturan yang ingin Anda evaluasi dan deteksi anomali. Aturan yang didukung: 
+ "RowCount"
+ “Kelengkapan”
+ “Keunikan”
+ “Berarti”
+ “Jumlah”
+ "StandardDeviation"
+ “Entropi”
+ "DistinctValuesCount"
+ "UniqueValueRatio"
+ "ColumnLength"
+ "ColumnValues"
+ "ColumnCorrelation"
+ “CustomSQL”
+ "ColumnCount"

 `RULE_PARAMETERS`— beberapa aturan memerlukan parameter tambahan untuk dijalankan. Lihat dokumentasi aturan yang diberikan untuk melihat parameter yang diperlukan. 

**Contoh: Anomali untuk RowCount**

Misalnya, jika kami ingin mendeteksi RowCount anomali, kami berikan RowCount sebagai nama aturan. 

```
DetectAnomalies "RowCount"
```

**Contoh: Anomali untuk ColumnLength**

Misalnya, jika kita ingin mendeteksi ColumnLength anomali, kita berikan ColumnLength sebagai nama aturan dan nama kolom. 

```
DetectAnomalies "ColumnLength" "id"
```

# FileFreshness
<a name="dqdl-rule-types-FileFreshness"></a>

 FileFreshness memastikan file data Anda segar berdasarkan kondisi yang Anda berikan. Ini menggunakan waktu modifikasi terakhir file Anda untuk memastikan bahwa file data atau seluruh folder. up-to-date 

 Aturan ini mengumpulkan dua metrik: 
+ FileFreshness kepatuhan berdasarkan aturan yang Anda atur
+ Jumlah file yang dipindai oleh aturan

```
{"Dataset.*.FileFreshness.Compliance":1,"Dataset.*.FileCount":1} 
```

 Deteksi anomali tidak mempertimbangkan metrik ini. 

 **Memeriksa kesegaran file** 

 Aturan berikut memastikan bahwa tiket.parket dibuat dalam 24 jam terakhir. 

```
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/tickets.parquet" > (now() - 24 hours)
```

 **Memeriksa kesegaran folder** 

 Aturan berikut berlalu jika semua file dalam folder dibuat atau dimodifikasi dalam 24 jam terakhir. 

```
FileFreshness "s3://bucket/" >= (now() -1 days)
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" >= (now() - 24 hours)
```

 **Memeriksa kesegaran folder atau file dengan ambang batas** 

 Aturan berikut berlalu jika 10% dari file dalam folder “tiket “dibuat atau dimodifikasi dalam 10 hari terakhir. 

```
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" < (now() - 10 days) with threshold > 0.1
```

 **Memeriksa file atau folder dengan tanggal tertentu** 

 Anda dapat memeriksa kesegaran file untuk hari-hari tertentu. 

```
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" > "2020-01-01"
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" between "2023-01-01" and "2024-01-01"
```

 **Memeriksa file atau folder dengan waktu** 

 Anda dapat menggunakan FileFreshness untuk memastikan bahwa file telah tiba berdasarkan waktu-waktu tertentu. 

```
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" between now() and (now() - 45 minutes)
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" between "9:30 AM" and "9:30 PM"
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" > (now() - 10 minutes)
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" > now()
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" between (now() - 2 hours) and (now() + 15 minutes)
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" between (now() - 3 days) and (now() + 15 minutes)
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" between "2001-02-07" and (now() + 15 minutes)
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" > "21:45""
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" > "2024-01-01"
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" between "02:30" and "04:30"
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" between "9:30 AM" and "22:15"
```

 Pertimbangan utama: 
+  FileFreshness dapat mengevaluasi file menggunakan unit hari, jam, dan menit 
+  Untuk waktu, ini mendukung AM/PM dan 24 jam 
+  Waktu dihitung dalam UTC kecuali penggantian ditentukan 
+  Tanggal dihitung dalam UTC pada waktu 00:00 

 FileFreshness yang merupakan karya berbasis waktu sebagai berikut: 

```
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" > "21:45"
```
+  Pertama, waktu “21:45" digabungkan dengan tanggal hari ini dalam format UTC untuk membuat bidang tanggal-waktu 
+  Selanjutnya, tanggal-waktu dikonversi ke zona waktu yang telah Anda tentukan 
+  Akhirnya, aturan dievaluasi 

 **Tag Aturan Berbasis File Opsional:** 

 Tag memungkinkan Anda mengontrol perilaku aturan. 

 **RecentFiles** 

 Tag ini membatasi jumlah file yang diproses dengan menyimpan file terbaru terlebih dahulu. 

```
FileFreshness "s3://amzn-s3-demo-bucket/" between (now() - 100 minutes) and (now() + 10 minutes) with recentFiles = 1
```

 **UriRegex** 

**catatan**  
 `uriRegex`Tag tersedia di AWS Glue 5.0 dan yang lebih baru. 

 Tag ini memfilter file dengan menerapkan pola regex ke jalur file. Hanya file yang jalurnya cocok dengan pola yang diproses. Anda juga dapat menggunakan lookahead negatif untuk mengecualikan file yang cocok dengan pola. 

```
# Match only files with a .csv extension
FileFreshness "s3://amzn-s3-demo-bucket/" > (now() - 24 hours) with uriRegex = "\.csv$"
# Match Parquet files that contain "orders_" in the path
FileFreshness "s3://amzn-s3-demo-bucket/" > (now() - 24 hours) with uriRegex = ".*orders_.*\.parquet"
# Exclude files ending in .tmp using a negative lookahead
FileFreshness "s3://amzn-s3-demo-bucket/" > (now() - 24 hours) with uriRegex = "(?!.*\.tmp$).*"
```

 **FilterOrder** 

**catatan**  
 `filterOrder`Tag tersedia di AWS Glue 5.0 dan yang lebih baru. 

 Bila Anda menggunakan beberapa tag filter seperti `recentFiles` dan `uriRegex` bersama-sama, `filterOrder` tag mengontrol urutan penerapannya. Urutan default adalah yang `recentFiles` pertama, lalu`uriRegex`. 

```
FileFreshness "s3://amzn-s3-demo-bucket/" > (now() - 24 hours) with recentFiles = 1 with uriRegex = "inventory_" with filterOrder = ["uriRegex","recentFiles"]
```

 Dalam contoh di atas, `uriRegex` filter diterapkan terlebih dahulu untuk memilih hanya file yang cocok dengan “inventaris\$1”, dan kemudian `recentFiles = 1` mengambil file terbaru dari set yang difilter itu. Tanpa`filterOrder`, perilaku default akan mengambil satu file terbaru terlebih dahulu dan kemudian menerapkan regex, yang dapat mengakibatkan tidak ada file yang cocok jika file terbaru tidak cocok dengan polanya. 

**catatan**  
 Semua nilai dalam `filterOrder` daftar harus mereferensikan tag filter lain (`recentFiles`atau`uriRegex`) yang juga ada pada aturan yang sama. Tag non-filter seperti `timeZone` atau `failFast` tidak valid di`filterOrder`. 

 **FailFast** 

 Saat disetel ke`"true"`, aturan segera mengembalikan kegagalan pada file pertama yang gagal dalam kondisi kesegaran, alih-alih mengevaluasi semua file dan menghitung rasio kepatuhan. 

```
FileFreshness "s3://amzn-s3-demo-bucket/" > (now() - 24 hours) with failFast = "true"
```

 **Zona Waktu** 

 Penggantian zona waktu yang diterima, lihat Zona Waktu yang [Diizinkan untuk zona waktu](https://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html) yang didukung. 

```
FileFreshness "s3://path/" > "21:45" with timeZone = "America/New_York"
```

```
FileFreshness "s3://path/" > "21:45" with timeZone = "America/Chicago"
```

```
FileFreshness "s3://path/" > "21:45" with timeZone = "Europe/Paris"
```

```
FileFreshness "s3://path/" > "21:45" with timeZone = "Asia/Shanghai"
```

```
FileFreshness "s3://path/" > "21:45" with timeZone = "Australia/Darwin"
```

 **Menyimpulkan nama file langsung dari bingkai data** 

 Anda tidak selalu harus menyediakan jalur file. Misalnya, ketika Anda menulis aturan di Katalog Data AWS Glue, mungkin sulit untuk menemukan folder mana yang digunakan tabel katalog. AWS Glue Data Quality dapat menemukan folder atau file tertentu yang digunakan untuk mengisi kerangka data Anda dan dapat mendeteksi apakah masih segar. 

**catatan**  
 Fitur ini hanya akan berfungsi ketika file berhasil dibaca ke dalam DynamicFrame atau DataFrame. 

```
FileFreshness > (now() - 24 hours)
```

 Aturan ini akan menemukan jalur folder atau file yang digunakan untuk mengisi frame dinamis atau bingkai data. Ini berfungsi untuk jalur Amazon S3 atau tabel Katalog Data AWS Glue berbasis Amazon S3. Ada beberapa pertimbangan: 

1.  Di AWS Glue ETL, Anda harus memiliki **EvaluateDataQuality**Transform segera setelah transformasi Amazon S3 atau AWS Glue Data Catalog.   
![\[Tangkapan layar menunjukkan node Evaluasi Kualitas Data yang terhubung ke node Amazon S3.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data-quality-file-freshness.png)

1.  Aturan ini tidak akan berfungsi di AWS Glue Interactive Sessions. 

 Jika Anda mencoba ini di kedua kasus, atau ketika AWS Glue tidak dapat menemukan file, AWS Glue akan memunculkan kesalahan berikut: `“Unable to parse file path from DataFrame”` 

# FileMatch
<a name="dqdl-rule-types-FileMatch"></a>

 FileMatch Aturan ini memungkinkan Anda membandingkan file dengan file atau checksum lain. Ini dapat berguna dalam beberapa skenario: 

1.  Memvalidasi file yang diterima dari sumber eksternal: Anda dapat menggunakan FileMatch untuk memastikan bahwa Anda telah menerima file yang benar dari sumber eksternal dengan membandingkan dengan checksum. Ini membantu memvalidasi integritas data yang Anda konsumsi. 

1.  Membandingkan data dalam dua folder yang berbeda: FileMatch dapat digunakan untuk membandingkan file antara dua folder. 

 Aturan ini mengumpulkan satu metrik: jumlah file yang dipindai oleh aturan. 

```
{"Dataset.*.FileCount":1}
```

 **Validasi file dengan checksum:** 

 FileMatch menerima file dan set checksum untuk memastikan bahwa setidaknya satu checksum cocok dengan file. 

```
FileMatch "s3://amzn-s3-demo-bucket/file.json" in ["3ee0d8617ac041793154713e5ef8f319"] with hashAlgorithm = "MD5"
FileMatch "s3://amzn-s3-demo-bucket/file.json" in ["3ee0d8617ac041793154713e5ef8f319"] with hashAlgorithm = "SHA-1"
FileMatch "s3://amzn-s3-demo-bucket/file.json" in ["3ee0d8617ac041793154713e5ef8f319"] with hashAlgorithm = "SHA-256"
FileMatch "s3://amzn-s3-demo-bucket/file.json" in ["3ee0d8617ac041793154713e5ef8f319"]
```

 Algoritma standar berikut didukung: 
+ MD5
+ SHA-1
+ SHA-256

 Jika Anda tidak menyediakan algoritma, defaultnya adalah SHA-256. 

 **Validasi semua file dalam folder dengan set checksum:** 

```
FileMatch "s3://amzn-s3-demo-bucket /" in ["3ee0d8617ac041793154713e5ef8f319", "7e8617ac041793154713e5ef8f319"] with hashAlgorithm = "MD5"
FileMatch "s3://amzn-s3-demo-bucket /internal-folder/" in ["3ee0d8617ac041793154713e5ef8f319", "7e8617ac041793154713e5ef8f319"]
```

 **Bandingkan file di folder yang berbeda** 

```
# Compare all files across two buckets
FileMatch "s3://original_bucket/" "s3://archive_bucket/"
# Compare files within specific subfolders
FileMatch "s3://original_bucket/internal-folder/" "s3://original_bucket/other-folder/"
# Compare only .json files across two folders
FileMatch "s3://original_bucket/" "s3://archive_bucket/" with uriRegex = "\.json$"
# Compare only the 5 most recent .csv files
FileMatch "s3://original_bucket/" "s3://archive_bucket/" with recentFiles = 5 with uriRegex = "\.csv$" with filterOrder = ["uriRegex","recentFiles"]
```

 FileMatch akan memeriksa isi file `original_bucket` dan memastikan mereka cocok dengan apa yang ada di dalamnya`archive_bucket`. Aturan akan gagal jika mereka tidak benar-benar cocok. Itu juga dapat memeriksa isi folder internal atau file individual. 

 FileMatch juga dapat memeriksa file individual terhadap satu sama lain. 

```
FileMatch "s3://amzn-s3-demo-bucket /file_old.json" "s3://amzn-s3-demo-bucket /file_new.json"
```

 **Menyimpulkan nama file langsung dari bingkai data** 

 Anda tidak selalu harus menyediakan jalur file. Misalnya, saat Anda membuat aturan di Katalog Data AWS Glue (didukung oleh Amazon S3), mungkin sulit untuk menemukan folder mana yang digunakan tabel katalog. AWS Glue Data Quality dapat menemukan folder atau file tertentu yang digunakan untuk mengisi bingkai data Anda. 

**catatan**  
 Fitur ini hanya akan berfungsi ketika file berhasil dibaca ke dalam DynamicFrame atau DataFrame. 

```
FileMatch in ["3ee0d8617ac041793154713e5ef8f319"] with hashAlgorithm = "MD5"
FileMatch in ["3ee0d8617ac041793154713e5ef8f319"] with hashAlgorithm = "SHA-1"
FileMatch in ["3ee0d8617ac041793154713e5ef8f319"] with hashAlgorithm = "SHA-256"
FileMatch in ["3ee0d8617ac041793154713e5ef8f319"]
```

 Jika checksum yang disediakan berbeda dari yang dihitung, FileMatch akan mengingatkan Anda akan perbedaannya. 

![\[Tangkapan layar menunjukkan aturan dengan status DQ dari Aturan gagal. FileMatch menjelaskan kegagalan.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data-quality-file-match.png)


 **Tag Aturan Berbasis File Opsional:** 

 Tag memungkinkan Anda untuk mengontrol perilaku aturan. 

 **RecentFiles** 

 Tag ini membatasi jumlah file yang diproses dengan menyimpan file terbaru terlebih dahulu. 

```
FileMatch "s3://bucket/" in ["3ee0d8617ac04179sam4713e5ef8f319"] with recentFiles = 1
```

 **UriRegex** 

**catatan**  
 `uriRegex`Tag tersedia di AWS Glue 5.0 dan yang lebih baru. 

 Tag ini memfilter file dengan menerapkan pola regex ke jalur file. Hanya file yang jalurnya cocok dengan pola yang diproses. Anda juga dapat menggunakan lookahead negatif untuk mengecualikan file yang cocok dengan pola. 

```
# Match only files with a .json extension
FileMatch "s3://bucket/" in ["3ee0d8617ac04179sam4713e5ef8f319"] with uriRegex = "\.json$"
# Exclude files ending in .tmp using a negative lookahead
FileMatch "s3://bucket/" in ["3ee0d8617ac04179sam4713e5ef8f319"] with uriRegex = "(?!.*\.tmp$).*"
```

 **FilterOrder** 

**catatan**  
 `filterOrder`Tag tersedia di AWS Glue 5.0 dan yang lebih baru. 

 Bila Anda menggunakan beberapa tag filter seperti `recentFiles` dan `uriRegex` bersama-sama, `filterOrder` tag mengontrol urutan penerapannya. Urutan default adalah yang `recentFiles` pertama, lalu`uriRegex`. 

```
FileMatch "s3://bucket/" in ["3ee0d8617ac04179sam4713e5ef8f319"] with recentFiles = 1 with uriRegex = "\.json$" with filterOrder = ["uriRegex","recentFiles"]
```

 **matchFileName** 

 Tag ini memastikan bahwa file tidak memiliki nama duplikat. Perilaku default adalah false. 

```
FileMatch "s3://amzn-s3-demo-bucket/file.json" in ["3ee0d8617ac04179sam4713e5ef8f319"] with matchFileName = "true"
```

 Ada beberapa pertimbangan: 

1.  Di AWS Glue ETL, Anda harus memiliki **EvaluateDataQuality**Transform segera setelah transformasi Amazon S3 atau AWS Glue Data Catalog.   
![\[Tangkapan layar menunjukkan aturan dengan status DQ dari Aturan gagal. FileMatch menjelaskan kegagalan.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data-quality-file-match-transform.png)

1.  Aturan ini tidak akan berfungsi di AWS Glue Interactive Sessions. 

# FileUniqueness
<a name="dqdl-rule-types-FileUniqueness"></a>

 Keunikan File memungkinkan Anda untuk memastikan bahwa tidak ada file duplikat dalam data yang Anda terima dari produsen data Anda. 

 Ini mengumpulkan statistik data berikut: 

1.  Jumlah file yang dipindai oleh aturan 

1.  Rasio Keunikan file 

```
Dataset.*.FileUniquenessRatio: 1.00, Dataset.*.FileCount: 8.00
```

 **Temukan file duplikat dalam folder:** 

```
FileUniqueness "s3://bucket/" > 0.5
FileUniqueness "s3://bucket/folder/" = 1
```

 **Menyimpulkan nama folder langsung dari bingkai data untuk mendeteksi duplikat:** 

 Anda tidak selalu harus menyediakan jalur file. Misalnya, ketika Anda menulis aturan di Katalog Data AWS Glue, mungkin sulit untuk menemukan folder mana yang digunakan tabel katalog. AWS Glue Data Quality dapat menemukan folder atau file tertentu yang digunakan untuk mengisi bingkai data Anda. 

**catatan**  
 Saat menggunakan inferensi, aturan berbasis file hanya dapat mendeteksi file yang berhasil dibaca ke dalam atau. DynamicFrame DataFrame 

```
FileUniqueness > 0.5
```

 **Tag Aturan Berbasis File Opsional:** 

 Tag memungkinkan Anda untuk mengontrol perilaku aturan. 

 **RecentFiles** 

 Tag ini membatasi jumlah file yang diproses dengan menyimpan file terbaru terlebih dahulu. 

```
FileUniqueness "s3://amzn-s3-demo-bucket/" > 0.5 with recentFiles = 1
```

 **UriRegex** 

**catatan**  
 `uriRegex`Tag tersedia di AWS Glue 5.0 dan yang lebih baru. 

 Tag ini memfilter file dengan menerapkan pola regex ke jalur file. Hanya file yang jalurnya cocok dengan pola yang diproses. Anda juga dapat menggunakan lookahead negatif untuk mengecualikan file yang cocok dengan pola. 

```
# Match only files with a .csv extension
FileUniqueness "s3://bucket/" > 0.5 with uriRegex = "\.csv$"
# Exclude files ending in .tmp using a negative lookahead
FileUniqueness "s3://bucket/" > 0.5 with uriRegex = "(?!.*\.tmp$).*"
```

 **FilterOrder** 

**catatan**  
 `filterOrder`Tag tersedia di AWS Glue 5.0 dan yang lebih baru. 

 Bila Anda menggunakan beberapa tag filter seperti `recentFiles` dan `uriRegex` bersama-sama, `filterOrder` tag mengontrol urutan penerapannya. Urutan default adalah yang `recentFiles` pertama, lalu`uriRegex`. 

```
FileUniqueness "s3://bucket/" > 0.5 with recentFiles = 5 with uriRegex = "\.csv$" with filterOrder = ["uriRegex","recentFiles"]
```

 **matchFileName** 

 Tag ini memastikan bahwa file tidak memiliki nama duplikat. Perilaku default adalah false. 

```
FileUniqueness "s3://amzn-s3-demo-bucket/" > 0.5 with matchFileName = "true"
```

 Ada beberapa pertimbangan: 

1.  Di AWS Glue ETL, Anda harus memiliki **EvaluateDataQuality**Transform segera setelah transformasi Amazon S3 atau AWS Glue Data Catalog. 

1.  Aturan ini tidak akan berfungsi di AWS Glue Interactive Sessions. 

# FileSize
<a name="dqdl-rule-types-FileSize"></a>

 FileSize RuleType memungkinkan Anda untuk memastikan bahwa file memenuhi kriteria ukuran file tertentu. Ini berguna untuk kasus penggunaan berikut: 

1.  Pastikan produsen tidak mengirim file kosong atau jauh lebih kecil untuk diproses. 

1.  Pastikan bucket target Anda tidak memiliki file yang lebih kecil yang dapat menyebabkan masalah kinerja. 

 FileSize mengumpulkan metrik berikut: 

1.  Kepatuhan: mengembalikan% file yang memenuhi ambang batas aturan yang telah Anda buat 

1.  Jumlah File: jumlah file yang dipindai oleh aturan 

1.  Ukuran file minimum dalam byte 

1.  Ukuran file maksimum dalam byte 

```
Dataset.*.FileSize.Compliance: 1.00, 
Dataset.*.FileCount: 8.00, 
Dataset.*.MaximumFileSize: 327413121.00, 
Dataset.*.MinimumFileSize: 204558920.00
```

 Deteksi anomali tidak didukung untuk metrik ini. 

 **Validasi ukuran file** 

 Aturan ini akan berlalu ketika file.dat lebih besar dari 2 MB. 

```
FileSize "s3://amzn-s3-demo-bucket/file.dat" > 2 MB
```

 Unites yang didukung termasuk B (byte), MB (mega byte), GB (giga byte) dan TB (terra byte). 

 **Validasi ukuran file dalam folder** 

```
FileSize "s3://bucket/" > 5 B
FileSize "s3://bucket/" < 2 GB
```

 Aturan ini akan berlalu jika 70% file di s3://amzn-s3-demo-bucket adalah antara 2 GB dan 1 TB. 

```
FileSize "s3://amzn-s3-demo-bucket/" between 2 GB and 1 TB  with threshold > 0.7
```

 **Menyimpulkan nama file langsung dari bingkai data** 

 Anda tidak selalu harus menyediakan jalur file. Misalnya, ketika Anda menulis aturan di Katalog Data, mungkin sulit untuk menemukan folder mana yang digunakan tabel katalog. AWS Glue Data Quality dapat menemukan folder atau file tertentu yang digunakan untuk mengisi bingkai data Anda. 

**catatan**  
 Fitur ini hanya akan berfungsi ketika file berhasil dibaca ke dalam DynamicFrame atau DataFrame. 

```
FileSize < 10 MB with threshold > 0.7
```

 **Tag Aturan Berbasis File Opsional:** 

 Tag memungkinkan Anda mengontrol perilaku aturan. 

 **RecentFiles** 

 Tag ini membatasi jumlah file yang diproses dengan menyimpan file terbaru terlebih dahulu. 

```
FileSize "s3://amzn-s3-demo-bucket/" > 5 B with recentFiles = 1
```

 **UriRegex** 

**catatan**  
 `uriRegex`Tag tersedia di AWS Glue 5.0 dan yang lebih baru. 

 Tag ini memfilter file dengan menerapkan pola regex ke jalur file. Hanya file yang jalurnya cocok dengan pola yang diproses. Anda juga dapat menggunakan lookahead negatif untuk mengecualikan file yang cocok dengan pola. 

```
# Match only files with a .dat extension
FileSize "s3://bucket/" > 5 B with uriRegex = "\.dat$"
# Exclude files ending in .tmp using a negative lookahead
FileSize "s3://bucket/" > 5 B with uriRegex = "(?!.*\.tmp$).*"
```

 **FilterOrder** 

**catatan**  
 `filterOrder`Tag tersedia di AWS Glue 5.0 dan yang lebih baru. 

 Bila Anda menggunakan beberapa tag filter seperti `recentFiles` dan `uriRegex` bersama-sama, `filterOrder` tag mengontrol urutan penerapannya. Urutan default adalah yang `recentFiles` pertama, lalu`uriRegex`. 

```
FileSize "s3://bucket/" > 5 B with recentFiles = 5 with uriRegex = "\.dat$" with filterOrder = ["uriRegex","recentFiles"]
```

 **FailFast** 

 Saat disetel ke`"true"`, aturan segera mengembalikan kegagalan pada file pertama yang gagal dalam kondisi ukuran, alih-alih mengevaluasi semua file dan menghitung rasio kepatuhan. 

```
FileSize "s3://bucket/" > 2 MB with failFast = "true"
```

 Ada beberapa pertimbangan: 

1.  Di AWS Glue ETL, Anda harus memiliki DataQuality Evaluate Transform segera setelah Amazon S3 atau Data Catalog berubah. 

1.  Aturan ini tidak akan berfungsi di AWS Glue Interactive Sessions. 

# Menggunakan APIs untuk mengukur dan mengelola kualitas data
<a name="data-quality-using-apis"></a>

Topik ini menjelaskan cara menggunakan APIs untuk mengukur dan mengelola kualitas data.

**Contents**
+ [

## Prasyarat
](#using-apis-prerequisites)
+ [

## Bekerja dengan rekomendasi Kualitas Data AWS Glue
](#using-apis-recommendations)
+ [

## Bekerja dengan Aturan Kualitas Data AWS Glue
](#using-apis-rulesets)
+ [

## Bekerja dengan AWS Glue Data Quality berjalan
](#using-apis-runs)
+ [

## Bekerja dengan hasil Kualitas Data AWS Glue
](#using-apis-results)

## Prasyarat
<a name="using-apis-prerequisites"></a>
+ Pastikan versi boto3 Anda mutakhir sehingga menyertakan API Kualitas Data AWS Glue terbaru.
+ Pastikan versi AWS CLI Anda mutakhir, sehingga menyertakan CLI terbaru.

Jika Anda menggunakan pekerjaan AWS Glue untuk menjalankan ini APIs, Anda dapat menggunakan opsi berikut untuk memperbarui pustaka boto3 ke versi terbaru:

```
—additional-python-modules boto3==<version>
```

## Bekerja dengan rekomendasi Kualitas Data AWS Glue
<a name="using-apis-recommendations"></a>

**Untuk memulai rekomendasi AWS Glue Data Quality, jalankan:**

```
class GlueWrapper:
    """Encapsulates AWS Glue actions."""
    def __init__(self, glue_client):
        """
        :param glue_client: A Boto3 AWS Glue client.
        """
        self.glue_client = glue_client
        
    def start_data_quality_rule_recommendation_run(self, database_name, table_name, role_arn):
        """
        Starts a recommendation run that is used to generate rules when you don't know what rules to write. AWS Glue Data Quality 
        analyzes the data and comes up with recommendations for a potential ruleset. You can then triage the ruleset 
        and modify the generated ruleset to your liking.

        :param database_name: The name of the AWS Glue database which contains the dataset.
        :param table_name: The name of the AWS Glue table against which we want a recommendation
        :param role_arn: The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that grants permission to let AWS Glue access the resources it needs.

        """
        try:
            response = self.client.start_data_quality_rule_recommendation_run(
                DataSource={
                    'GlueTable': {
                        'DatabaseName': database_name,
                        'TableName': table_name
                    }
                },
                Role=role_arn
            )
        except ClientError as err:
            logger.error(
                "Couldn't start data quality recommendation run %s. Here's why: %s: %s", name,
                err.response['Error']['Code'], err.response['Error']['Message'])
            raise
        else:
            return response['RunId']
```

Untuk menjalankan rekomendasi, Anda dapat menggunakan `pushDownPredicates` atau `catalogPartitionPredicates` untuk meningkatkan kinerja dan menjalankan rekomendasi hanya pada partisi tertentu dari sumber katalog Anda.

```
client.start_data_quality_rule_recommendation_run(
            DataSource={
                'GlueTable': {
                    'DatabaseName': database_name,
                    'TableName': table_name,
                    'AdditionalOptions': {
                        'pushDownPredicate': "year=2022"
                    }
                }
            },
            Role=role_arn,
            NumberOfWorkers=2,
            CreatedRulesetName='<rule_set_name>'
  )
```

**Untuk mendapatkan hasil rekomendasi AWS Glue Data Quality, jalankan:**

```
class GlueWrapper:
    """Encapsulates AWS Glue actions."""
    def __init__(self, glue_client):
        """
        :param glue_client: A Boto3 AWS Glue client.
        """
        self.glue_client = glue_client
    
    def get_data_quality_rule_recommendation_run(self, run_id):
        """
        Gets the specified recommendation run that was used to generate rules.

        :param run_id: The id of the data quality recommendation run
        
        """
        try:
            response = self.client.get_data_quality_rule_recommendation_run(RunId=run_id)
        except ClientError as err:
            logger.error(
                "Couldn't get data quality recommendation run %. Here's why: %s: %s", run_id,
                err.response['Error']['Code'], err.response['Error']['Message'])
            raise
        else:
            return response
```

Dari objek respon di atas, Anda dapat mengekstrak RuleSet yang direkomendasikan oleh run, untuk digunakan dalam langkah selanjutnya:

```
print(response['RecommendedRuleset'])

Rules = [
    RowCount between 2000 and 8000,
    IsComplete "col1",
    IsComplete "col2",
    StandardDeviation "col3" between 58138330.8 and 64258155.09,
    ColumnValues "col4" between 1000042965 and 1214474826,
    IsComplete "col5"
]
```

**Untuk mendapatkan daftar semua rekomendasi Anda berjalan yang dapat difilter dan dicantumkan:**

```
response = client.list_data_quality_rule_recommendation_runs(
    Filter={
        'DataSource': {
            'GlueTable': {
                'DatabaseName': '<database_name>',
                'TableName': '<table_name>'
            }
        }
)
```

**Untuk membatalkan tugas rekomendasi Kualitas Data AWS Glue yang ada:**

```
response = client.cancel_data_quality_rule_recommendation_run(
    RunId='dqrun-d4b6b01957fdd79e59866365bf9cb0e40fxxxxxxx'
)
```

## Bekerja dengan Aturan Kualitas Data AWS Glue
<a name="using-apis-rulesets"></a>

**Untuk membuat aturan Kualitas Data AWS Glue:**

```
response = client.create_data_quality_ruleset(
    Name='<ruleset_name>',
    Ruleset='Rules = [IsComplete "col1", IsPrimaryKey "col2", RowCount between 2000 and 8000]',
    TargetTable={
        'TableName': '<table_name>',
        'DatabaseName': '<database_name>'
    }
)
```

**Untuk mendapatkan aturan kualitas data:**

```
response = client.get_data_quality_ruleset(
    Name='<ruleset_name>'
)
print(response)
```

Anda dapat menggunakan API ini untuk kemudian mengekstrak set aturan:

```
print(response['Ruleset'])
```

**Untuk membuat daftar semua aturan kualitas data untuk tabel:**

```
response = client.list_data_quality_rulesets()
```

Anda dapat menggunakan kondisi filter dalam API untuk memfilter semua aturan yang dilampirkan ke database atau tabel tertentu:

```
response = client.list_data_quality_rulesets(
    Filter={
        'TargetTable': {
            'TableName': '<table_name>',
            'DatabaseName': '<database_name>'
        }
    },
)
```

**Untuk memperbarui kumpulan aturan kualitas data:**

```
class GlueWrapper:
    """Encapsulates AWS Glue actions."""
    def __init__(self, glue_client):
        """
        :param glue_client: A Boto3 AWS Glue client.
        """
        self.glue_client = glue_client
        
    def update_data_quality_ruleset(self, ruleset_name, ruleset_string):
        """
        Update an AWS Glue Data Quality Ruleset
        
        :param ruleset_name: The name of the AWS Glue Data Quality ruleset to update
        :param ruleset_string: The DQDL ruleset string to update the ruleset with

        """
        try:
            response = self.client.update_data_quality_ruleset(
                Name=ruleset_name,
                Ruleset=ruleset_string
            )
        except ClientError as err:
            logger.error(
                "Couldn't update the AWS Glue Data Quality ruleset. Here's why: %s: %s", 
                err.response['Error']['Code'], err.response['Error']['Message'])
            raise
        else:
            return response
```

**Untuk menghapus kumpulan aturan kualitas data:**

```
class GlueWrapper:
    """Encapsulates AWS Glue actions."""
    def __init__(self, glue_client):
        """
        :param glue_client: A Boto3 AWS Glue client.
        """
        self.glue_client = glue_client
        
    def delete_data_quality_ruleset(self, ruleset_name):
        """
        Delete a AWS Glue Data Quality Ruleset
        
        :param ruleset_name: The name of the AWS Glue Data Quality ruleset to delete

        """
        try:
            response = self.client.delete_data_quality_ruleset(
                Name=ruleset_name
            )
        except ClientError as err:
            logger.error(
                "Couldn't delete the AWS Glue Data Quality ruleset. Here's why: %s: %s", 
                err.response['Error']['Code'], err.response['Error']['Message'])
            raise
        else:
            return response
```

## Bekerja dengan AWS Glue Data Quality berjalan
<a name="using-apis-runs"></a>

**Untuk memulai menjalankan AWS Glue Data Quality:**

```
class GlueWrapper:
    """Encapsulates AWS Glue actions."""
    def __init__(self, glue_client):
        """
        :param glue_client: A Boto3 AWS Glue client.
        """
        self.glue_client = glue_client
        
    def start_data_quality_ruleset_evaluation_run(self, database_name, table_name, role_name, ruleset_list):
        """
        Start an AWS Glue Data Quality evaluation run
        
        :param database_name: The name of the AWS Glue database which contains the dataset.
        :param table_name: The name of the AWS Glue table against which we want to evaluate.
        :param role_arn: The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that grants permission to let AWS Glue access the resources it needs. 
        :param ruleset_list: The list of AWS Glue Data Quality ruleset names to evaluate.

        """
        try:
            response = client.start_data_quality_ruleset_evaluation_run(
                DataSource={
                    'GlueTable': {
                        'DatabaseName': database_name,
                        'TableName': table_name
                    }
                },
                Role=role_name,
                RulesetNames=ruleset_list
            )
        except ClientError as err:
            logger.error(
                "Couldn't start the AWS Glue Data Quality Run. Here's why: %s: %s", 
                err.response['Error']['Code'], err.response['Error']['Message'])
            raise
        else:
            return response['RunId']
```

Ingat bahwa Anda dapat meneruskan `catalogPartitionPredicate` parameter `pushDownPredicate` atau untuk memastikan kualitas data Anda berjalan hanya menargetkan sekumpulan partisi tertentu dalam tabel katalog Anda. Contoh:

```
response = client.start_data_quality_ruleset_evaluation_run(
    DataSource={
        'GlueTable': {
            'DatabaseName': '<database_name>',
            'TableName': '<table_name>',
            'AdditionalOptions': {
                'pushDownPredicate': 'year=2023'
            }
        }
    },
    Role='<role_name>',
    NumberOfWorkers=5,
    Timeout=123,
    AdditionalRunOptions={
        'CloudWatchMetricsEnabled': False
    },
    RulesetNames=[
        '<ruleset_name>',
    ]
)
```

 Anda juga dapat mengonfigurasi bagaimana aturan komposit dalam kumpulan aturan Anda dievaluasi, baik di tingkat ROW atau COLUMN. Untuk informasi lebih lanjut tentang cara kerja aturan komposit, silakan lihat [Cara kerja aturan komposit](dqdl.md#dqdl-syntax-composite-rules) dalam dokumentasi. 

 Contoh tentang cara mengatur metode evaluasi aturan komposit dalam permintaan Anda: 

```
response = client.start_data_quality_ruleset_evaluation_run(
    DataSource={
        'GlueTable': {
            'DatabaseName': '<database_name>',
            'TableName': '<table_name>',
            'AdditionalOptions': {
                'pushDownPredicate': 'year=2023'
            }
        }
    },
    Role='<role_name>',
    NumberOfWorkers=5,
    Timeout=123,
    AdditionalRunOptions={
        'CompositeRuleEvaluationMethod':ROW
    },
    RulesetNames=[
        '<ruleset_name>',
    ]
)
```

 **Untuk mendapatkan informasi tentang AWS Glue Data Quality run:** 

```
class GlueWrapper:
    """Encapsulates AWS Glue actions."""
    def __init__(self, glue_client):
        """
        :param glue_client: A Boto3 AWS Glue client.
        """
        self.glue_client = glue_client
        
    def get_data_quality_ruleset_evaluation_run(self, run_id):
        """
        Get details about an AWS Glue Data Quality Run
        
        :param run_id: The AWS Glue Data Quality run ID to look up

        """
        try:
            response = self.client.get_data_quality_ruleset_evaluation_run(
                RunId=run_id
            )
        except ClientError as err:
            logger.error(
                "Couldn't look up the AWS Glue Data Quality run ID. Here's why: %s: %s", 
                err.response['Error']['Code'], err.response['Error']['Message'])
            raise
        else:
            return response
```

**Untuk mendapatkan hasil dari AWS Glue Data Quality menjalankan:**

Untuk menjalankan Kualitas Data AWS Glue tertentu, Anda dapat mengekstrak hasil evaluasi run menggunakan metode berikut:

```
response = client.get_data_quality_ruleset_evaluation_run(
    RunId='d4b6b01957fdd79e59866365bf9cb0e40fxxxxxxx'
)

resultID = response['ResultIds'][0]

response = client.get_data_quality_result(
    ResultId=resultID
)

print(response['RuleResults'])
```

**Untuk mencantumkan semua AWS Glue Data Quality Anda berjalan:**

```
class GlueWrapper:
    """Encapsulates AWS Glue actions."""
    def __init__(self, glue_client):
        """
        :param glue_client: A Boto3 AWS Glue client.
        """
        self.glue_client = glue_client
        
    def list_data_quality_ruleset_evaluation_runs(self, database_name, table_name):
        """
        Lists all the AWS Glue Data Quality runs against a given table
        
        :param database_name: The name of the database where the data quality runs 
        :param table_name: The name of the table against which the data quality runs were created
        
        """
        try:
            response = self.client.list_data_quality_ruleset_evaluation_runs(
                Filter={
                    'DataSource': {
                        'GlueTable': {
                            'DatabaseName': database_name,
                            'TableName': table_name
                        }
                    }
                }
            )
        except ClientError as err:
            logger.error(
                "Couldn't list the AWS Glue Quality runs. Here's why: %s: %s", 
                err.response['Error']['Code'], err.response['Error']['Message'])
            raise
        else:
            return response
```

Anda dapat memodifikasi klausa filter untuk hanya menampilkan hasil antara waktu tertentu atau berjalan terhadap tabel tertentu.

**Untuk menghentikan proses AWS Glue Data Quality yang sedang berlangsung:**

```
class GlueWrapper:
    """Encapsulates AWS Glue actions."""
    def __init__(self, glue_client):
        """
        :param glue_client: A Boto3 AWS Glue client.
        """
        self.glue_client = glue_client
        
    def cancel_data_quality_ruleset_evaluation_run(self, result_id):
        """
        Cancels a given AWS Glue Data Quality run
        
        :param result_id: The result id of a AWS Glue Data Quality run to cancel
        
        """
        try:
            response = self.client.cancel_data_quality_ruleset_evaluation_run(
                ResultId=result_id
            )
        except ClientError as err:
            logger.error(
                "Couldn't cancel the AWS Glue Data Quality run. Here's why: %s: %s", 
                err.response['Error']['Code'], err.response['Error']['Message'])
            raise
        else:
            return response
```

## Bekerja dengan hasil Kualitas Data AWS Glue
<a name="using-apis-results"></a>

 **Untuk mendapatkan hasil AWS Glue Data Quality run Anda:** 

```
class GlueWrapper:
    """Encapsulates AWS Glue actions."""
    def __init__(self, glue_client):
        """
        :param glue_client: A Boto3 AWS Glue client.
        """
        self.glue_client = glue_client
        
    def get_data_quality_result(self, result_id):
        """
        Outputs the result of an AWS Glue Data Quality Result
        
        :param result_id: The result id of an AWS Glue Data Quality run
        
        """
        try:
            response = self.client.get_data_quality_result(
                ResultId=result_id
            )
        except ClientError as err:
            logger.error(
                "Couldn't get the AWS Glue Data Quality result. Here's why: %s: %s", 
                err.response['Error']['Code'], err.response['Error']['Message'])
            raise
        else:
            return response
```

 **Untuk melihat statistik yang dikumpulkan untuk hasil kualitas data tertentu:** 

```
import boto3
from botocore.exceptions import ClientError
import logging

logger = logging.getLogger(__name__)
class GlueWrapper:
    """Encapsulates AWS Glue actions."""
    def __init__(self, glue_client):
        """
        :param glue_client: A Boto3 AWS Glue client.
        """
        self.glue_client = glue_client
        
    def get_profile_for_data_quality_result(self, result_id):
        """
        Outputs the statistic profile for a AWS Glue Data Quality Result
        
        :param result_id: The result id of a AWS Glue Data Quality run
        
        """
        try:
            response = self.glue_client.get_data_quality_result(
                ResultId=result_id
            )
            
            # the profile contains all statistics gathered for the result
            profile_id = response['ProfileId']
            profile = self.glue_client.list_data_quality_statistics(
                ProfileId = profile_id
            )            
            return profile                        
        except ClientError as err:
            logger.error(
                "Couldn't retrieve Data Quality profile. Here's why: %s: %s", 
                err.response['Error']['Code'], err.response['Error']['Message'])
            raise
```

 **Untuk melihat rentang waktu untuk statistik yang dikumpulkan di beberapa proses kualitas data:** 

```
class GlueWrapper:
    """Encapsulates AWS Glue actions."""
    def __init__(self, glue_client):
        """
        :param glue_client: A Boto3 AWS Glue client.
        """
        self.glue_client = glue_client

    def get_statistics_for_data_quality_result(self, profile_id):
        """
        Outputs an array of datapoints for each statistic in the input result.

        :param result_id: The profile id of a AWS Glue Data Quality run

        """
        try:
            profile = self.glue_client.list_data_quality_statistics(
                ProfileId = profile_id
            )
            statistics = [self.glue_client.list_data_quality_statistics(
                StatisticId = s['StatisticId']
            ) for s in profile['Statistics']]
            return statistics
        except ClientError as err:
            logger.error(
                "Couldn't retrieve Data Quality statistics. Here's why: %s: %s",
                err.response['Error']['Code'], err.response['Error']['Message'])
            raise
```

 **Untuk melihat model deteksi anomali untuk statistik tertentu:** 

```
class GlueWrapper:
    """Encapsulates AWS Glue actions."""
    def __init__(self, glue_client):
        """
        :param glue_client: A Boto3 AWS Glue client.
        """
        self.glue_client = glue_client

    def get_model_training_result_for_statistic(self, statistic_id, profile_id):
        """
        Outputs the details (bounds) of anomaly detection training for the given statistic at the given profile.

        :param statistic_id the model's statistic (the timeseries it is tracking)
        :param profile_id the profile associated with the model (a point in the timeseries)

        """
        try:
            model = self.glue_client.get_data_quality_model_result(
                ProfileId = profile_id, StatisticId = statistic_id
            )
            return model
        except ClientError as err:
            logger.error(
                "Couldn't retrieve Data Quality model results. Here's why: %s: %s",
                err.response['Error']['Code'], err.response['Error']['Message'])
            raise
```

 **Untuk mengecualikan titik data dari garis dasar deteksi anomali model statistiknya:** 

```
class GlueWrapper:
    """Encapsulates AWS Glue actions."""
    def __init__(self, glue_client):
        """
        :param glue_client: A Boto3 AWS Glue client.
        """
        self.glue_client = glue_client

    def apply_exclusions_to_statistic(self, statistic_id, profile_ids):
        """
        Annotate some points along a given statistic timeseries.
        
        This example excludes the provided values; INCLUDE can also be used to undo this action.

        :param statistic_id the statistic timeseries to annotate
        :param profile_id the profiles we want to exclude (points in the timeseries)

        """

        try:
            response = self.glue_client.batch_put_data_quality_statistic_annotation(
                    InclusionAnnotations = [
                        {'ProfileId': prof_id, 
                        'StatisticId': statistic_id, 
                        'InclusionAnnotation': 'EXCLUDE'} for prof_id in profile_ids
                    ]
            )
            return response['FailedInclusionAnnotations']
        except ClientError as err:
            logger.error(
                "Couldn't store Data Quality annotations. Here's why: %s: %s",
                err.response['Error']['Code'], err.response['Error']['Message'])
            raise
```

 **Untuk melihat status pelatihan model deteksi anomali untuk statistik tertentu:** 

```
class GlueWrapper:
    """Encapsulates AWS Glue actions."""
    def __init__(self, glue_client):
        """
        :param glue_client: A Boto3 AWS Glue client.
        """
        self.glue_client = glue_client

    def get_model_training_status_for_statistic(self, statistic_id, profile_id):
        """
        Outputs the status of anomaly detection training for the given statistic at the given profile.

        :param statistic_id the model's statistic (the timeseries it is tracking)
        :param profile_id the profile associated with the model (a point in the timeseries)

        """
        try:
            model = self.glue_client.get_data_quality_model(
                ProfileId = profile_id, StatisticId = statistic_id
            )
            return model
        except ClientError as err:
            logger.error(
                "Couldn't retrieve Data Quality statistics. Here's why: %s: %s",
                err.response['Error']['Code'], err.response['Error']['Message'])
            raise
```

 **Untuk mengecualikan semua hasil dari kualitas data tertentu, jalankan dari garis dasar deteksi anomali:** 

```
class GlueWrapper:
    """Encapsulates AWS Glue actions."""
    def __init__(self, glue_client):
        """
        :param glue_client: A Boto3 AWS Glue client.
        """
        self.glue_client = glue_client

    def apply_exclusions_to_profile(self, profile_id):
        """
        Exclude datapoints produced by a run across statistic timeseries.

        This example excludes the provided values; INCLUDE can also be used to undo this action.

        :param profile_id the profiles we want to exclude (points in the timeseries)

        """
        try:
            response = self.glue_client.put_data_quality_profile_annotation(
                    ProfileId = profile_id,
                    InclusionAnnotation = "EXCLUDE"
            )
            return response
        except ClientError as err:
            logger.error(
                "Couldn't store Data Quality annotations. Here's why: %s: %s",
                err.response['Error']['Code'], err.response['Error']['Message'])
            raise
```

 **Untuk mendapatkan hasil dari kualitas data yang diberikan, jalankan dan tampilkan hasilnya:** 

 Dengan Kualitas Data AWS Glue`runID`, Anda dapat mengekstrak `resultID` untuk kemudian mendapatkan hasil aktual, seperti yang ditunjukkan di bawah ini: 

```
response = client.get_data_quality_ruleset_evaluation_run(
    RunId='dqrun-abca77ee126abe1378c1da1ae0750d7dxxxx'
)

resultID = response['ResultIds'][0]

response = client.get_data_quality_result(
    ResultId=resultID
)

print(resp['RuleResults'])
```

# Menyiapkan peringatan, penerapan, dan penjadwalan
<a name="data-quality-alerts"></a>

Topik ini menjelaskan cara mengatur peringatan, penerapan, dan penjadwalan untuk Kualitas Data AWS Glue.

**Contents**
+ [

## Menyiapkan peringatan dan pemberitahuan dalam integrasi Amazon EventBridge
](#data-quality-alerts-eventbridge)
  + [

### Opsi konfigurasi tambahan untuk pola acara
](#data-quality-alerts-eventbridge-config-options)
  + [

### Memformat pemberitahuan sebagai email
](#data-quality-alerts-eventbridge-format-notifications)
+ [

## Siapkan peringatan dan notifikasi dalam integrasi CloudWatch
](#data-quality-alerts-cloudwatch)
+ [

## Menanyakan hasil kualitas data untuk membangun dasbor
](#data-quality-alerts-querying-results)
+ [

## Menerapkan aturan kualitas data menggunakan AWS CloudFormation
](#data-quality-deploy-cfn)
+ [

## Menjadwalkan aturan kualitas data
](#data-quality-scheduling-rules)

## Menyiapkan peringatan dan pemberitahuan dalam integrasi Amazon EventBridge
<a name="data-quality-alerts-eventbridge"></a>

AWS Glue Data Quality mendukung penerbitan EventBridge peristiwa, yang dipancarkan setelah menyelesaikan evaluasi aturan Kualitas Data. Dengan ini, Anda dapat dengan mudah mengatur peringatan ketika aturan kualitas data gagal.

Berikut adalah contoh peristiwa saat Anda mengevaluasi kumpulan aturan kualitas data di Katalog Data. Dengan informasi ini, Anda dapat meninjau data yang tersedia dengan Amazon EventBridge. Anda dapat mengeluarkan panggilan API tambahan untuk mendapatkan detail selengkapnya. Misalnya, panggil `get_data_quality_result` API dengan ID hasil untuk mendapatkan detail eksekusi tertentu.

```
{
    "version":"0",
    "id":"abcdef00-1234-5678-9abc-def012345678",
    "detail-type":"Data Quality Evaluation Results Available",
    "source":"aws.glue-dataquality",
    "account":"123456789012",
    "time":"2017-09-07T18:57:21Z",
    "region":"us-west-2",
    "resources":[],
    "detail":{
        "context": {
                    "contextType": "GLUE_DATA_CATALOG",
                    "runId":"dqrun-12334567890",
                    "databaseName": "db-123",
                    "tableName": "table-123",
                    "catalogId": "123456789012"
                    },
        "resultID": "dqresult-12334567890",
        "rulesetNames": ["rulset1"],
        "state":"SUCCEEDED",
        "score": 1.00,
        "rulesSucceeded": 100,
        "rulesFailed": 0,
        "rulesSkipped": 0
    }
}
```

Berikut adalah contoh peristiwa yang dipublikasikan saat Anda mengevaluasi set aturan kualitas data di notebook Glue ETL atau AWS AWS Glue Studio.

```
{
    "version":"0",
    "id":"abcdef00-1234-5678-9abc-def012345678",
    "detail-type":"Data Quality Evaluation Results Available",
    "source":"aws.glue-dataquality",
    "account":"123456789012",
    "time":"2017-09-07T18:57:21Z",
    "region":"us-west-2",
    "resources":[],
    "detail":{
        "context": {
                    "contextType": "GLUE_JOB",
                    "jobId": "jr-12334567890",
                    "jobName": "dq-eval-job-1234",
                    "evaluationContext": "", 
                    }
        "resultID": "dqresult-12334567890",
        "rulesetNames": ["rulset1"],
        "state":"SUCCEEDED",
        "score": 1.00
        "rulesSucceeded": 100,
        "rulesFailed": 0,
        "rulesSkipped": 0
    }
}
```

Untuk evaluasi Kualitas Data berjalan baik di Katalog Data dan dalam pekerjaan ETL, Amazon CloudWatch opsi **Publikasikan metrik ke**, yang dipilih secara default, harus tetap dipilih agar EventBridge penerbitan berfungsi.

**Menyiapkan EventBridge notifikasi**

![\[Properti kualitas data di AWS CloudFormation\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data-quality-properties-cfn.png)


Untuk menerima peristiwa yang dipancarkan dan menentukan target, Anda harus mengonfigurasi aturan Amazon EventBridge . Untuk membuat aturan:

1. Buka EventBridge konsol Amazon.

1. Pilih **Aturan** di bawah bagian **Bus** pada bilah navigasi.

1. Pilih **Buat aturan**.

1. Tentang **Tentukan Rincian Aturan**:

   1. Untuk Nama, masukkan`myDQRule`.

   1. Masukkan deskripsi (opsional).

   1. Untuk bus acara, pilih bus acara Anda. Jika Anda tidak memilikinya, biarkan sebagai default.

   1. Untuk Jenis aturan pilih **Aturan dengan pola acara** lalu pilih **Berikutnya**.

1. Pada **Pola Acara Bangun**: 

   1. Untuk sumber acara pilih **AWS acara atau acara EventBridge mitra**.

   1. Lewati bagian contoh acara.

   1. Untuk metode pembuatan pilih **Gunakan formulir pola**.

   1. Untuk pola acara:

      1. Pilih **AWS layanan** untuk sumber Acara.

      1. Pilih **Glue Data Quality** untuk AWS layanan.

      1. Pilih **Hasil Evaluasi Kualitas Data yang Tersedia** untuk jenis Acara.

      1. Pilih **GAGAL** untuk status tertentu. Kemudian Anda melihat pola acara yang mirip dengan berikut ini:

         ```
         {
           "source": ["aws.glue-dataquality"],
           "detail-type": ["Data Quality Evaluation Results Available"],
           "detail": {
             "state": ["FAILED"]
           }
         }
         ```

      1. Untuk opsi konfigurasi lainnya, lihat[Opsi konfigurasi tambahan untuk pola acara](#data-quality-alerts-eventbridge-config-options).

1. Pada **Target Pilih**:

   1. Untuk **Jenis Target** pilih **AWS layanan**.

   1. **Gunakan menu tarik-turun **Pilih target** untuk memilih AWS layanan yang Anda inginkan untuk terhubung (SNS, Lambda, SQS, dll.), Lalu pilih Berikutnya.**

1. Pada **Konfigurasi tag** klik **Tambahkan tag baru untuk menambahkan tag** opsional lalu pilih **Berikutnya**.

1. Anda melihat halaman ringkasan dari semua pilihan. Pilih **Buat aturan** di bagian bawah.

### Opsi konfigurasi tambahan untuk pola acara
<a name="data-quality-alerts-eventbridge-config-options"></a>

Selain memfilter acara Anda tentang keberhasilan atau kegagalan, Anda mungkin ingin memfilter lebih lanjut peristiwa pada parameter yang berbeda.

Untuk melakukan ini, buka bagian Pola Acara, dan pilih **Edit pola** untuk menentukan parameter tambahan. Perhatikan bahwa bidang dalam pola peristiwa peka huruf besar/kecil. Berikut ini adalah contoh konfigurasi pola acara.

Untuk menangkap peristiwa dari tabel tertentu yang mengevaluasi kumpulan aturan tertentu, gunakan jenis pola ini:

```
{
  "source": ["aws.glue-dataquality"],
  "detail-type": ["Data Quality Evaluation Results Available"],
  "detail": {
    "context": {
      "contextType": ["GLUE_DATA_CATALOG"],
      "databaseName": "db-123",
       "tableName": "table-123",
    },
    "rulesetNames": ["ruleset1", "ruleset2"]
    "state": ["FAILED"]
  }
}
```

Untuk menangkap peristiwa dari pekerjaan tertentu dalam pengalaman ETL, gunakan jenis pola ini:

```
{
  "source": ["aws.glue-dataquality"],
  "detail-type": ["Data Quality Evaluation Results Available"],
  "detail": {
    "context": {
      "contextType": ["GLUE_JOB"],
      "jobName": ["dq_evaluation_job1", "dq_evaluation_job2"]
    },
    "state": ["FAILED"]
  }
}
```

Untuk menangkap peristiwa dengan skor di bawah ambang tertentu (misalnya 70%):

```
{
  "source": ["aws.glue-dataquality"],
  "detail-type": ["Data Quality Evaluation Results Available"],
  "detail": {
    "score": [{
      "numeric": ["<=", 0.7]
    }]
  }
}
```

### Memformat pemberitahuan sebagai email
<a name="data-quality-alerts-eventbridge-format-notifications"></a>

Terkadang Anda perlu mengirim pemberitahuan email yang diformat dengan baik ke tim bisnis Anda. Anda dapat menggunakan Amazon EventBridge dan AWS Lambda untuk mencapai ini.

![\[Pemberitahuan kualitas data diformat sebagai email\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data_quality_sample_email.png)


Kode contoh berikut dapat digunakan untuk memformat pemberitahuan kualitas data Anda untuk menghasilkan email.

```
import boto3
import json
from datetime import datetime

sns_client = boto3.client('sns')
glue_client = boto3.client('glue')

sns_topic_arn = 'arn:aws:sns:<region-code>:<account-id>:<sns-topic-name>'



def lambda_handler(event, context):
    log_metadata = {}
    message_text = ""
    subject_text = ""

    if event['detail']['context']['contextType'] == 'GLUE_DATA_CATALOG':
        log_metadata['ruleset_name'] = str(event['detail']['rulesetNames'][0])
        log_metadata['tableName'] = str(event['detail']['context']['tableName'])
        log_metadata['databaseName'] = str(event['detail']['context']['databaseName'])
        log_metadata['runId'] = str(event['detail']['context']['runId'])
        log_metadata['resultId'] = str(event['detail']['resultId'])
        log_metadata['state'] = str(event['detail']['state'])
        log_metadata['score'] = str(event['detail']['score'])
        log_metadata['numRulesSucceeded'] = str(event['detail']['numRulesSucceeded'])
        log_metadata['numRulesFailed'] = str(event['detail']['numRulesFailed'])
        log_metadata['numRulesSkipped'] = str(event['detail']['numRulesSkipped'])

        message_text += "Glue Data Quality run details:\n"
        message_text += "ruleset_name: {}\n".format(log_metadata['ruleset_name'])
        message_text += "glue_table_name: {}\n".format(log_metadata['tableName'])
        message_text += "glue_database_name: {}\n".format(log_metadata['databaseName'])
        message_text += "run_id: {}\n".format(log_metadata['runId'])
        message_text += "result_id: {}\n".format(log_metadata['resultId'])
        message_text += "state: {}\n".format(log_metadata['state'])
        message_text += "score: {}\n".format(log_metadata['score'])
        message_text += "numRulesSucceeded: {}\n".format(log_metadata['numRulesSucceeded'])
        message_text += "numRulesFailed: {}\n".format(log_metadata['numRulesFailed'])
        message_text += "numRulesSkipped: {}\n".format(log_metadata['numRulesSkipped'])

        subject_text = "Glue Data Quality ruleset {} run details".format(log_metadata['ruleset_name'])

    else:
        log_metadata['ruleset_name'] = str(event['detail']['rulesetNames'][0])
        log_metadata['jobName'] = str(event['detail']['context']['jobName'])
        log_metadata['jobId'] = str(event['detail']['context']['jobId'])
        log_metadata['resultId'] = str(event['detail']['resultId'])
        log_metadata['state'] = str(event['detail']['state'])
        log_metadata['score'] = str(event['detail']['score'])

        log_metadata['numRulesSucceeded'] = str(event['detail']['numRulesSucceeded'])
        log_metadata['numRulesFailed'] = str(event['detail']['numRulesFailed'])
        log_metadata['numRulesSkipped'] = str(event['detail']['numRulesSkipped'])

        message_text += "Glue Data Quality run details:\n"
        message_text += "ruleset_name: {}\n".format(log_metadata['ruleset_name'])
        message_text += "glue_job_name: {}\n".format(log_metadata['jobName'])
        message_text += "job_id: {}\n".format(log_metadata['jobId'])
        message_text += "result_id: {}\n".format(log_metadata['resultId'])
        message_text += "state: {}\n".format(log_metadata['state'])
        message_text += "score: {}\n".format(log_metadata['score'])
        message_text += "numRulesSucceeded: {}\n".format(log_metadata['numRulesSucceeded'])
        message_text += "numRulesFailed: {}\n".format(log_metadata['numRulesFailed'])
        message_text += "numRulesSkipped: {}\n".format(log_metadata['numRulesSkipped'])

        subject_text = "Glue Data Quality ruleset {} run details".format(log_metadata['ruleset_name'])

    resultID = str(event['detail']['resultId'])
    response = glue_client.get_data_quality_result(ResultId=resultID)
    RuleResults = response['RuleResults']
    message_text += "\n\nruleset details evaluation steps results:\n\n"
    subresult_info = []

    for dic in RuleResults:
        subresult = "Name: {}\t\tResult: {}\t\tDescription: \t{}".format(dic['Name'], dic['Result'], dic['Description'])
        if 'EvaluationMessage' in dic:
            subresult += "\t\tEvaluationMessage: {}".format(dic['EvaluationMessage'])
        subresult_info.append({
            'Name': dic['Name'],
            'Result': dic['Result'],
            'Description': dic['Description'],
            'EvaluationMessage': dic.get('EvaluationMessage', '')
        })
        message_text += "\n" + subresult

    log_metadata['resultrun'] = subresult_info



    sns_client.publish(
        TopicArn=sns_topic_arn,
        Message=message_text,
        Subject=subject_text
    )

    return {
        'statusCode': 200,
        'body': json.dumps('Message published to SNS topic')
    }
```

## Siapkan peringatan dan notifikasi dalam integrasi CloudWatch
<a name="data-quality-alerts-cloudwatch"></a>

Pendekatan yang kami rekomendasikan adalah menyiapkan peringatan kualitas data menggunakan Amazon EventBridge, karena Amazon EventBridge memerlukan penyiapan satu kali untuk mengingatkan pelanggan. Namun, beberapa pelanggan lebih suka Amazon CloudWatch karena keakraban. Untuk pelanggan seperti itu, kami menawarkan integrasi dengan Amazon CloudWatch.

Setiap evaluasi Kualitas Data AWS Glue memancarkan sepasang metrik bernama `glue.data.quality.rules.passed` (menunjukkan sejumlah aturan yang lolos) dan `glue.data.quality.rules.failed` (menunjukkan jumlah aturan yang gagal) per kualitas data yang dijalankan. Anda dapat menggunakan metrik yang dipancarkan ini untuk membuat alarm untuk mengingatkan pengguna jika kualitas data tertentu berjalan di bawah ambang batas. Untuk memulai dengan mengatur alarm yang akan mengirim email melalui pemberitahuan Amazon SNS, ikuti langkah-langkah di bawah ini:

Untuk memulai dengan mengatur alarm yang akan mengirim email melalui pemberitahuan Amazon SNS, ikuti langkah-langkah di bawah ini:

1. Buka CloudWatch konsol Amazon.

1. Pilih **Semua metrik** di bawah **Metrik**. Anda akan melihat namespace tambahan di bawah ruang nama Kustom berjudul Glue Data Quality.
**catatan**  
Saat memulai proses AWS Glue Data Quality, pastikan CloudWatch kotak centang **Publikasikan metrik ke Amazon** diaktifkan. Jika tidak, metrik untuk proses tertentu tidak akan dipublikasikan ke Amazon CloudWatch.

   Di bawah `Glue Data Quality` namespace, Anda dapat melihat metrik yang dipancarkan per tabel, per kumpulan aturan. Untuk tujuan topik ini, kami akan menggunakan `glue.data.quality.rules.failed` aturan dan alarm jika nilai ini melebihi 1 (menunjukkan bahwa, jika kami melihat sejumlah evaluasi aturan yang gagal lebih besar dari 1, kami ingin diberi tahu).

1. Untuk membuat alarm, pilih **Semua alarm di bawah **Alarm****.

1. Pilih **Buat alarm**.

1. Pilih **Pilih Metrik**.

1. Pilih `glue.data.quality.rules.failed` metrik yang sesuai dengan tabel yang telah Anda buat, lalu **pilih Pilih metrik**.

1. Di bawah tab **Tentukan metrik dan kondisi**, di bawah bagian **Metrik**:

   1. Untuk **Statistik** pilih **Jumlah**.

   1. Untuk **Periode**, pilih **1 menit**.

1. Di bawah bagian **Kondisi**:

   1. Untuk **Jenis ambang batas**, pilih **Statis**.

   1. Untuk **Setiap kali glue.data.quality.rules.failed** adalah... , pilih **Greater/Equal**.

   1. Untuk **dari...** , masukkan **1** sebagai nilai ambang batas.

   Pilihan ini menyiratkan bahwa jika `glue.data.quality.rules.failed` metrik memancarkan nilai lebih besar dari atau sama dengan 1, kami akan memicu alarm. Namun, jika tidak ada data, kami akan memperlakukannya sebagai dapat diterima.

1. Pilih **Berikutnya**.

1. Pada **tindakan Konfigurasi**:

   1. Untuk bagian **Pemicu status alarm**, pilih **Dalam alarm**.

   1. Untuk **Kirim pemberitahuan ke bagian topik SNS berikut**, pilih **Buat topik baru untuk mengirim pemberitahuan melalui topik SNS baru**.

   1. Untuk **titik akhir Email yang akan menerima notifikasi,** masukkan alamat email Anda. Kemudian klik **Buat Topik**.

   1. Pilih **Berikutnya**.

1. Untuk **nama Alarm**, masukkan`myFirstDQAlarm`, lalu pilih **Berikutnya**.

1. Anda melihat halaman ringkasan dari semua pilihan. Pilih **Buat alarm** di bagian bawah.

Anda sekarang dapat melihat alarm dibuat dari dasbor CloudWatch alarm Amazon.

## Menanyakan hasil kualitas data untuk membangun dasbor
<a name="data-quality-alerts-querying-results"></a>

Anda mungkin ingin membangun dasbor untuk menampilkan hasil kualitas data Anda. Ada dua cara untuk melakukan hal ini:

**Siapkan Amazon EventBridge dengan kode berikut untuk menulis data ke Amazon S3:**

```
import boto3
import json
from datetime import datetime


s3_client = boto3.client('s3')
glue_client = boto3.client('glue')


s3_bucket = 's3-bucket-name'

def write_logs(log_metadata):
    try:
        filename = datetime.now().strftime("%m%d%Y%H%M%S") + ".json"
        key_opts = {
            'year': datetime.now().year,
            'month': "{:02d}".format(datetime.now().month),
            'day': "{:02d}".format(datetime.now().day),
            'filename': filename
        }
        s3key = "gluedataqualitylogs/year={year}/month={month}/day={day}/{filename}".format(**key_opts)
        s3_client.put_object(Bucket=s3_bucket, Key=s3key, Body=json.dumps(log_metadata))
    except Exception as e:
        print(f'Error writing logs to S3: {e}')


def lambda_handler(event, context):
    log_metadata = {}
    message_text = ""
    subject_text = ""

    if event['detail']['context']['contextType'] == 'GLUE_DATA_CATALOG':
        log_metadata['ruleset_name'] = str(event['detail']['rulesetNames'][0])
        log_metadata['tableName'] = str(event['detail']['context']['tableName'])
        log_metadata['databaseName'] = str(event['detail']['context']['databaseName'])
        log_metadata['runId'] = str(event['detail']['context']['runId'])
        log_metadata['resultId'] = str(event['detail']['resultId'])
        log_metadata['state'] = str(event['detail']['state'])
        log_metadata['score'] = str(event['detail']['score'])
        log_metadata['numRulesSucceeded'] = str(event['detail']['numRulesSucceeded'])
        log_metadata['numRulesFailed'] = str(event['detail']['numRulesFailed'])
        log_metadata['numRulesSkipped'] = str(event['detail']['numRulesSkipped'])

        message_text += "Glue Data Quality run details:\n"
        message_text += "ruleset_name: {}\n".format(log_metadata['ruleset_name'])
        message_text += "glue_table_name: {}\n".format(log_metadata['tableName'])
        message_text += "glue_database_name: {}\n".format(log_metadata['databaseName'])
        message_text += "run_id: {}\n".format(log_metadata['runId'])
        message_text += "result_id: {}\n".format(log_metadata['resultId'])
        message_text += "state: {}\n".format(log_metadata['state'])
        message_text += "score: {}\n".format(log_metadata['score'])
        message_text += "numRulesSucceeded: {}\n".format(log_metadata['numRulesSucceeded'])
        message_text += "numRulesFailed: {}\n".format(log_metadata['numRulesFailed'])
        message_text += "numRulesSkipped: {}\n".format(log_metadata['numRulesSkipped'])

        subject_text = "Glue Data Quality ruleset {} run details".format(log_metadata['ruleset_name'])

    else:
        log_metadata['ruleset_name'] = str(event['detail']['rulesetNames'][0])
        log_metadata['jobName'] = str(event['detail']['context']['jobName'])
        log_metadata['jobId'] = str(event['detail']['context']['jobId'])
        log_metadata['resultId'] = str(event['detail']['resultId'])
        log_metadata['state'] = str(event['detail']['state'])
        log_metadata['score'] = str(event['detail']['score'])

        log_metadata['numRulesSucceeded'] = str(event['detail']['numRulesSucceeded'])
        log_metadata['numRulesFailed'] = str(event['detail']['numRulesFailed'])
        log_metadata['numRulesSkipped'] = str(event['detail']['numRulesSkipped'])

        message_text += "Glue Data Quality run details:\n"
        message_text += "ruleset_name: {}\n".format(log_metadata['ruleset_name'])
        message_text += "glue_job_name: {}\n".format(log_metadata['jobName'])
        message_text += "job_id: {}\n".format(log_metadata['jobId'])
        message_text += "result_id: {}\n".format(log_metadata['resultId'])
        message_text += "state: {}\n".format(log_metadata['state'])
        message_text += "score: {}\n".format(log_metadata['score'])
        message_text += "numRulesSucceeded: {}\n".format(log_metadata['numRulesSucceeded'])
        message_text += "numRulesFailed: {}\n".format(log_metadata['numRulesFailed'])
        message_text += "numRulesSkipped: {}\n".format(log_metadata['numRulesSkipped'])

        subject_text = "Glue Data Quality ruleset {} run details".format(log_metadata['ruleset_name'])

    resultID = str(event['detail']['resultId'])
    response = glue_client.get_data_quality_result(ResultId=resultID)
    RuleResults = response['RuleResults']
    message_text += "\n\nruleset details evaluation steps results:\n\n"
    subresult_info = []

    for dic in RuleResults:
        subresult = "Name: {}\t\tResult: {}\t\tDescription: \t{}".format(dic['Name'], dic['Result'], dic['Description'])
        if 'EvaluationMessage' in dic:
            subresult += "\t\tEvaluationMessage: {}".format(dic['EvaluationMessage'])
        subresult_info.append({
            'Name': dic['Name'],
            'Result': dic['Result'],
            'Description': dic['Description'],
            'EvaluationMessage': dic.get('EvaluationMessage', '')
        })
        message_text += "\n" + subresult

    log_metadata['resultrun'] = subresult_info

    write_logs(log_metadata)


    return {
        'statusCode': 200,
        'body': json.dumps('Message published to SNS topic')
    }
```

Setelah menulis ke Amazon S3, Anda dapat menggunakan perayap AWS Glue untuk mendaftar ke Athena dan menanyakan tabel.

**Konfigurasikan lokasi Amazon S3 selama evaluasi kualitas data::**

Saat menjalankan tugas kualitas data di AWS Glue Data Catalog atau AWS Glue ETL, Anda dapat memberikan lokasi Amazon S3 untuk menulis hasil kualitas data ke Amazon S3. Anda dapat menggunakan sintaks di bawah ini untuk membuat tabel dengan mereferensikan target untuk membaca hasil kualitas data.

Perhatikan bahwa Anda harus menjalankan `MSCK REPAIR TABLE` kueri `CREATE EXTERNAL TABLE` dan secara terpisah.

```
CREATE EXTERNAL TABLE <my_table_name>(
    catalogid string,
    databasename string,
    tablename string,
    dqrunid string,
    evaluationstartedon timestamp,
    evaluationcompletedon timestamp,
    rule string,
    outcome string,
    failurereason string,
    evaluatedmetrics string) 
PARTITIONED BY (
    `year` string,
    `month` string,
    `day` string)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
    'paths'='catalogId,databaseName,dqRunId,evaluatedMetrics,evaluationCompletedOn,evaluationStartedOn,failureReason,outcome,rule,tableName')
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://glue-s3-dq-bucket-us-east-2-results/'
TBLPROPERTIES (
    'classification'='json',
    'compressionType'='none',
    'typeOfData'='file');
```

```
MSCK REPAIR TABLE <my_table_name>;
```

Setelah Anda membuat tabel di atas, Anda dapat menjalankan kueri analitik menggunakan Amazon Athena.

## Menerapkan aturan kualitas data menggunakan AWS CloudFormation
<a name="data-quality-deploy-cfn"></a>

Anda dapat menggunakan AWS CloudFormation untuk membuat aturan kualitas data. Untuk informasi lebih lanjut, lihat [AWS CloudFormation untuk AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/populate-with-cloudformation-templates.html). 

## Menjadwalkan aturan kualitas data
<a name="data-quality-scheduling-rules"></a>

Anda dapat menjadwalkan aturan kualitas data menggunakan metode berikut:
+  Jadwalkan aturan kualitas data dari Katalog Data: tidak ada pengguna kode yang dapat menggunakan opsi ini untuk dengan mudah menjadwalkan pemindaian kualitas data mereka. AWS Glue Data Quality akan membuat jadwal di Amazon EventBridge. Untuk menjadwalkan aturan kualitas data: 
  +  **Arahkan ke ruleset dan klik Run.** 
  +  Dalam **frekuensi Jalankan**, pilih jadwal yang diinginkan dan berikan **Nama Tugas**. Nama Tugas ini adalah nama jadwal Anda di EventBridge. 
+ Gunakan Amazon EventBridge dan AWS Step Functions untuk mengatur evaluasi dan rekomendasi untuk aturan kualitas data.

# Enkripsi data saat istirahat untuk AWS Glue Data Quality
<a name="data-quality-encryption"></a>

 AWS Glue Data Qualitymenyediakan enkripsi secara default untuk melindungi data pelanggan sensitif saat istirahat menggunakan kunci enkripsi yang AWS dimiliki. 

## AWS kunci yang dimiliki
<a name="w2aac49c74b9"></a>

 AWS Glue Data Quality menggunakan kunci ini untuk secara otomatis mengenkripsi aset Kualitas Data pelanggan. Anda tidak dapat melihat, mengelola, atau menggunakan kunci yang AWS dimiliki, atau mengaudit penggunaannya. Namun, Anda tidak perlu mengambil tindakan apa pun atau mengubah program apa pun untuk melindungi kunci yang mengenkripsi data Anda. Untuk informasi selengkapnya, lihat [kunci yang AWS dimiliki](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) di Panduan AWS KMS Pengembang. 

 Enkripsi data saat istirahat secara default membantu mengurangi overhead operasional dan kompleksitas yang terlibat dalam melindungi data sensitif. Pada saat yang sama, ini memungkinkan Anda untuk membangun aplikasi aman yang memenuhi kepatuhan enkripsi yang ketat dan persyaratan peraturan. 

 Meskipun Anda tidak dapat menonaktifkan lapisan enkripsi ini atau memilih jenis enkripsi alternatif, Anda dapat menambahkan lapisan enkripsi kedua di atas kunci enkripsi yang ada AWS dengan memilih kunci yang dikelola pelanggan saat Anda membuat sumber daya Kualitas Data. 

## Kunci yang dikelola pelanggan
<a name="data-quality-encryption-customer-managed-keys"></a>

 **Kunci AWS terkelola pelanggan**: Glue Data Quality mendukung penggunaan kunci yang dikelola pelanggan simetris yang Anda buat, miliki, dan kelola. Ini menambahkan lapisan enkripsi kedua di atas enkripsi yang AWS dimiliki yang ada. Karena Anda memiliki kontrol penuh atas lapisan enkripsi ini, Anda dapat melakukan tugas-tugas seperti: 
+  Menetapkan dan memelihara kebijakan utama 
+  Menetapkan dan memelihara kebijakan IAM 
+  Mengaktifkan dan menonaktifkan kebijakan utama 
+  Memutar bahan kriptografi kunci 
+  Menambahkan tanda 
+  Membuat alias kunci 
+  Kunci penjadwalan untuk penghapusan 

 Untuk informasi selengkapnya, lihat [Kunci terkelola pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) di Panduan AWS KMS Pengembang. 

 Tabel berikut merangkum bagaimana AWS Glue Data Quality mengenkripsi aset Kualitas Data yang berbeda. 


| Jenis data | AWS enkripsi kunci yang dimiliki | Enkripsi kunci yang dikelola pelanggan | 
| --- | --- | --- | 
|   **Aturan Kualitas Data**   String ruleset DQDL yang direferensikan oleh set aturan DQ yang bertahan. Set aturan yang bertahan ini hanya digunakan dalam pengalaman AWS Glue Data Catalog untuk saat ini.   | Diaktifkan | Diaktifkan | 
|   ** Rule/Analyzer Hasil Kualitas Data**   Hasil artefak yang berisi pass/fail status setiap aturan dalam kumpulan aturan serta metrik yang dikumpulkan oleh aturan dan penganalisis.   | Diaktifkan | Diaktifkan | 
|   **Pengamatan**   Pengamatan dihasilkan ketika anomali terdeteksi dalam data. Ini berisi informasi tentang batas atas dan bawah yang diharapkan dan aturan yang disarankan berdasarkan batas-batas ini. Jika dihasilkan, mereka ditampilkan dengan Hasil Kualitas Data.   | Diaktifkan | Diaktifkan | 
|   **Statistik**   Berisi informasi tentang metrik yang dikumpulkan setelah mengevaluasi data yang diberikan kumpulan aturan, seperti nilai metrik (misalnya, Kelengkapan), nama kolom RowCount, dan metadata lainnya.   | Diaktifkan | Diaktifkan | 
|   **Model Statistik Deteksi Anomali**   Model statistik berisi deret waktu batas atas dan bawah untuk metrik tertentu yang dihasilkan berdasarkan evaluasi sebelumnya dari data pelanggan.   | Diaktifkan | Diaktifkan | 

**catatan**  
 AWS Kualitas Data secara otomatis memungkinkan enkripsi saat istirahat menggunakan kunci yang AWS dimiliki untuk melindungi data yang dapat diidentifikasi secara pribadi tanpa biaya. Namun, AWS KMS biaya berlaku untuk menggunakan kunci yang dikelola pelanggan. Untuk informasi lebih lanjut tentang harga, lihat [AWS KMS Harga](https://aws.amazon.com/kms/pricing/).   
 Untuk informasi lebih lanjut tentang AWS KMS, lihat [AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html). 

## Buat Kunci yang Dikelola Pelanggan
<a name="data-quality-encryption-customer-managed-key"></a>

 Anda dapat membuat kunci yang dikelola pelanggan simetris dengan menggunakan Konsol Manajemen AWS, atau. AWS KMS APIs 

**Untuk membuat kunci terkelola pelanggan simetris:**
+  Ikuti langkah-langkah untuk [Membuat AWS KMS kunci enkripsi simetris](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) di Panduan AWS Key Management Service Pengembang. 

### Kebijakan kunci
<a name="data-quality-encryption-customer-managed-key-policy"></a>

 Kebijakan utama mengontrol akses ke kunci yang dikelola pelanggan Anda. Setiap kunci yang dikelola pelanggan harus memiliki persis satu kebijakan utama, yang berisi pernyataan yang menentukan siapa yang dapat menggunakan kunci dan bagaimana mereka dapat menggunakannya. Saat membuat kunci terkelola pelanggan, Anda dapat menentukan kebijakan kunci. Untuk informasi selengkapnya, lihat [Kebijakan kunci dalam AWS KMS kunci](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) di Panduan AWS Key Management Service Pengembang. 

 Untuk menggunakan kunci yang dikelola pelanggan dengan sumber daya Kualitas Data Anda, operasi API berikut harus diizinkan dalam kebijakan kunci: 
+  [https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)— Mendekripsi ciphertext yang dienkripsi oleh kunci menggunakan AWS KMS `GenerateDataKeyWithoutPlaintext` 
+  [https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)— Memberikan detail kunci yang dikelola pelanggan untuk memungkinkan Lokasi Amazon memvalidasi kunci. 
+  [https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)— Mengembalikan kunci data simetris yang unik untuk digunakan di luar. AWS KMS Operasi ini mengembalikan kunci data yang dienkripsi di bawah kunci KMS enkripsi simetris yang Anda tentukan. Byte dalam kunci adalah acak; mereka tidak terkait dengan penelepon atau ke kunci KMS. Digunakan untuk mengurangi panggilan KMS yang harus dilakukan pelanggan. 
+  [https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)— Mendekripsi ciphertext dan kemudian mengenkripsi ulang sepenuhnya di dalam. AWS KMS Anda dapat menggunakan operasi ini untuk mengubah kunci KMS di mana data dienkripsi, seperti ketika Anda [memutar kunci KMS secara manual](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#rotate-keys-manually) atau mengubah kunci KMS yang melindungi ciphertext. Anda juga dapat menggunakannya untuk mengenkripsi ulang ciphertext di bawah kunci KMS yang sama, seperti untuk mengubah konteks [enkripsi](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) ciphertext. 

 Berikut ini adalah contoh pernyataan kebijakan yang dapat Anda tambahkan untuk Lokasi Amazon: 

```
"Statement" : [ 
    {
        "Sid" : "Allow access to principals authorized to use AWS Glue Data Quality",
        "Effect" : "Allow",
        "Principal" : {
            "AWS": "arn:aws:iam::<account_id>:role/ExampleRole"
        },
        "Action" : [ 
            "kms:Decrypt", 
            "kms:DescribeKey",
            "kms:GenerateDataKeyWithoutPlaintext",
            "kms:ReEncrypt*"
        ],
        "Resource" : "*",
        "Condition" : {
            "StringEquals" : {
                "kms:ViaService" : "glue.amazonaws.com",
                "kms:CallerAccount" : "111122223333"
            }
        },
    {
        "Sid": "Allow access for key administrators",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::111122223333:root"
          },
        "Action" : [ 
            "kms:*"
         ],
        "Resource": "arn:aws:kms:region:111122223333:key/key_ID"
    },
    {
        "Sid" : "Allow read-only access to key metadata to the account",
        "Effect" : "Allow",
        "Principal" : {
            "AWS" : "arn:aws:iam::111122223333:root"
        },
        "Action" : [ 
            "kms:Describe*",
            "kms:Get*",
            "kms:List*",
        ],
        "Resource" : "*"
    }
]
```

### Catatan tentang menggunakan Kunci KMS dalam Kualitas Data AWS Glue
<a name="data-quality-encryption-kms-keys-notes"></a>

 AWS Glue Data Quality tidak mendukung transisi kunci. Ini berarti bahwa jika Anda mengenkripsi aset Kualitas Data Anda dengan Kunci A dan memutuskan untuk beralih ke Kunci B, kami tidak akan mengenkripsi ulang data yang dienkripsi dengan Kunci A untuk menggunakan Kunci B. Anda masih dapat beralih ke Kunci B, tetapi perlu mempertahankan akses ke Kunci A untuk mengakses data yang sebelumnya dienkripsi dengan Kunci A. 

 Untuk informasi selengkapnya tentang menentukan izin dalam kebijakan, lihat [Izin untuk AWS layanan dalam kebijakan utama di Panduan Pengembang](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-services.html) AWS Key Management Service . 

 Untuk informasi selengkapnya tentang akses kunci pemecahan masalah, lihat [Memecahkan masalah akses kunci](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html) di Panduan Pengembang. AWS Key Management Service 

## Membuat konfigurasi keamanan
<a name="data-quality-encryption-create-security-configuration"></a>

 Di AWS Glue, [sumber daya Konfigurasi Keamanan](encryption-security-configuration.md) berisi properti yang diperlukan saat Anda menulis data terenkripsi. 

**Untuk mengenkripsi aset kualitas data Anda:**

1.  Di **Pengaturan enkripsi**, di bawah **Pengaturan lanjutan**, pilih **Aktifkan Enkripsi Kualitas Data** 

1.  Pilih tombol KMS Anda atau pilih **Buat AWS KMS ** kunci 

![\[Tangkapan layar menunjukkan halaman Tambahkan konfigurasi keamanan. Opsi DataQuality Enkripsi Aktifkan dipilih.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/data-quality-add-security-configuration.png)


## AWS Konteks enkripsi Kualitas Data Glue
<a name="data-quality-encryption-context"></a>

 [Konteks enkripsi](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) adalah kumpulan opsional pasangan kunci-nilai yang berisi informasi kontekstual tambahan tentang data. 

 AWS KMS menggunakan konteks enkripsi sebagai [data otentikasi tambahan](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#term-aad) untuk mendukung enkripsi yang [diautentikasi.](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#term-aad) Bila Anda menyertakan konteks enkripsi dalam permintaan untuk mengenkripsi data, AWS KMS mengikat konteks enkripsi ke data terenkripsi. Untuk mendekripsi data, Anda menyertakan konteks enkripsi yang sama dalam permintaan. 

### AWS Contoh konteks enkripsi Glue Data Quality
<a name="data-quality-encryption-context-example"></a>

```
"encryptionContext": {
    "kms-arn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
    "branch-key-id": "111122223333+arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
    "hierarchy-version": "1",
    "aws-crypto-ec:aws:glue:securityConfiguration": "111122223333:customer-security-configuration-name",
    "create-time": "2024-06-07T13:47:23:000861Z",
    "tablename": "AwsGlueMlEncryptionKeyStore",
    "type": "beacon:ACTIVE"
}
```

### Menggunakan konteks enkripsi untuk pemantauan
<a name="data-quality-encryption-context-monitoring"></a>

 Saat Anda menggunakan kunci terkelola pelanggan simetris untuk mengenkripsi pelacak atau koleksi geofence, Anda juga dapat menggunakan konteks enkripsi dalam catatan audit dan log untuk mengidentifikasi bagaimana kunci yang dikelola pelanggan digunakan. Konteks enkripsi juga muncul di log yang dihasilkan oleh AWS CloudTrail atau Amazon CloudWatch Logs. 

## Memantau kunci enkripsi Anda untuk AWS Glue Data Quality
<a name="data-quality-monitoring-encryption-keys"></a>

 Saat Anda menggunakan kunci yang dikelola AWS KMS pelanggan dengan sumber daya Kualitas Data AWS Glue Anda, Anda dapat menggunakan AWS CloudTrail atau Amazon CloudWatch Logs melacak permintaan yang AWS dikirimkan oleh Glue Data Quality AWS KMS. 

 Contoh berikut adalah AWS CloudTrail peristiwa untuk `GenerateDataKeyWithoutPlainText` dan `Decrypt` untuk memantau operasi KMS yang dipanggil oleh AWS Glue Data Quality untuk mengakses data yang dienkripsi oleh kunci yang dikelola pelanggan Anda. 

 **Dekripsi** 

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "arn": "arn:aws:sts::111122223333:role/CustomerRole",
        "accountId": "111122223333",
        "invokedBy": "glue.amazonaws.com"
    },
    "eventTime": "2024-07-02T20:03:10Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "glue.amazonaws.com",
    "userAgent": "glue.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "encryptionContext": {
            "kms-arn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
            "branch-key-id": "111122223333+arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
            "hierarchy-version": "1",
            "aws-crypto-ec:aws:glue:securityConfiguration": "111122223333:customer-security-configuration-name",
            "create-time": "2024-06-07T13:47:23:000861Z",
            "tablename": "AwsGlueMlEncryptionKeyStore",
            "type": "branch:ACTIVE",
            "version": "branch:version:ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE"
        }
    },
    "responseElements": null,
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

 **GenerateDataKeyWithoutPlaintext** 

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "arn": "arn:aws:sts::111122223333:role/CustomerRole",
        "accountId": "111122223333",
        "invokedBy": "glue.amazonaws.com"
    },
    "eventTime": "2024-07-02T20:03:10Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKeyWithoutPlaintext",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "glue.amazonaws.com",
    "userAgent": "glue.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "encryptionContext": {
            "kms-arn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
            "branch-key-id": "111122223333+arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
            "hierarchy-version": "1",
            "aws-crypto-ec:aws:glue:securityConfiguration": "111122223333:customer-security-configuration-name",
            "create-time": "2024-06-07T13:47:23:000861Z",
            "tablename": "AwsGlueMlEncryptionKeyStore",
            "type": "branch:version:ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE"
        }
    },
    "responseElements": null,
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

 **ReEncyrpt** 

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "arn": "arn:aws:sts::111122223333:role/CustomerRole",
        "accountId": "111122223333",
        "invokedBy": "glue.amazonaws.com"
    },
    "eventTime": "2024-07-17T21:34:41Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "ReEncrypt",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "glue.amazonaws.com",
    "userAgent": "glue.amazonaws.com",
    "requestParameters": {
        "destinationEncryptionContext": {
             "kms-arn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
            "branch-key-id": "111122223333+arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
            "hierarchy-version": "1",
            "aws-crypto-ec:aws:glue:securityConfiguration": "111122223333:customer-security-configuration-name",
            "create-time": "2024-06-07T13:47:23:000861Z",
            "tablename": "AwsGlueMlEncryptionKeyStore",
            "type": "branch:ACTIVE"
            "version": "branch:version:12345678-SAMPLE"
        },
        "destinationKeyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
        "sourceAAD": "1234567890-SAMPLE+Z+lqoYOHj7VtWxJLrvh+biUFbliYDAQkobM=",
        "sourceKeyId": "arn:aws:kms:ap-southeast-2:585824196334:key/17ca05ca-a8c1-40d7-b7fd-30abb569a53a",
        "destinationEncryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "sourceEncryptionContext": {
            "kms-arn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
            "branch-key-id": "111122223333+arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
            "hierarchy-version": "1",
            "aws-crypto-ec:aws:glue:securityConfiguration": "111122223333:customer-security-configuration-name",
            "create-time": "2024-06-07T13:47:23:000861Z",
            "tablename": "AwsGlueMlEncryptionKeyStore",
            "type": "branch:version:ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE"
        },
        "destinationAAD": "1234567890-SAMPLE",
        "sourceEncryptionAlgorithm": "SYMMETRIC_DEFAULT"
    },
    "responseElements": null,
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        },
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

## Pelajari selengkapnya
<a name="data-quality-encryption-learn-more"></a>

 Sumber daya berikut memberikan informasi lebih lanjut tentang enkripsi data saat istirahat. 
+  Untuk informasi selengkapnya tentang [konsep AWS Key Management Service dasar](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html), lihat Panduan AWS Key Management Service Pengembang. 
+  Untuk informasi selengkapnya tentang [praktik terbaik Keamanan](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html), AWS Key Management Service lihat Panduan AWS Key Management Service Pengembang. 

# Memecahkan masalah kesalahan Kualitas Data AWS Glue
<a name="data-quality-trouble"></a>

Jika Anda menemukan kesalahan dalam Kualitas Data AWS Glue, gunakan solusi berikut untuk membantu Anda menemukan sumber masalah dan memperbaikinya.

**Contents**
+ [

## Kesalahan: modul Kualitas Data AWS Glue hilang
](#data-quality-trouble-error-1)
+ [

## Kesalahan: izin AWS Lake Formation tidak mencukupi
](#data-quality-trouble-error-2)
+ [

## Kesalahan: rulesets tidak diberi nama unik
](#data-quality-trouble-error-3)
+ [

## Kesalahan: tabel dengan karakter khusus
](#data-quality-trouble-error-4)
+ [

## Kesalahan: kesalahan overflow dengan kumpulan aturan besar
](#data-quality-trouble-error-5)
+ [

## Kesalahan: status aturan keseluruhan gagal
](#data-quality-trouble-error-6)
+ [

## AnalysisException: Tidak dapat memverifikasi keberadaan basis data default
](#data-quality-trouble-error-7)
+ [

## Pesan Kesalahan: Peta kunci yang disediakan tidak cocok untuk bingkai data yang diberikan
](#data-quality-trouble-error-8)
+ [

## Pengecualian di Kelas Pengguna: java.lang. RuntimeException : Gagal mengambil data. Periksa log masuk CloudWatch untuk mendapatkan detail lebih lanjut
](#data-quality-trouble-error-9)
+ [

## LAUNCH ERROR: Kesalahan mengunduh dari S3 untuk ember
](#data-quality-trouble-error-10)
+ [

## InvalidInputException (status: 400): DataQuality aturan tidak dapat diuraikan
](#data-quality-trouble-error-11)
+ [

## Kesalahan: Eventbridge tidak memicu pekerjaan Glue DQ berdasarkan jadwal yang saya siapkan
](#data-quality-trouble-error-12)
+ [

## Kesalahan CustomSQL
](#data-quality-trouble-error-13)
+ [

## Aturan Dinamis
](#data-quality-trouble-error-14)
+ [

## Pengecualian di Kelas Pengguna: org.apache.spark.sql. AnalysisException: org.apache.hadoop.hive.ql.metadata. HiveException
](#data-quality-trouble-error-15)
+ [

## UNCLASSIFIED\$1ERROR; IllegalArgumentException: Kesalahan Penguraian: Tidak ada aturan atau penganalisis yang disediakan., tidak ada alternatif yang layak pada input
](#data-quality-trouble-error-16)

## Kesalahan: modul Kualitas Data AWS Glue hilang
<a name="data-quality-trouble-error-1"></a>

**Pesan kesalahan**: Tidak ada modul bernama 'awsgluedq'.

**Resolusi**: Kesalahan ini terjadi ketika Anda menjalankan AWS Glue Data Quality dalam versi yang tidak didukung. AWS Glue Data Quality hanya didukung di Glue versi 3.0 dan yang lebih baru.

## Kesalahan: izin AWS Lake Formation tidak mencukupi
<a name="data-quality-trouble-error-2"></a>

**Pesan kesalahan**: Pengecualian di Kelas Pengguna:: Izin Lake Formation tidak mencukupi pada impact\$1sdg\$1involvement (Layanan`com.amazonaws.services.glue.model.AccessDeniedException`:; Kode Status: 400; Kode Kesalahan:AWS Glue; ID Permintaan: 465ae693-b7ba-4df0-a4e4-6b17xxxxxxxx AccessDeniedException; Proxy: null).

**Resolusi**: Anda harus memberikan izin yang cukup di AWS Lake Formation.

## Kesalahan: rulesets tidak diberi nama unik
<a name="data-quality-trouble-error-3"></a>

**Pesan kesalahan**: Pengecualian di Kelas Pengguna:... services.glue.model. AlreadyExistsException: Aturan lain dengan nama yang sama sudah ada.

**Resolusi**: Aturan bersifat global dan harus unik.

## Kesalahan: tabel dengan karakter khusus
<a name="data-quality-trouble-error-4"></a>

**Pesan galat**: Pengecualian di Kelas Pengguna: org.apache.spark.sql. AnalysisException: tidak dapat menyelesaikan kolom masukan “C” yang diberikan: [primary.data\$1end\$1time, primary.data\$1start\$1time, primary.end\$1time, primary.last\$1updated, primary.message, primary.process\$1date, primary.rowhash, primary.run\$1by, primary.run\$1id, primary.start\$1time, primary.status]; baris 1 pos 44;.

**Resolusi**: Ada batasan saat ini bahwa AWS Glue Data Quality tidak dapat dijalankan pada tabel yang memiliki karakter khusus seperti “.”.

## Kesalahan: kesalahan overflow dengan kumpulan aturan besar
<a name="data-quality-trouble-error-5"></a>

**Pesan galat**: Pengecualian di Kelas Pengguna: java.lang. StackOverflowError.

**Resolusi**: Jika Anda memiliki aturan besar lebih dari aturan 2K, Anda mungkin mengalami masalah ini. Pecahkan aturan Anda menjadi beberapa aturan.

## Kesalahan: status aturan keseluruhan gagal
<a name="data-quality-trouble-error-6"></a>

**Kondisi kesalahan**: Set Aturan Saya berhasil, tetapi status aturan keseluruhan saya gagal.

**Resolusi**: Kesalahan ini kemungkinan besar terjadi karena Anda memilih opsi untuk menerbitkan metrik ke Amazon CloudWatch saat menerbitkan. Jika kumpulan data Anda ada dalam VPC, VPC Anda mungkin tidak mengizinkan AWS Glue mempublikasikan metrik ke Amazon. CloudWatch Dalam hal ini, Anda> harus menyiapkan titik akhir untuk VPC Anda untuk mengakses Amazon. CloudWatch

## AnalysisException: Tidak dapat memverifikasi keberadaan basis data default
<a name="data-quality-trouble-error-7"></a>

 **Kondisi kesalahan**: AnalysisException: Tidak dapat memverifikasi keberadaan database default: com.amazonaws.services.glue.model. AccessDeniedException: Izin Lake Formation tidak mencukupi secara default (Layanan:AWS Glue; Kode Status: 400; Kode Kesalahan:; ID Permintaan: XXXXXXXX-XXXX-XXXX-XXXX -XXXXXXXXXXXX AccessDeniedException; Proxy: null) 

**Resolusi**: Dalam integrasi katalog AWS Glue pekerjaan, AWS Glue selalu mencoba untuk memeriksa apakah database default ada atau tidak menggunakan AWS Glue`GetDatabase API`. Ketika izin `DESCRIBE` Lake Formation tidak diberikan, atau `GetDatabase IAM` izin diberikan, maka pekerjaan gagal saat memverifikasi keberadaan database default. 

 Untuk menyelesaikan: 

1.  Tambahkan `DESCRIBE` izin di Lake Formation untuk database default. 

1.  Konfigurasikan peran IAM yang dilampirkan ke AWS Glue pekerjaan sebagai Pembuat Database di Lake Formation. Ini akan secara otomatis membuat database default dan memberikan izin Lake Formation yang diperlukan untuk peran tersebut. 

1.  Nonaktifkan `--enable-data-catalog` opsi. (Ini ditampilkan sebagai **Use Data Catalog as the Hive metastore** di). AWS Glue Studio 

   Jika Anda tidak memerlukan Data Catalog integrasi Spark SQL dalam pekerjaan, Anda dapat menonaktifkannya.

## Pesan Kesalahan: Peta kunci yang disediakan tidak cocok untuk bingkai data yang diberikan
<a name="data-quality-trouble-error-8"></a>

 **Kondisi kesalahan**: Peta kunci yang disediakan tidak cocok untuk bingkai data yang diberikan. 

 **Resolusi**: Anda menggunakan **DataSetMatch**ruletype dan tombol join memiliki duplikat. Kunci bergabung Anda harus unik dan tidak boleh NULL. Jika Anda tidak dapat memiliki kunci gabungan yang unik, pertimbangkan untuk menggunakan tipe aturan lain seperti **AggregateMatch**untuk mencocokkan data ringkasan. 

## Pengecualian di Kelas Pengguna: java.lang. RuntimeException : Gagal mengambil data. Periksa log masuk CloudWatch untuk mendapatkan detail lebih lanjut
<a name="data-quality-trouble-error-9"></a>

 **Kondisi kesalahan**: Pengecualian di Kelas Pengguna: java.lang. RuntimeException : Gagal mengambil data. Periksa log masuk CloudWatch untuk mendapatkan detail lebih lanjut. 

 **Resolusi**: Ini terjadi ketika Anda membuat aturan DQ pada tabel berbasis Amazon S3 yang dibandingkan dengan Amazon RDS atau. Amazon Redshift Dalam kasus ini, AWS Glue tidak dapat memuat koneksi. Sebagai gantinya, cobalah untuk mengatur aturan DQ pada Amazon Redshift atau kumpulan data Amazon RDS. Ini adalah bug yang diketahui. 

## LAUNCH ERROR: Kesalahan mengunduh dari S3 untuk ember
<a name="data-quality-trouble-error-10"></a>

 **Kondisi kesalahan**: LAUNCH ERROR: Kesalahan mengunduh dari S3 untuk ember:`aws-glue-ml-data-quality-assets-us-east-1, key: jars/aws-glue-ml-data-quality-etl.jar.Access Denied (Service: Amazon S3; Status Code: 403; Please refer logs for details) `. 

 **Resolusi**: Izin dalam peran yang diteruskan ke AWS Glue Data Quality harus mengizinkan pembacaan dari lokasi Amazon S3 sebelumnya. Kebijakan IAM ini harus dilampirkan pada peran: 

```
{
  "Sid": "allowS3",
  "Effect": "Allow",
  "Action": "s3:GetObject",
  "Resource": "arn:aws:s3:::aws-glue-ml-data-quality-assets-<region>/*"
}
```

 Lihat [otorisasi Kualitas Data](https://docs.aws.amazon.com/glue/latest/dg/data-quality-authorization.html) untuk izin terperinci. Pustaka ini diperlukan untuk mengevaluasi kualitas data untuk kumpulan data Anda. 

## InvalidInputException (status: 400): DataQuality aturan tidak dapat diuraikan
<a name="data-quality-trouble-error-11"></a>

 **Kondisi kesalahan**: InvalidInputException (status: 400): DataQuality aturan tidak dapat diuraikan. 

 **Resolusi**: Ada banyak kemungkinan untuk kesalahan ini. Salah satu kemungkinan adalah bahwa aturan Anda mungkin memiliki tanda kutip tunggal. Verifikasi bahwa mereka berada dalam tanda kutip ganda. Contoh: 

```
Rules = [
ColumnValues "tipo_vinculo" in ["CODO", "DOCO", "COCO", "DODO"] AND "categoria" = 'ES"
    AND "cod_bandera" = 'CEP'
```

 Ubah ini menjadi: 

```
Rules = [
(ColumnValues "tipovinculo" in [ "CODO", "DOCO", "COCO", "DODO"]) AND (ColumnValues "categoria" = "ES") 
    AND (ColumnValues "codbandera" = "CEP")
]
```

## Kesalahan: Eventbridge tidak memicu pekerjaan Glue DQ berdasarkan jadwal yang saya siapkan
<a name="data-quality-trouble-error-12"></a>

 **Kondisi kesalahan**: Eventbridge tidak AWS Glue Data Quality memicu pekerjaan berdasarkan jadwal yang saya siapkan. 

 **Resolusi**: Peran yang memicu pekerjaan mungkin tidak memiliki izin yang tepat. Pastikan bahwa peran yang Anda gunakan untuk memulai pekerjaan memiliki izin yang disebutkan dalam [penyiapan IAM yang diperlukan untuk evaluasi penjadwalan berjalan](https://docs.aws.amazon.com/glue/latest/dg/data-quality-authorization.html#data-quality-iam-setup-evaluation-runs). 

## Kesalahan CustomSQL
<a name="data-quality-trouble-error-13"></a>

**Kondisi kesalahan**:` The output from CustomSQL must contain at least one column that matches the input dataset for AWS Glue Data Quality to provide row level results. The SQL query is a valid query but no columns from the SQL result are present in the Input Dataset. Ensure that matching columns are returned from the SQL`.

 **Resolusi**: Kueri SQL valid tetapi verifikasi bahwa Anda hanya memilih kolom dari tabel utama. Memilih fungsi agregat seperti jumlah, mengandalkan kolom dari primer dapat mengakibatkan kesalahan ini. 



**Kondisi kesalahan**:` There was a problem when executing your SQL statement: cannot resolve "Col"`.

 **Resolusi**: Kolom ini tidak ada di tabel utama. 



**Kondisi kesalahan**:` The columns that are returned from the SQL statement should only belong to the primary table. "In this case, some columns ( Col ) belong to reference table"`. 

 **Resolusi**: Dalam kueri SQL saat Anda bergabung dengan tabel primer dengan tabel referensi lainnya, verifikasi bahwa pernyataan pilih Anda hanya memiliki nama kolom dari tabel utama Anda untuk menghasilkan hasil tingkat baris untuk tabel utama. 

## Aturan Dinamis
<a name="data-quality-trouble-error-14"></a>

 **Kondisi kesalahan**`: Dynamic rules require job context, and cannot be evaluated in interactive session or data preview.`.

**Penyebab:** Pesan galat ini mungkin muncul di hasil pratinjau data Anda, atau di sesi interaktif lainnya, saat aturan DQ dinamis ada di kumpulan aturan Anda. Aturan dinamis mengacu pada metrik historis yang terkait dengan nama pekerjaan dan konteks evaluasi tertentu, sehingga tidak dapat dievaluasi dalam sesi interaktif. 

 **Resolusi**: Menjalankan AWS Glue pekerjaan Anda akan menghasilkan metrik historis, yang dapat direferensikan dalam pekerjaan selanjutnya untuk pekerjaan yang sama. 

 **Kondisi kesalahan**: 
+  ` [RuleType] rule only supports simple atomic operands in thresholds.`. 
+  `Function last not yet implemented for [RuleType] rule.` 

 **Resolusi**[: Aturan dinamis umumnya didukung untuk semua tipe aturan DQDL dalam ekspresi numerik (lihat Referensi DQDL).](dqdl.md) Namun, beberapa aturan yang menghasilkan beberapa metrik, ColumnValues dan ColumnLength, belum didukung. 

**Kondisi kesalahan**:` Binary expression operands must resolve to a single number.`. 

**Penyebab**: Aturan dinamis mendukung ekspresi biner, seperti`RowCount > avg(last(5)) * 0.9`. Di sini, ekspresi biner adalah`avg(last(5)) * 0.9`. Aturan ini valid karena kedua operan `avg(last(5))` dan `0.9` penyelesaian ke nomor tunggal. Contoh yang salah adalah`RowCount > last(5) * 0.9`, karena `last(5)` akan menghasilkan daftar yang tidak dapat dibandingkan secara bermakna dengan jumlah baris saat ini. 

 **Resolusi**: Gunakan fungsi agregasi untuk mengurangi operan bernilai daftar menjadi satu nomor. 

**Kondisi kesalahan**:
+  `Rule threshold results in list, and a single value is expected. Use aggregation functions to produce a single value. Valid example: sum(last(10)), avg(last(10)).` 
+  `Rule threshold results in empty list, and a single value is expected.` 

**Penyebab**: Aturan dinamis dapat digunakan untuk membandingkan beberapa fitur kumpulan data Anda dengan nilai historisnya. Fungsi terakhir memungkinkan untuk pengambilan beberapa nilai historis, jika argumen integer positif disediakan. Misalnya, `last(5)` akan mengambil lima nilai terbaru terakhir yang diamati dalam menjalankan pekerjaan untuk aturan Anda. 

 **Resolusi**: Fungsi agregasi harus digunakan untuk mengurangi nilai-nilai ini menjadi satu angka untuk membuat perbandingan yang berarti dengan nilai yang diamati dalam menjalankan pekerjaan saat ini. 

Contoh yang valid:
+ `RowCount >= avg(last(5))`
+ `RowCount > last(1)`
+ `RowCount < last()`

Contoh tidak valid:. `RowCount > last(5)`

**Kondisi kesalahan**:
+  `Function index used in threshold requires positive integer argument.` 
+  `Index argument must be an integer. Valid syntax example: RowCount > index(last(10, 2)), which means RowCount must be greater than third most recent execution from last 10 job runs.` 

 **Resolusi**: Saat membuat aturan dinamis, Anda dapat menggunakan fungsi `index` agregasi untuk memilih satu nilai historis dari daftar. Misalnya`RowCount > index(last(5)`, 1) akan memeriksa apakah jumlah baris yang diamati dalam pekerjaan saat ini benar-benar lebih besar daripada jumlah baris terbaru kedua yang diamati untuk pekerjaan Anda. `index`diindeks nol. 

**Kondisi kesalahan**:` IllegalArgumentException: Parsing Error: Rule Type: DetectAnomalies is not valid`. 

 **Resolusi**: Deteksi anomali hanya tersedia di AWS Glue 4.0. 

**Kondisi kesalahan**:` IllegalArgumentException: Parsing Error: Unexpected condition for rule of type ... no viable alternative at input ...`. 

 Catatan: `...` dinamis. Contoh:`IllegalArgumentException: Parsing Error: Unexpected condition for rule of type RowCount with number return type, line 4:19 no viable alternative at input '>last'`. 

 **Resolusi**: Deteksi anomali hanya tersedia di AWS Glue 4.0. 

## Pengecualian di Kelas Pengguna: org.apache.spark.sql. AnalysisException: org.apache.hadoop.hive.ql.metadata. HiveException
<a name="data-quality-trouble-error-15"></a>

 **Kondisi kesalahan** `: Exception in User Class: org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to fetch table mailpiece_submitted. StorageDescriptor#InputFormat cannot be null for table: mailpiece_submitted (Service: null; Status Code: 0; Error Code: null; Request ID: null; Proxy: null)` 

 **Penyebab:** Anda menggunakan Apache Iceberg di AWS Glue Data Catalog dan atribut Format Input di AWS Glue Data Catalog kosong. 

 **Resolusi**: Masalah ini terjadi ketika Anda menggunakan CustomSQL ruletype dalam aturan DQ Anda. Salah satu cara untuk memperbaikinya adalah dengan menggunakan “primer “atau menambahkan nama katalog `glue_catalog.` ke`<database>.<table> in Custom ruletype`. 

## UNCLASSIFIED\$1ERROR; IllegalArgumentException: Kesalahan Penguraian: Tidak ada aturan atau penganalisis yang disediakan., tidak ada alternatif yang layak pada input
<a name="data-quality-trouble-error-16"></a>

 **Kondisi kesalahan** `: UNCLASSIFIED_ERROR; IllegalArgumentException: Parsing Error: No rules or analyzers provided., no viable alternative at input` 

 **Resolusi**: DQDL tidak dapat diurai. Ada beberapa contoh di mana ini bisa terjadi. Jika Anda menggunakan aturan komposit, pastikan mereka memiliki tanda kurung yang tepat. 

```
(RowCount >= avg(last(10)) * 0.6) and (RowCount <= avg(last(10)) * 1.4) instead of
      RowCount >= avg(last(10)) * 0.6 and RowCount <= avg(last(10)) * 1.4
```