Referensi Bahasa Definisi Kualitas Data (DQDL) - AWS Glue

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

Referensi Bahasa Definisi Kualitas Data (DQDL)

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.

catatan

DynamicRules hanya didukung di AWS Glue ETL.

Sintaks DQDL

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

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

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

RuleTypeadalah 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

Aturan komposit

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

and

andOperator logis menghasilkan true if dan hanya jika aturan yang menghubungkannyatrue. Jika tidak, aturan gabungan menghasilkanfalse. 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

orOperator logis menghasilkan true jika dan hanya jika satu atau lebih aturan yang menghubungkannyatrue. 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")

Namun, Anda tidak dapat menggabungkan operator logis menjadi satu ekspresi. Misalnya, kombinasi berikut tidak diperbolehkan.

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

Cara kerja aturan Komposit

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" } """ ) ) }

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

catatan

Ekspresi, not dan tidak != didukung dalam AWS Glue Data Catalog.

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.
Completeness "colA" = "1.0", ColumnValues "colA" = "2022-06-30"
! = x x Menyelesaikan ke true jika respon tipe aturan tidak sama dengan x.
ColumnValues "colA" != "a", ColumnValues "colA" != "2022-06-30"
> x Menyelesaikan true jika respons tipe aturan lebih besar dari x.
ColumnValues "colA" > 10
< x Menyelesaikan true jika respons tipe aturan kurang dari x.
ColumnValues "colA" < 1000, ColumnValues "colA" < "2022-06-30"
>= x Menyelesaikan true jika respons tipe aturan lebih besar dari atau sama dengan x.
ColumnValues "colA" >= 10
<= x Menyelesaikan true jika respons tipe aturan kurang dari atau sama dengan x.
ColumnValues "colA" <= 1000
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.
Mean "colA" between 8 and 100, ColumnValues "colA" between "2022-05-31" and "2022-06-30"
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.
ColumnValues "colA" not between "2022-05-31" and "2022-06-30"
di [a, b, c,... ] Menyelesaikan true jika respons tipe aturan ada di set yang ditentukan.
ColumnValues "colA" in [ 1, 2, 3 ], ColumnValues "colA" in [ "a", "b", "c" ]
tidak di [a, b, c,... ] Menyelesaikan true jika respons tipe aturan tidak ada dalam set yang ditentukan.
ColumnValues "colA" not in [ 1, 2, 3 ], ColumnValues "colA" not in [ "a", "b", "c" ]
cocok /ab+c/i Menyelesaikan true jika respons tipe aturan cocok dengan ekspresi reguler.
ColumnValues "colA" matches "[a-zA-Z]*"
tidak cocok /ab+c/i Menyelesaikan true jika respons tipe aturan tidak cocok dengan ekspresi reguler.
ColumnValues "colA" not matches "[a-zA-Z]*"
now() Bekerja hanya dengan jenis ColumnValues aturan untuk membuat ekspresi tanggal.
ColumnValues "load_date" > (now() - 3 days)
pertandingan/di [...] /tidak cocok/tidak di [...] with threshold Menentukan persentase nilai yang cocok dengan kondisi aturan. Bekerja hanya denganColumnValues,ColumnDataType, dan jenis CustomSQL aturan.
ColumnValues "colA" in ["A", "B"] with threshold > 0.8, ColumnValues "colA" matches "[a-zA-Z]*" with threshold between 0.2 and 0.9 ColumnDataType "colA" = "Timestamp" with threshold > 0.9

Kata kunci untuk NULL, EMPTY dan WHITESPACES_ONLY

catatan

