uji

Penggunaan

test: historic_revenue_is_accurate {
  explore_source:  orders {
    column:  total_revenue {
      field:  orders.total_revenue 
    }
    filters: [orders.created_date:  "2017"]
  }
  assert:  revenue_is_expected_value {
    expression: ${orders.total_revenue} = 626000 ;;
  }
}
Hierarki
test

- atau -

test

- atau -

test
Nilai Default
Tidak ada

Menerima
ID pengujian data, ditambah subparameter yang menentukan pernyataan dan kueri pengujian.

Definisi

Looker memiliki validator LookML untuk memverifikasi bahwa kode LookML Anda valid secara sintaksis dan Validator Konten untuk memverifikasi referensi objek antara konten dan model Anda.

Selain validator tersebut, parameter test memungkinkan Anda memvalidasi logika model. Untuk setiap pengujian data, Anda membuat kueri dan pernyataan pernyataan yesno. Pengujian data menjalankan kueri pengujian dan memverifikasi bahwa pernyataan benar untuk setiap baris kueri pengujian. Jika pernyataan pernyataan menampilkan yes untuk setiap baris kueri pengujian, pengujian data akan lulus.

Jika setelan project Anda dikonfigurasi untuk mewajibkan pengujian data lulus sebelum di-deploy ke produksi, dan jika project Anda memiliki satu atau beberapa parameter test, IDE akan menampilkan tombol Jalankan Pengujian setelah Anda melakukan perubahan pada project. Developer LookML harus menjalankan pengujian data sebelum men-deploy perubahan ke produksi.

Terlepas dari apakah project Anda memerlukan pengujian data sebelum di-deploy ke produksi, developer LookML dalam Mode Pengembangan dapat menjalankan pengujian data kapan saja untuk memverifikasi logika model.

Anda dapat membuat pengujian data di file model, file tampilan, atau di file pengujian data khusus yang terpisah. Saat menggunakan file khusus untuk menyimpan pengujian data, jangan lupa untuk include file pengujian data di file model atau file tampilan tempat Anda ingin menjalankan pengujian data.

Pengujian data tidak boleh memiliki nama dan explore_source yang sama dengan pengujian data lain dalam project yang sama. Jika Anda menggunakan explore_source yang sama untuk beberapa pengujian data di project, pastikan nama pengujian data semuanya unik.

Parameter test memiliki subparameter berikut:

  • explore_source: Menentukan kueri yang akan digunakan dalam pengujian data.
  • assert: Menentukan ekspresi Looker yang dijalankan di setiap baris kueri pengujian untuk memverifikasi data.

Setelah menentukan LookML untuk pengujian, Anda dapat menjalankan pengujian data untuk memverifikasi bahwa pengujian berfungsi dengan baik dan untuk melihat apakah logika model Anda lulus pengujian (Anda harus berada dalam Mode Pengembangan untuk menjalankan pengujian data).

Ada beberapa cara untuk memulai pengujian data untuk project:

  1. Jika setelan project Anda dikonfigurasi untuk mewajibkan pengujian data lulus sebelum men-deploy file ke produksi, IDE akan menampilkan tombol Jalankan Pengujian setelah Anda melakukan commit perubahan pada project. Tindakan ini akan menjalankan semua pengujian untuk project Anda, terlepas dari file mana yang menentukan pengujian. Anda harus lulus pengujian data sebelum dapat men-deploy perubahan ke produksi.
  2. Di panel Project Health, pilih tombol Run Data Tests. Tindakan ini akan menjalankan semua pengujian data dalam project Anda, terlepas dari file mana yang menentukan pengujian.
  3. Pilih opsi Run LookML Tests dari menu file. Tindakan ini hanya akan menjalankan pengujian yang ditentukan dalam file saat ini.

Setelah Anda menjalankan pengujian data, panel Kesehatan Project akan menampilkan progres dan hasil.

Anda dapat memilih link Jelajahi Kueri untuk setiap hasil pengujian guna membuka Jelajah dengan kueri yang ditentukan dalam pengujian data.

explore_source

Parameter explore_source dalam pengujian data menggunakan sintaksis dan logika yang sama dengan parameter explore_source dari tabel turunan. Satu-satunya perbedaan adalah explore_source pengujian data tidak mendukung subparameter derived_column, bind_filters, dan bind_all_filters.

