All Products
Search
Document Center

DataWorks:Konfigurasi penyaringan data

Last Updated:Dec 11, 2025

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

Sintaks 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 > 50000
  • Predikat BETWEEN

    price BETWEEN 10 AND 50
  • Dalam konteks predikat

    department IN ('Sales', 'Marketing')
  • Predikat LIKE

    name LIKE 'Jo%'
  • Predikat Null

    department IS NOT NULL
  • Predikat 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.

Catatan

Jika pemantauan Kualitas Data tidak dipicu oleh instans penjadwalan, tentukan triggerTime dalam parameter pemicu CreateDataQualityScanRun. Sistem menggunakan triggerTime sebagai dasar untuk offset.