Kata kunci untuk NULL, EMPTY dan WHITESPACES_ONLY tidak didukung di Glue Data Catalog. AWS

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.5akan 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_ONLY/whitespaces_only — 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:

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 nol.

    (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:

Aturan dinamis

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 terakhirk.

  • 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 gunakanlast(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 terakhirk. i idiindeks 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, untuk menentukan apakah aturan dinamis didukung untuk jenis aturan Anda.

Analisa

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

  • DistinctValuesCountanalyzer untuk mencatat jumlah nilai yang berbeda di kolom dataset Name

  • ColumnLengthanalyzer 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" ]

Komentar

Anda dapat menggunakan karakter '#' untuk menambahkan komentar ke dokumen DQDL Anda. Apa pun setelah karakter '#' 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

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

Tipe aturan Deskripsi Pendapat Metrik yang Dilaporkan Didukung sebagai Aturan? Didukung sebagai Analyzer? Mengembalikan Hasil tingkat baris? Dukungan aturan dinamis? Menghasilkan Pengamatan
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
AllStatistics Penganalisis mandiri untuk mengumpulkan beberapa metrik untuk kolom yang disediakan, atau semua kolom dalam kumpulan data. Nama kolom tunggal, ATAU "AllColumns”

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
ColumnCorrelation Memeriksa seberapa baik dua kolom dikorelasikan. Tepat dua nama kolom Multicolumn.[Column1],[Column2].ColumnCorrelation Ya Ya Tidak Ya Tidak
ColumnCount Memeriksa apakah ada kolom yang dijatuhkan. Tidak ada Dataset.*.ColumnCount Ya Tidak Tidak Ya Ya
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
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
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
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.*.ColumnNamesPatternMatchRatio Ya 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 Tidak Ya, ketika ambang batas tingkat baris disediakan Tidak Ya. Hanya menghasilkan pengamatan dengan menganalisis nilai Minimum dan Maksimum
Kelengkapan Memeriksa kosong atau NULL dalam data. Tepat satu nama kolom

Column.[Column].Completeness

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 Ya Ya, ketika ambang batas tingkat baris disediakan Ya Tidak
DataFreshness Memeriksa apakah data masih segar. Tepat satu nama kolom Column.[Column].DataFreshness.Compliance Ya Tidak Ya Tidak Tidak
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
DistinctValuesCount Memeriksa nilai duplikat. Tepat satu nama kolom Column.[Column].DistinctValuesCount 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
Entropi Memeriksa entropi data. Tepat satu nama kolom Column.[Column].Entropy Ya Ya Tidak Ya Tidak
IsComplete Memeriksa apakah 100% data selesai. Tepat satu nama kolom Column.[Column].Completeness Ya Tidak Ya Tidak Tidak
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
IsUnique Memeriksa apakah 100% data unik. Tepat satu nama kolom Column.[Column].Uniqueness Ya Tidak Ya Tidak Tidak
Berarti Memeriksa apakah mean cocok dengan ambang batas yang ditetapkan. Tepat satu nama kolom Column.[Column].Mean Ya Ya Ya Ya Tidak
ReferentialIntegrity Memeriksa apakah dua kumpulan data memiliki integritas referensial.

Satu atau beberapa nama kolom dari dataset

Satu atau lebih nama columb dari dataset referensi

Column.[ReferenceDatasetAlias].ReferentialIntegrity Ya Tidak Ya Ya Tidak
RowCount Memeriksa apakah jumlah catatan cocok dengan ambang batas. Tidak ada Dataset.*.RowCount Ya Ya Tidak Ya Ya
RowCountMatch Memeriksa apakah jumlah rekaman antara dua kumpulan data cocok. Alias dataset referensi Dataset.[ReferenceDatasetAlias].RowCountMatch Ya Tidak Tidak Ya Tidak
StandardDeviation Memeriksa apakah standar deviasi cocok dengan ambang batas. Tepat satu nama kolom Column.[Column].StandardDeviation Ya Ya Ya Ya Tidak
SchemaMatch Memeriksa apakah skema antara dua kumpulan data cocok. Alias dataset referensi Dataset.[ReferenceDatasetAlias].SchemaMatch Ya Tidak Tidak Ya Tidak
Jumlah Memeriksa apakah jumlah cocok dengan ambang batas yang ditetapkan. Tepat satu nama kolom Column.[Column].Sum Ya Ya Tidak Ya Tidak
Keunikan Memeriksa apakah keunikan kumpulan data cocok dengan ambang batas. Tepat satu nama kolom Column.[Column].Uniqueness Ya Ya Ya Ya Tidak
UniqueValueRatio Memeriksa apakah ransum nilai unik cocok dengan ambang batas. Tepat satu nama kolom Column.[Column].UniqueValueRatio Ya Ya Ya Ya Tidak

AggregateMatch

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

ColumnExists <AGG_OPERATION> (<OPTIONAL_REFERENCE_ALIAS>.<COL_NAME>)
  • AGG_OPERATION — Operasi yang digunakan untuk agregasi. Saat ini, sum dan avg didukung.

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

  • OPTIONAL_REFERENCE_ALIAS - Parameter ini perlu disediakan jika kolom berasal dari kumpulan data referensi dan bukan kumpulan data utama. <database_name>Jika Anda menggunakan aturan ini di Katalog Data AWS Glue, alias referensi Anda harus mengikuti format ". <table_name>. <column_name>

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

  • COL_NAME — 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 kumpulan data referensi

"avg(reference.rating)"

Aturan

AggregateMatch <AGG_EXP_1> <AGG_EXP_2> <EXPRESSION>
  • AGG_EXP_1 - 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_EXP_2 - 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.

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

AggregateMatchAturan akan mengabaikan baris dengan nilai NULL dalam perhitungan metode agregasi (jumlah/mean). Misalnya:

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

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

ColumnCorrelation

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_1_NAME — Nama kolom pertama yang ingin Anda evaluasi terhadap aturan kualitas data.

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

  • COL_2_NAME — 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.

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

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

ColumnCorrelationAturan akan mengabaikan baris dengan NULL nilai dalam perhitungan korelasi. Misalnya:

+---+-----------+ |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

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.

Contoh: Cek 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

Memeriksa tipe data inheren dari nilai-nilai dalam kolom tertentu terhadap jenis yang diharapkan disediakan. Menerima with threshold ekspresi untuk memeriksa subset nilai di kolom.

Sintaksis

ColumnDataType <COL_NAME> = <EXPECTED_TYPE> ColumnDataType <COL_NAME> = <EXPECTED_TYPE> with threshold <EXPRESSION>
  • COL_NAME — 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_TYPE — 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, sebenarnya 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% dari nilai-nilai dalam kolom yang diberikan, yang bertipe string, sebenarnya bilangan bulat.

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

ColumnExists

Memeriksa apakah kolom ada.

Sintaksis

ColumnExists <COL_NAME>
  • COL_NAME — 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

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

Sintaksis

ColumnLength <COL_NAME><EXPRESSION>
  • COL_NAME — 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.

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

Perilaku nol

ColumnLengthAturan 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 != NULL)

ColumnNamesMatchPattern

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_”

ColumnNamesMatchPattern "aws_.*"

ColumnValues

Menjalankan ekspresi terhadap nilai-nilai dalam kolom.

Sintaksis

ColumnValues <COL_NAME> <EXPRESSION>
  • COL_NAME — 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.

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 ]

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 != danNOT 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. Misalnya:

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

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