Tips Berguna: Cara mudah untuk mendapatkan LookML explore_source adalah dengan menggunakan Eksplorasi yang ada untuk membuat kueri. Di Eksplorasi, pilih Dapatkan LookML dari menu roda gigi Eksplorasi, lalu pilih tab Tabel Turunan untuk mendapatkan LookML untuk kueri. Lihat dokumentasi tentang membuat tabel turunan native untuk mengetahui informasi selengkapnya.

Perhatikan hal berikut untuk explore_source pengujian data:

  • Kueri explore_source pengujian data adalah kueri Looker standar, yang berarti kueri explore_source pengujian memiliki batas 5.000 baris. Pastikan kueri Anda tidak melebihi 5.000 baris sehingga Anda mendapatkan kumpulan hasil lengkap untuk diuji. Anda dapat menyertakan filter atau pengurutan dalam explore_source untuk mengurangi jumlah baris dalam kueri, atau untuk menampilkan baris yang relevan di bagian atas kueri.

  • explore dengan extension: required tidak dapat digunakan sebagai explore_source untuk pengujian data. Validator LookML akan menghasilkan error bahwa explore_source tidak dapat ditemukan.

assert

Subparameter assert menentukan kriteria yang membuat hasil kueri explore_source dianggap valid. Subparameter expression menerima ekspresi Looker yang menghasilkan yesno (Boolean). Setelah kueri explore_source dijalankan, ekspresi pernyataan dievaluasi untuk setiap baris set hasil kueri. Jika ada respons no untuk baris kueri, pengujian data akan gagal. Jika kueri itu sendiri memiliki error, pengujian juga akan gagal.

Pengujian dapat memiliki beberapa deklarasi assert. Agar lulus pengujian, setiap pernyataan harus benar untuk setiap baris kueri explore_source.

Tips Berguna: Anda dapat menggunakan dialog kalkulasi tabel untuk menguji sintaks ekspresi Looker yang akan digunakan dalam parameter expression pengujian.

Untuk digunakan dalam pengujian data, kolom dalam ekspresi Looker harus memiliki cakupan penuh, yang berarti kolom tersebut ditentukan menggunakan format view_name.field_name. Misalnya, ekspresi berikut mendeklarasikan kolom sebagai aircraft_engine_types.aircraft_engine_type_id:

assert: engine_type_id_not_null {
  expression: NOT is_null(${aircraft_engine_types.aircraft_engine_type_id}) ;;
}

Contoh

Memastikan bahwa kunci utama bersifat unik

Tes data berikut membuat kueri dari Eksplorasi orders dan menentukan expression untuk menguji bahwa ID pesanan bersifat unik dalam set hasil. Kueri explore_source membuat jumlah baris yang terkait dengan setiap ID dalam database. Jika ID unik, database hanya boleh memiliki satu baris untuk satu ID. Selain itu, kueri ini mengurutkan jumlah dan membatasi kumpulan hasil menjadi satu baris, sehingga respons kueri akan berupa ID dengan jumlah tertinggi. Jika ada ID yang memiliki jumlah lebih dari 1, kita tahu bahwa ada beberapa baris untuk ID tersebut sehingga ID tersebut tidak unik. Jika demikian, pengujian data ini akan gagal.

test: order_id_is_unique {
  explore_source: orders {
    column: id {}
    column: count {}
    sorts: [orders.count: desc]
    limit: 1
  }
  assert: order_id_is_unique {
    expression: ${orders.count} = 1 ;;
  }

Memverifikasi nilai yang diketahui

Pengujian data berikutnya memeriksa untuk memastikan bahwa nilai pendapatan tahun 2017 selalu $626.000. Dalam set data ini, nilai tersebut adalah nilai yang diketahui dan tidak boleh berubah.

test: historic_revenue_is_accurate {
  explore_source: orders {
    column: total_revenue {
      field: orders.total_revenue
    }
    filters: [orders.created_date: "2017"]
  }
  assert: revenue_is_expected_value {
    expression: ${orders.total_revenue} = 626000 ;;
  }
}

Mengonfirmasi bahwa tidak ada nilai null

Pengujian data berikutnya ini memeriksa untuk memastikan tidak ada nilai null dalam data. explore_source ini menggunakan sort untuk memastikan bahwa nilai null akan ditampilkan di bagian atas kueri. Pengurutan untuk nilai null dapat bervariasi, berdasarkan dialek Anda. Pengujian berikut menggunakan desc: yes sebagai contoh.


test: status_is_not_null {
  explore_source: orders {
    column: status {}
    sorts: [orders.status: desc]
    limit: 1
  }
  assert: status_is_not_null {
    expression: NOT is_null(${orders.status}) ;;
  }
}