Praktik terbaik: Menulis LookML yang berkelanjutan dan dapat dikelola

Praktik terbaik ini mencerminkan rekomendasi yang dibagikan oleh tim lintas fungsional yang terdiri dari Looker berpengalaman. Insight ini berasal dari pengalaman bertahun-tahun bekerja dengan pelanggan Looker, mulai dari penerapan hingga kesuksesan jangka panjang. Praktik ini ditulis agar dapat digunakan oleh sebagian besar pengguna dan situasi; tetapi, seperti biasa, gunakan pertimbangan terbaik Anda saat menerapkan saran apa pun di halaman ini.

Halaman ini memberikan rekomendasi untuk menulis LookML yang berkelanjutan dan dapat dikelola. Rekomendasi ini dijelaskan secara lebih mendetail di bagian berikut:

Menggunakan operator penggantian

Operator penggantian harus digunakan di semua file LookML. Model LookML hanya boleh memiliki satu titik referensi ke objek apa pun dalam model data fisik. Setiap definisi berikutnya yang perlu mereferensikan objek tersebut harus melakukannya dengan mengarah ke objek LookML yang telah ditentukan.

Gunakan sintaksis ${TABLE}.field_name saat mereferensikan tabel database pokok, untuk semua dimensi dasar yang mengambil data langsung dari kolom database pokok. Jika nama skema atau tabel berubah, developer dapat memperbarui skema atau nama tabel di satu tempat (dalam parameter sql_table_name) dan menyebarkannya ke seluruh kode.

Gunakan sintaksis ${field_name} saat mereferensikan dimensi atau ukuran yang telah ditentukan dalam LookML. Jika nama kolom berubah, perubahan tersebut hanya perlu diperbarui di parameter sql dari dimensi atau ukuran dasar. Perubahan tersebut kemudian akan otomatis diterapkan ke semua kolom lain yang mereferensikan kolom tersebut. Misalnya, jika nama kolom di database berubah dari usersid menjadi users_id, Anda harus mengubah referensi di Looker. Menggunakan ${field_name} berarti Anda hanya perlu memperbarui satu baris.

Jika beberapa dimensi dan ukuran mereferensikan kolom LookML yang ada dengan ${TABLE}.field_name, banyak perubahan yang diperlukan. Misalnya, pertimbangkan ukuran this_week_count dan this_month_count dalam contoh kode LookML berikut:

dimension: usersid {
  type: number
  sql: ${TABLE}.usersid ;; # Change here
}

measure: this_week_count {
  type: count_distinct
  sql: ${TABLE}.usersid ;; # Change here
  filters: [created_date: "7 days"]
}

measure: this_month_count {
  type: count_distinct
  sql: ${TABLE}.usersid ;; # Change here
  filters: [created_date: "1 month"]
}

Karena this_week_count dan this_month_count menggunakan sintaksis ${TABLE}.usersid dalam parameter sql, Anda harus memperbarui parameter sql untuk ketiga kolom tersebut.

Dengan referensi ${field_name}, hanya satu perubahan yang diperlukan:

dimension: usersid {
  type: number
  sql: ${TABLE}.usersid ;; # Change here
}

measure: this_week_count {
  type: count_distinct
  sql: ${usersid} ;;       #Using ${field_name} to reference the LookML field `usersid`
  filters: [created_date: "7 days"]
}

measure: this_month_count {
  type: count_distinct
  sql: ${usersid} ;;       #Using ${field_name} to reference the LookML field `usersid`
  filters: [created_date: "1 month"]
}

Untuk penggunaan operator penggantian lainnya, lihat halaman dokumentasi Menggabungkan SQL dan merujuk ke objek LookML.

Menentukan kumpulan kolom

Gunakan set untuk mempertahankan daftar kolom yang dapat digunakan kembali dalam model. Setiap daftar kolom yang diulang, baik dengan parameter fields atau dalam kolom drill, harus digabungkan ke dalam set untuk membuat satu tempat dalam model tempat daftar kolom tersebut dapat diperbarui atau referensi kolom diubah. Anda dapat menemukan informasi selengkapnya tentang set di halaman dokumentasi untuk parameter set.

Menghindari pengulangan kode

Anggap objek LookML sebagai elemen penyusun, dan gunakan parameter extends untuk menggabungkan objek dengan cara yang berbeda tanpa mengulangi kode. Anda dapat menemukan informasi mendetail dan contoh penggunaan kembali kode di halaman dokumentasi Menggunakan kembali kode dengan ekstensi. Anda dapat melihat contoh tambahan di halaman dokumentasi parameter extends (untuk tampilan) dan extends (untuk Jelajah) serta di postingan Komunitas Menggunakan ekstensi untuk menentukan join.

Pertahankan konsistensi di seluruh Jelajahi dengan tidak mengulangi kode di beberapa tempat. Untuk ide tambahan tentang cara melakukannya, lihat postingan Komunitas Looker tentang menghindari inkonsistensi di seluruh Jelajah.

Menggabungkan item seperti lapisan peta dan format nilai

Tentukan lapisan peta kustom secara terpusat dalam file LookML bernama map_layers.lkml, yang dapat Anda buat dengan mengikuti dokumentasi Looker tentang file project. File ini kemudian dapat disertakan sesuai kebutuhan di seluruh model. Atau, tambahkan file JSON langsung ke repositori dengan menarik lalu melepas file data ke project LookML Anda, dan mereferensikannya dalam model.

Misalnya, Anda memiliki file lapisan peta, map_layers.base.lkml, yang berisi kode LookML berikut:

map_layer: example_africa {
  file: "africa_file_name.json"
  property_key: "geounit"
}

map_layer: example_asia {
  file: "asia_file_name.json"
  property_key: "geounit"
}

map_layer: example_europe {
  file: "europe_file_name.json"
  property_key: "geounit"
}

Anda dapat menyertakan file lapisan peta map_layers.base.lkml dalam model apa pun dalam project dengan menambahkan kode LookML include: "map_layers.base.lkml" ke file model yang diinginkan.

Tetapkan format nilai kustom secara terpusat dalam model. Gunakan parameter named_value_format untuk menetapkan format kustom dalam model, lalu referensikan format tersebut menggunakan parameter value_format_name dalam dimensi dan ukuran.

Membuat panduan pengembangan

Tentukan panduan pengembangan untuk mempermudah pengembangan dan penskalaan model LookML. Lihat postingan Komunitas Looker tentang contoh panduan pengembangan LookML untuk mendapatkan panduan tentang contoh daftar panduan pengembangan. Panduan umum mencakup persyaratan untuk:

  • Mengatur file LookML dengan jelas agar konsisten dan mudah dinavigasi
  • Menggunakan komentar di seluruh tampilan dan model untuk menambahkan konteks ke LookML yang ditulis
  • Membuat dokumentasi dalam Looker menggunakan file Markdown