Sintaksis

Completeness <COL_NAME> <EXPRESSION>
  • COL_NAME — 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.

Contoh: Persentase nilai nol

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

Completeness "First_Name" > 0.95

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 sepertiInt, baris kosong akan dikenali sebagai NULL dan akan gagal Completeness aturan.

CustomSQL

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_STATEMENT — 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.

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

primaryAlias 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 harus mengembalikan catatan yang merupakan bagian dari tabel utama yang Anda evaluasi kualitas data. Catatan yang dikembalikan sebagai bagian dari kueri dianggap berhasil dan catatan yang tidak dikembalikan dianggap gagal.

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

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_NAME — 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

DataFreshnessAturan 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 denganNULL.

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

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

DatasetMatch

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 DataSetMatchagar 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 AggregateMatchuntuk mencocokkan data ringkasan.

Sintaksis

DatasetMatch <REFERENCE_DATASET_ALIAS> <JOIN CONDITION WITH MAPPING> <OPTIONAL_MATCH_COLUMN_MAPPINGS> <EXPRESSION>
  • REFERENCE_DATASET_ALIAS — Alias dari dataset referensi yang Anda gunakan untuk membandingkan data dari kumpulan data utama.

  • KEY_COLUMN_MAPPINGS - 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_MATCH_COLUMN_MAPPINGS - 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.

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_1dan ID_2 bersama-sama membentuk kunci komposit dalam dataset primer. ID_ref1dan 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_ref2->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_ref2->ID_ref2" "Amount1->Amount2" >= 0.9

DistinctValuesCount

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

Sintaksis

DistinctValuesCount <COL_NAME> <EXPRESSION>
  • COL_NAME — 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.

Contoh: Jumlah nilai kolom yang berbeda

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

DistinctValuesCount "State" > 3

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

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_NAME — 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.

Contoh: Entropi kolom

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

Entropy "Star_Rating" > 1

Contoh aturan dinamis

  • Entropy "colA" < max(last(10))

  • Entropy "colA" between min(last(10)) and max(last(10))

IsComplete

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

Sintaksis

