View a markdown version of this page

Referensi Bahasa Definisi Kualitas Data (DQDL) - AWS Lem

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 DQDL utama untuk membantu Anda memahami bahasa. Ini juga menyediakan referensi untuk jenis aturan DQDL dengan sintaks dan contoh. Sebelum Anda menggunakan panduan ini, kami sarankan Anda terbiasa dengan Kualitas Data AWS Lem. 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 membangun kumpulan aturan, Anda harus membuat daftar bernama Rules (huruf besar), dibatasi oleh sepasang tanda kurung persegi. 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 ini disebut aturan komposit.

and

andOperator logis menghasilkan true jika dan hanya jika aturan yang dihubungkan adalahtrue. 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 dihubungkan adalahtrue. 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 bersarang yang lebih kompleks.

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

Cara kerja aturan Komposit

Secara default, Aturan Komposit dievaluasi sebagai aturan individual di seluruh dataset atau tabel dan kemudian hasilnya digabungkan. Dengan kata lain, ia 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-tama evaluasi (ColumnValues "myCol1" > 1) yang akan mengakibatkan kegagalan. Kemudian akan mengevaluasi (ColumnValues "myCol2" > 2) mana yang juga akan gagal. Kombinasi dari 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 Katalog Data AWS Glue, Anda dapat dengan mudah mengkonfigurasi opsi ini di antarmuka pengguna seperti yang ditunjukkan di bawah ini.

Tangkapan layar menunjukkan jendela pengaturan aturan komposit tempat Anda dapat memilih konfigurasi evaluasi aturan antara baris dan kolom. Jika Anda memilih Baris, aturan komposit akan berperilaku sebagai aturan tunggal mengevaluasi seluruh baris. Jika Anda memilih Kolom, aturan komposit akan mengevaluasi aturan individual di seluruh dataset dan menggabungkan hasilnya.

Setelah ditetapkan, aturan komposit akan berperilaku sebagai aturan tunggal 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 mengandalkan rasio:

  • Kelengkapan

  • DatasetMatch

  • ReferentialIntegrity

  • Keunikan

Aturan tergantung pada ambang batas:

Ketika aturan berikut menyertakan dengan ambang batas, mereka tidak didukung. Namun, aturan yang tidak melibatkan with threshold tetap didukung.

  • ColumnDataType

  • ColumnValues

  • CustomSQL

Ekspresi

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 denganx.
Completeness "colA" = "1.0", ColumnValues "colA" = "2022-06-30"
!=x x Menyelesaikan menjadi true jika respons tipe aturan tidak sama denganx.
ColumnValues "colA" != "a", ColumnValues "colA" != "2022-06-30"
> x Menyelesaikan true jika respons tipe aturan lebih besar darix.
ColumnValues "colA" > 10
< x Menyelesaikan true jika respons tipe aturan kurang darix.
ColumnValues "colA" < 1000, ColumnValues "colA" < "2022-06-30"
>= x Menyelesaikan true jika respons tipe aturan lebih besar dari atau sama denganx.
ColumnValues "colA" >= 10
<= x Menyelesaikan true jika respons tipe aturan kurang dari atau sama denganx.
ColumnValues "colA" <= 1000
antara x dan y Menyelesaikan true jika respons tipe aturan jatuh dalam rentang tertentu (eksklusif). Hanya gunakan tipe 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 menjadi true jika respons tipe aturan tidak termasuk dalam rentang yang ditentukan (inklusif). Anda hanya boleh menggunakan jenis 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 dalam kumpulan 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 kumpulan yang ditentukan.
ColumnValues "colA" not in [ 1, 2, 3 ], ColumnValues "colA" not in [ "a", "b", "c" ]
korek api /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 tipe ColumnValues aturan untuk membuat ekspresi tanggal.
ColumnValues "load_date" > (now() - 3 days)
matches/in [...] /tidak matches/not di [...] with threshold Menentukan persentase nilai yang cocok dengan kondisi aturan. Hanya bekerja dengan tipe ColumnValuesColumnDataType,, dan 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

Jika Anda ingin memvalidasi jika kolom string memiliki null, kosong atau string dengan hanya spasi putih, Anda dapat menggunakan kata kunci berikut:

  • NULL/null — Kata kunci ini diselesaikan menjadi 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 null.

    (ColumnValues "colA" = NULL) or (ColumnLength "colA" > 5)akan mengembalikan true untuk semua baris yang memiliki nilai null atau memiliki panjang >5. Perhatikan bahwa ini akan membutuhkan penggunaan opsi “compositeRuleEvaluation.method” = “ROW”.

  • EMPTY/empty — Kata kunci ini dipecahkan ke 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 diselesaikan menjadi true untuk string dengan hanya nilai spaces (“”) 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 diselesaikan menjadi 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 membutuhkan penggunaan opsi “compositeRuleEvaluation.method” = “ROW”.

    Aturan yang didukung:

Penyaringan dengan Where Clause

catatan

Dimana Klausa hanya didukung di AWS Glue 4.0.

Anda dapat memfilter data 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 dengan 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 disediakan valid. Jika tidak valid, evaluasi aturan akan gagal dan kami akan membuang an 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 tertentu yang gagal. Saat menerapkan klausa where ke aturan yang mendukung hasil tingkat baris, kami akan memberi label baris yang disaring oleh klausa where sebagaiPassed.

Jika Anda lebih suka memberi label terpisah pada baris yang disaring sebagaiSKIPPED, Anda dapat mengatur yang berikut 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 at1 Att2 Row-level Hasil (Default) Hasil Tingkat Baris (Opsi yang Dilewati) Komentar
1 a f LULUS LULUS
2 b d LULUS DILEWATI Baris disaring, att1 karena tidak "a"
3 a null FAILED FAILED
4 a f LULUS LULUS
5 b null LULUS DILEWATI Baris disaring, att1 karena tidak "a"
6 a f LULUS LULUS

Konstanta

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 cara mendefinisikan dan menggunakan konstanta:

mySql = "select count(*) from primary" Rules = [ CustomSql $mySql between 0 and 100 ]

Dalam contoh ini, query SQL ditetapkan ke konstantamySql, yang kemudian direferensikan dalam aturan menggunakan $ awalan.

Label

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 pada 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 mudah diintegrasikan dengan alur kerja pemantauan dan pelaporan yang ada.

catatan

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

Sintaks untuk label DQDL

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

Contoh berikut menunjukkan cara menggunakan label default dan aturan khusus:

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"] RowCount > 0 with threshold > 0.8 labels=["foo"="bar"], // Override default label. Labels for this rule would be ["frequency"="daily", "foo"="bar"] ColumnValues "colA" in ["A", "B"] with threshold > 0.8 labels=["foo"="bar", "frequency"="daily"] // Labels must be applied to the entire composite rule (parentheses required) (isComplete "col" AND RowCount > 0) labels=["foo"="bar] ]

Contoh berikut menunjukkan sintaks yang tidak valid dengan label dan aturan komposit:

(isComplete "colA") AND (RowCount > 0) labels=["foo"="bar"] (isComplete "colA" labels=["foo"="bar"]) AND (RowCount > 0) isComplete "col" AND RowCount > 0 labels=["foo"="bar]
Kendala label

Label memiliki batasan 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

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

Hasil aturan

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

Row-level hasil

Label DQDL dinonaktifkan secara default di 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 kolomDataQualityRulesPass,, DataQualityRulesFail dan. DataQualityRulesSkip

Tanggapan API

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

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

catatan

Aturan Dinamis hanya didukung di AWS Glue ETL dan tidak didukung di Katalog Data AWS Glue.

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 yang harus dipertimbangkan; last(k) di mana k >= 1 akan mereferensikan k metrik terakhir.

  • 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 angka. Misalnya, RowCount > avg(last(5)) akan memeriksa apakah jumlah baris dataset saat ini benar-benar lebih besar dari rata-rata lima jumlah baris terakhir untuk kumpulan data yang sama. RowCount > last(5)akan menghasilkan kesalahan karena jumlah baris dataset 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 mengindeks yang terbaru ke-4.

Contoh ekspresi

ColumnCorrelation

  • ColumnCorrelation "colA" "colB" < avg(last(10))

DistinctValuesCount

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

Sebagian besar jenis aturan dengan kondisi numerik atau ambang mendukung aturan dinamis; lihat tabel yang disediakan, Analyzer dan Aturan, untuk menentukan apakah aturan dinamis didukung untuk jenis aturan Anda.

Mengecualikan 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 K ecualikan Statistik. Sekarang statistik yang dikecualikan tidak akan dimasukkan dalam perhitungan aturan dinamis.

Tangkapan layar menunjukkan opsi untuk mengecualikan atau memasukkan statistik dari menu drop-down setelah memilih statistik.

Alat analisis

catatan

Penganalisis tidak didukung di Katalog Data AWS Lem.

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 jumlah 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, sebaiknya buat penganalisis dan kemudian minta mereka menghasilkan statistik yang dapat digunakan untuk mendeteksi anomali. Untuk contoh seperti itu, Anda dapat membuat penganalisis. Penganalisis berbeda dari aturan dengan cara berikut.

Karakteristik Alat analisis Aturan
Bagian dari kumpulan aturan 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 saat gagal, melanjutkan pemrosesan pekerjaan Tidak Ya

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

Beberapa jenis aturan dapat dimasukkan 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 dalam Analyzers blok. Tabel berikut menunjukkan apakah setiap item didukung sebagai aturan atau penganalisis mandiri, bersama dengan detail tambahan untuk setiap jenis aturan.

Contoh Rule Set dengan Analyzer

Kumpulan aturan berikut menggunakan:

  • aturan dinamis untuk memeriksa apakah dataset tumbuh di atas rata-rata trailing untuk tiga pekerjaan terakhir yang dijalankan

  • pengan DistinctValuesCount alisis untuk mencatat jumlah nilai yang berbeda dalam Name kolom dataset

  • pengan ColumnLength alisis 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 Kualitas Data Lem mendukung penganalisis berikut.

Nama penganalisis Fungsionalitas
RowCount Menghitung jumlah baris untuk dataset
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 berbeda dalam kolom
Distribution Menghitung distribusi frekuensi kolom. Untuk kolom numerik, menghasilkan histogram binned. Untuk kolom string dan tanggal, menghasilkan distribusi nilai yang diurutkan dalam urutan menurun berdasarkan frekuensi.
UniqueValueRatio Menghitung rasio nilai unik dalam kolom
ColumnCount Menghitung jumlah kolom dalam dataset
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:
  • RowCount, ColumnCount

  • Setiap kolom: Kelengkapan, keunikan

  • Numerik: Min, Maks, Entropi, Rata-rata, Pengembangan Standar, Jumlah

  • Tali: MinLength, MaxLength

Penganalisis Distribusi

DistributionAnalyzer menghitung distribusi frekuensi untuk kolom dalam dataset Anda. Gunakan Distribution Analyzer untuk memahami bagaimana data Anda didistribusikan dari waktu ke waktu dan mendeteksi pergeseran rentang data di seluruh proses evaluasi.

Untuk informasi tentang sintaks DQDL dan contoh penggunaan dasar, lihat. Distribusi

Perilaku numerik dan kategoris
  • Kolom numerik — Penganalisis membagi rentang nilai kolom menjadi interval lebar yang sama (tempat sampah). Setiap tempat sampah ditentukan oleh batas bawah dan atas. Hasilnya menghitung berapa banyak nilai yang jatuh ke setiap tempat sampah.

  • Kolom kategoris (string, tanggal, boolean) - Penganalisis menghitung frekuensi setiap nilai yang berbeda dan mengembalikan 20 nilai paling sering teratas yang diurutkan dalam urutan menurun berdasarkan frekuensi.

DistributionAnalyzer mengecualikan nilai NULL di kolom target dari perhitungan distribusi untuk kedua jenis kolom.

Format output

DistributionStatistik mengembalikan DistributionValue objek terstruktur yang berisi bidang berikut:

  • BinEdges— Sebuah array yang mendefinisikan batas bin (numerik) atau nilai yang berbeda (kategoris)

  • Count— Array jumlah frekuensi yang sesuai dengan setiap bin atau nilai

  • DataType— Jenis data kolom (misalnya,LongType,StringType)

Tepi tempat sampah beku

Ketika Anda pertama kali menjalankan Distribution Analyzer pada kolom, penganalisis menghitung tepi bin berdasarkan rentang nilai kolom saat ini. Pada proses berikutnya untuk statistik yang sama (kolom yang sama, jumlah bin yang sama), penganalisis menggunakan kembali tepi dari proses pertama. Perilaku ini disebut tepi beku.

Tepi beku memungkinkan perbandingan yang berarti di seluruh proses karena tempat sampah tetap konsisten dari waktu ke waktu. Tanpa tepi beku, batas bin akan bergeser pada setiap proses saat rentang data berubah.

Pengamatan luapan

Ketika nilai data berada di luar batas bin beku, penganalisis menghitungnya di bin pertama atau terakhir (tempat sampah luapan). Jika lebih dari 2% nilai mendarat di tempat sampah yang meluap, Kualitas Data AWS Glue menghasilkan pengamatan informasi. Jika lebih dari 5% nilai meluap, AWS Glue Data Quality menghasilkan pengamatan yang lebih kuat dan melacak proses luapan berturut-turut. Setelah 3 kali berjalan berturut-turut melebihi 5%, rebinning otomatis dipicu.

Rebinning otomatis

Jika 3 kali evaluasi berturut-turut menghasilkan lebih dari 5% luapan, AWS Glue Data Quality secara otomatis menghitung ulang tepi tempat sampah. Tepi baru didasarkan pada rentang data saat ini. Setelah rebinning, tepi baru menjadi tepi beku untuk proses selanjutnya.

Setelah rebinning otomatis, histogram Anda beradaptasi dengan perubahan rentang data berkelanjutan tanpa intervensi manual. Tepi bin tetap stabil selama fluktuasi sementara.

Anda dapat memilih keluar dari rebinning otomatis dengan menyetel rebin parameter ke false dalam kumpulan aturan DQDL Anda:

Analyzers = [ Distribution "Salary" with bins = 20, rebin = false ]

Saat rebinning otomatis dinonaktifkan, tepi tempat sampah tetap beku tanpa batas waktu terlepas dari frekuensi luapan. AWS Kualitas Data Lem terus menghasilkan pengamatan luapan.

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 ]