Pemantauan Kualitas Data umumnya hanya mencakup pemeriksaan data yang telah berubah, bukan seluruh tabel. Topik ini menjelaskan cara mengonfigurasi penyaringan data.
Contoh konfigurasi penyaringan data
Dalam sebagian besar skenario, Anda menyaring data yang berubah berdasarkan bidang waktu. Misalnya, Anda dapat menggunakan partisi waktu di MaxCompute atau menyaring berdasarkan waktu pembuatan transaksi dalam tabel transaksi bisnis MySQL.
Untuk menyaring data, atur parameter filter dalam aturan pemantauan Anda. Berikut adalah contoh konfigurasi:
datasets:
- type: Table
tables:
- tb_d_spec_demo
filter: "dt = '$[yyyymmdd]' AND hh = '$[hh24-1/24]'"
dataSource:
name: odps_first
envType: Dev
rules:
- assertion: "row_count > 0"
# Tambahkan filter di tingkat aturan. Filter ini bekerja bersama filter di Scan.dataset.
# Filter aktual yang dieksekusi adalah (dt = '$[yyyymmdd-1]' AND hh = '$[hh24-1/24]') AND (id IS NOT NULL)
filter: "id IS NOT NULL"
computeResource:
id: 2001Sintaks filter
Sintaks dasar
Sintaks filter sebagian besar sesuai dengan klausa WHERE dalam standar SQL-92, kecuali untuk predikat match dan overlaps. Sintaksnya adalah sebagai berikut:
<search condition> ::=
<boolean term> | <search condition> OR <boolean term>
<boolean term> ::=
<boolean factor> | <boolean term> AND <boolean factor>
<boolean factor> ::=
[ NOT ] <boolean test>
<boolean test> ::=
<predicate> | ( <search condition> )
<predicate> ::=
<comparison predicate> | <between predicate> |
<in predicate> | <like predicate> | <null predicate> |
<quantified comparison predicate> | <exists predicate>
<comparison predicate> ::=
<expression> <comparison_operator> <expression>
<between predicate> ::=
<expression> [NOT] BETWEEN <lower_bound> AND <upper_bound>
<in predicate> ::=
<expression> [NOT] IN (value_list | subquery)
<like predicate> ::=
<expression> [NOT] LIKE pattern [ESCAPE escape_character]
<null predicate> ::=
<expression> IS [NOT] NULL
<quantified comparison predicate> ::=
<expression> <comparison_operator> { ALL | ANY | SOME } (subquery)
<exists predicate> ::=
EXISTS (subquery)Contoh konfigurasi
Predikat Perbandingan
salary > 50000Predikat BETWEEN
price BETWEEN 10 AND 50Dalam konteks predikat
department IN ('Sales', 'Marketing')Predikat LIKE
name LIKE 'Jo%'Predikat Null
department IS NOT NULLPredikat Perbandingan Terkuantifikasi
salary > ALL (SELECT salary FROM employees WHERE department = 'Sales')Predikat Exists
EXISTS (SELECT 1 FROM customers cu WHERE cu.country_id = c.country_id)Kondisi Pencarian yang Lebih Kompleks
-- Menghubungkan dua predikat dengan Operator logika AND salary > ALL (SELECT salary FROM employees WHERE department = 'Sales') AND EXISTS (SELECT 1 FROM customers cu WHERE cu.country_id = c.country_id) -- Menghubungkan dengan Operator logika OR department IS NOT NULL OR name LIKE 'Jo%'
Gunakan kueri asli untuk mendefinisikan filter
Jika kueri untuk penyimpanan data dasar tidak dapat dinyatakan dalam SQL-92 standar karena menggunakan fitur seperti RLIKE, pencarian geolokasi, atau pencarian teks lengkap, Anda dapat menulis kueri asli langsung di filter. Mulailah kueri asli dengan kata kunci query:.
Sebagai contoh, untuk menyaring data dalam tabel MaxCompute menggunakan RLIKE, gunakan konfigurasi berikut:
datasets:
- type: Table
indices:
- ods_d_customers
dataSource:
name: odps_first
envType: Dev
rules:
- assertion: "row_count > 0"
filter: "query: email_address RLIKE '^info@'"Gunakan variabel waktu dalam filter
Jika Anda menggunakan partisi waktu, Data Quality memindai partisi untuk hari saat ini atau hari sebelumnya (T-1). Sistem harus secara otomatis menentukan tanggal yang benar untuk setiap pelaksanaan harian. Untuk melakukan ini, Anda dapat menggunakan ekspresi offset waktu dari sistem penjadwalan.
Sebagai contoh, jika Anda menggunakan ekspresi waktu seperti $[yyyymmdd-1] di filter, sistem Data Quality secara otomatis menghitung offset berdasarkan waktu yang dijadwalkan untuk instans tersebut dan mengganti ekspresi dengan nilai yang dihitung.
Jika pemantauan Kualitas Data tidak dipicu oleh instans penjadwalan, tentukan triggerTime dalam parameter pemicu CreateDataQualityScanRun. Sistem menggunakan triggerTime sebagai dasar untuk offset.