IsComplete <COL_NAME>
  • COL_NAME — 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"

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 sepertiInt, baris kosong akan dikenali sebagai NULL dan akan gagal Completeness aturan.

IsPrimaryKey

Memeriksa apakah kolom berisi kunci utama. Kolom berisi kunci primer jika semua nilai dalam kolom unik dan lengkap (non-null).

Sintaksis

IsPrimaryKey <COL_NAME>
  • COL_NAME — 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"

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

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

IsUnique

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

Sintaksis

IsUnique <COL_NAME>
  • COL_NAME — Nama kolom yang ingin Anda evaluasi terhadap aturan kualitas data.

    Jenis kolom yang didukung: Tipe kolom apa pun

Contoh: Nilai kolom unik

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

IsUnique "email"

Berarti

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

Sintaksis

Mean <COL_NAME> <EXPRESSION>
  • COL_NAME — 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.

Contoh: Nilai rata-rata

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

Mean "Star_Rating" > 3

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

MeanAturan akan mengabaikan baris dengan NULL nilai dalam perhitungan mean. Misalnya:

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

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

ReferentialIntegrity

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_COLS — Daftar nama kolom yang dipisahkan koma dalam kumpulan data utama.

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

  • REFERENCE_DATASET_COLS — 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.

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

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.

Contoh: Cek numerik hitungan baris

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

RowCount between 10 and 100

Contoh aturan dinamis

RowCount > avg(lats(10)) *0.8

RowCountMatch

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_DATASET_ALIAS — 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.

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

Memeriksa standar deviasi dari semua nilai dalam kolom terhadap ekspresi yang diberikan.

Sintaksis

StandardDeviation <COL_NAME> <EXPRESSION>
  • COL_NAME — 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.

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

Contoh aturan dinamis

  • StandardDeviation "colA" > avg(last(10) + 0.1

  • StandardDeviation "colA" between min(last(10)) - 1 and max(last(10)) + 1

Perilaku nol

StandardDeviationAturan akan mengabaikan baris dengan NULL nilai dalam perhitungan standar deviasi. Misalnya:

+---+-----------+-----------+ |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

Memeriksa jumlah semua nilai dalam kolom terhadap ekspresi yang diberikan.

Sintaksis

Sum <COL_NAME> <EXPRESSION>
  • COL_NAME — 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.

Contoh: Jumlah

Contoh aturan berikut memeriksa apakah jumlah semua nilai dalam kolom melebihi ambang batas yang diberikan.

Sum "transaction_total" > 500000

Contoh aturan dinamis

  • Sum "ColA" > avg(last(10))

  • Sum "colA" between min(last(10)) - 1 and max(last(10)) + 1

Perilaku nol

SumAturan akan mengabaikan baris dengan NULL nilai dalam perhitungan jumlah. Misalnya:

+---+-----------+ |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 + 20 + 40) = 60.

SchemaMatch

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_DATASET_ALIAS — 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.

Contoh: SchemaMatch

Contoh aturan berikut memeriksa apakah skema dataset utama sama persis dengan skema dataset referensi.

SchemaMatch "reference" = 1.0

Keunikan

Memeriksa persentase nilai unik dalam kolom terhadap ekspresi yang diberikan. Nilai unik terjadi tepat sekali.

Sintaksis

Uniqueness <COL_NAME> <EXPRESSION>
  • COL_NAME — 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.

Contoh: Persentase keunikan

Contoh aturan berikut memeriksa apakah persentase nilai unik dalam kolom cocok dengan kriteria numerik tertentu.

Uniqueness "email" = 1.0

Contoh aturan dinamis

  • Uniqueness "colA" between min(last(10)) and max(last(10))

  • Uniqueness "colA" >= avg(last(10))

UniqueValueRatio

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 (adanb). Jadi rasio nilai unik dari himpunan adalah ½ = 0,5.

Sintaksis

UniqueValueRatio <COL_NAME> <EXPRESSION>
  • COL_NAME — 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.

Contoh: Rasio nilai unik

Contoh ini memeriksa rasio nilai unik kolom terhadap rentang nilai.

UniqueValueRatio "test_score" between 0 and 0.5

Contoh aturan dinamis

  • UniqueValueRatio "colA" > avg(last(10))

  • UniqueValueRatio "colA" <= index(last(10),2) + std(last(5))

DetectAnomalies

Mendeteksi anomali untuk aturan Deequ 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"

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"