Mengimpor file dari project lain

Anda dapat mengimpor file dari project LookML lainnya dan repositori eksternal ke project saat ini. Hal ini memungkinkan Anda menggunakan file model, melihat file, dan file lainnya di lebih dari satu project.

Ada beberapa kasus penggunaan untuk hal ini. Beberapa contohnya:

  • Dibuat berdasarkan Pemblokiran Looker yang telah diinstal tanpa harus membuat perubahan langsung padanya. Jika Looker membuat perubahan pada blok, Anda dapat dengan mudah menarik perubahan karena semua LookML yang telah ditambahkan ke dalamnya disimpan di repositori terpisah.

  • Mempertahankan project dasar yang dihasilkan secara otomatis berdasarkan skema database. Anda dapat menempatkan semua dimensi kustom, ukuran, dan sebagainya, dalam project terpisah yang mengimpor semua LookML dari project yang dibuat secara otomatis. Anda dapat membuat ulang project dasar secara rutin saat skema database berubah tanpa menimpa semua LookML kustom.

  • Mengenkapsulasi objek bersama dalam satu project, lalu mengimpornya ke dalam beberapa project lainnya. Misalnya, jika memiliki tabel yang sama untuk beberapa database, Anda dapat menempatkan tampilan tabel tersebut di satu project dan menyimpannya di satu tempat. Kemudian minta beberapa project lain memanfaatkannya dengan mengimpor tabel ke dalam project tersebut.

Untuk mengimpor file dari project lain, lakukan tugas berikut:

  1. Buat file manifes project.
  2. Tentukan project lokal atau jarak jauh yang ingin diimpor.
  3. Melihat file dari project yang diimpor.
  4. Sertakan file dari project yang diimpor.

Selanjutnya, Anda akan dapat mereferensikan kolom dari file project yang diimpor dan mengganti nilai konstanta yang ditentukan dalam project yang diimpor, jika konstanta allow override.

Membuat file manifes project

Setiap project yang mengimpor file dari project lain harus memiliki file manifes project. Jika project belum memiliki file manifes, Anda dapat membuatnya dari ikon + di bagian atas browser file di Looker IDE.

Untuk mengimpor project, tentukan project dalam manifes. Anda dapat menentukan project lokal atau jarak jauh, seperti yang dijelaskan di bagian berikut.

Mengimpor project lokal

Impor project lokal hanya dapat digunakan jika project yang diimpor ada di instance Looker yang sama. Sebaiknya developer juga memiliki izin model untuk model project yang diimpor. Jika developer Anda memiliki izin model dalam project yang diimpor, pembuatan versi akan bersifat dinamis, yang berarti bahwa perubahan dalam project yang diimpor akan langsung memengaruhi project yang mengimpornya. Hal ini memungkinkan developer memvalidasi perubahan di kedua project sebelum mengirimkannya ke produksi. Selain itu, bagi developer dengan izin model di kedua project, file project yang diimpor akan mencerminkan status Mode Pengembangan developer. Jadi, jika developer berada dalam Mode Pengembangan, Looker IDE akan menampilkan Mode Pengembangan file project yang diimpor. Jika developer berada dalam Mode Produksi, Looker IDE akan menampilkan Mode Produksi dari project yang diimpor.

Untuk mengimpor secara lokal, gunakan parameter project_name untuk menentukan project saat ini. Gunakan satu atau beberapa parameter local_dependency untuk menentukan project yang akan diimpor:

# This project
project_name: "my_project"

# The project to import
local_dependency: {
  project: "my_other_project"
}

Dalam skenario berikut, Anda harus menggunakan impor project jarak jauh, bukan impor project lokal:

  • Developer Anda tidak memiliki izin model dalam model project yang diimpor. Jika demikian, Looker akan membuat clone Mode Produksi dari project yang diimpor dan menampilkan versi statis file tersebut di IDE. Versi statis ini tidak akan pernah menampilkan versi Mode Pengembangan file, dan mungkin juga akan ketinggalan zaman dengan Mode Produksi saat ini tanpa memberi tahu developer. Sebaiknya gunakan impor project jarak jauh dan sediakan ref yang menentukan cabang Git atau rilis Git dalam project jarak jauh. Jika Anda melakukannya, Looker akan otomatis mendeteksi commit baru dalam project jarak jauh sehingga developer Anda akan diberi tahu dan dapat menyertakan versi terbaru file project jarak jauh.
  • Developer Anda harus selalu menggunakan versi produksi dari project yang diimpor.
  • Developer Anda harus menggunakan versi statis file project yang diimpor.

Mengimpor project jarak jauh

Dalam impor jarak jauh, project yang diimpor tidak harus berada di instance yang sama. Sebaliknya, project diimpor melalui repositori Git jarak jauh.

Untuk mengimpor repositori jarak jauh, gunakan parameter remote_dependency untuk memberikan informasi untuk repositori jarak jauh. Parameter remote_dependency menggunakan informasi dan subparameter berikut:

  • Nama project yang diimpor, yang dapat berupa apa pun yang Anda suka. Pada contoh di bawah, nama project adalah ga_360_block. Anda menggunakan nama ini dalam pernyataan include untuk mereferensikan file yang diimpor dalam project LookML. Nama ini juga digunakan sebagai nama folder di folder imported_projects Looker IDE.
  • Subparameter url, tempat Anda menentukan alamat repositori Git eksternal. Gunakan URL utama repositori.
  • Subparameter ref, tempat Anda menentukan cabang Git, tag rilis Git, atau SHA commit di repositori Git. Anda dapat menentukan SHA commit jika menginginkan pembuatan versi statis, sehingga perubahan dalam project yang diimpor tidak akan otomatis tercermin dalam project Anda (ini adalah opsi yang tepat untuk Pemblokiran Looker). Atau, Anda dapat menentukan cabang Git atau tag rilis Git jika Anda ingin Looker mendeteksi commit baru secara otomatis dalam project jarak jauh. Lihat bagian Mendeteksi versi baru project jarak jauh secara otomatis di halaman ini untuk mengetahui informasi selengkapnya.
  • Subparameter override_constant, yang merupakan subparameter opsional yang memungkinkan Anda mengganti nilai konstanta yang ditentukan dalam project yang diimpor.

Berikut adalah contoh parameter remote_dependency dalam file manifes project. Contoh ini menggunakan koneksi HTTPS:

remote_dependency: ga360_block {
  url: "https://github.com/llooker/google_ga360"
  ref: "master"
  override_constant: connection {
    value: "importing_project_connection"
  }
}

Anda juga dapat menggunakan SSH:

remote_dependency: ga360_block {
  url: "git@github.com:llooker/google_ga360.git"
  ref: "master"
  override_constant: connection {
    value: "importing_project_connection"
  }
}

Setelah menambahkan dependensi jarak jauh, Anda mungkin perlu mengonfigurasi kredensial impor untuk project jarak jauh. Lihat bagian Mengonfigurasi kredensial autentikasi untuk repositori jarak jauh pribadi di halaman ini.

Mendeteksi versi baru project jarak jauh secara otomatis

Anda dapat membuat Looker otomatis mendeteksi commit baru dalam project jarak jauh jika Anda menentukan cabang Git atau tag rilis Git dalam subparameter ref dari remote_dependency dalam file manifes.

Misalnya, berikut adalah dependensi jarak jauh dengan cabang master yang ditentukan dalam subparameter ref:

remote_dependency: exchange_rate {
  url: "https://github.com/llooker/datablocks-exchangerate.git"
  ref: "master"
}

Selanjutnya, saat cabang master diperbarui dengan commit baru, Looker akan otomatis mendeteksi perubahan tersebut.

Dan berikut adalah contoh untuk menentukan tag rilis v1.0:

remote_dependency: e_faa_original {
  url: "https://github.com/llooker/google_ga360"
  ref: "v1.0"
}

Terlepas dari jenis nilai yang Anda tetapkan untuk parameter ref, bahkan SHA commit, IDE akan menampilkan tombol Update Dependencies di menu navigasi project atas saat Anda menambahkan parameter remote_dependency ke project.

Klik Update Dependencies untuk memasukkan file project jarak jauh. Jika ini adalah dependensi jarak jauh pertama yang telah Anda tambahkan ke project, memperbarui dependensi juga akan meminta Looker membuat file kunci manifes. Looker menggunakan file kunci manifes untuk melacak versi project jarak jauh.

Jika Anda menentukan cabang Git atau tag rilis Git dalam subparameter ref, Looker akan memeriksa commit baru setiap kali Looker IDE dimuat ulang, yang terjadi saat developer Looker masuk ke Mode Pengembangan, menjalankan tindakan Git di IDE, atau memuat ulang browser.

Jika ada commit baru, Looker akan menampilkan opsi Update Dependencies di panel tindakan Git IDE.

Pilih opsi Update Dependencies untuk memasukkan file project jarak jauh terbaru ke project Anda.

Setelah memiliki file terbaru, Anda dapat memvalidasi LookML untuk memverifikasi bahwa semua referensi project Anda berfungsi dengan file project jarak jauh yang telah diupdate. Anda kemudian dapat memperbaiki referensi yang rusak dan men-deploy perubahan tanpa periode nonaktif untuk pengguna.

File kunci manifes

Looker menggunakan file kunci manifes dengan nama file manifest_lock.lkml untuk melacak versi project yang diimpor dari jarak jauh. File kunci manifes tercantum di panel browser file Looker IDE.

Developer Looker tidak perlu membuat atau mengedit file kunci manifes, karena file kunci dikelola secara otomatis oleh Looker.

File kunci manifes menampilkan setiap project jarak jauh, yang diwakili oleh entri remote_dependency dengan subparameter url dan ref:

  • Parameter remote_dependency menunjukkan nama untuk project jarak jauh yang ditentukan oleh developer Looker dalam file manifes.
  • Subparameter url menunjukkan alamat repositori Git eksternal yang ditentukan oleh developer Looker dalam file manifes.
  • Subparameter ref menunjukkan versi project (ditunjukkan dengan SHA commit) yang digunakan Looker dalam project Anda:
    • Jika project jarak jauh ditentukan dalam file manifes dengan ref cabang Git atau tag rilis Git, parameter ref akan menunjukkan versi file mana (SHA commit project jarak jauh) yang saat ini digunakan oleh project Anda. Jika ada commit baru dalam project jarak jauh, Looker akan menampilkan tombol Update Dependencies di IDE sehingga Anda dapat membawa file project jarak jauh terbaru. Nilai ref dalam file kunci manifes kemudian akan diupdate untuk menampilkan SHA commit terbaru untuk tag rilis atau cabang tersebut.
    • Jika project jarak jauh ditentukan dalam file manifes dengan ref dari SHA commit tertentu, parameter ref dalam file kunci manifes akan berupa SHA commit yang sama.

Mengonfigurasi kredensial autentikasi untuk repositori jarak jauh pribadi

Guna mengonfigurasi kredensial autentikasi untuk repositori jarak jauh pribadi, buka halaman Import Credentials dengan memilih Settings di panel navigasi sebelah kiri dalam IDE.

Setelan Import Credentials menampilkan daftar URL untuk setiap repositori jarak jauh yang telah ditentukan dalam file manifes project, jenis autentikasi yang digunakan untuk repositori (https atau ssh), dan apakah Looker berhasil terhubung ke repositori.

Menambahkan kredensial autentikasi

Untuk menambahkan kredensial autentikasi untuk repositori:

  1. Di halaman Import Credentials di bawah judul URL, arahkan kursor ke nama repositori untuk menampilkan tombol Test dan Configure, lalu klik Configure.

  2. Looker menampilkan kotak dialog Configure Git Authentication agar Anda dapat mengonfigurasi kredensial untuk repositori jarak jauh. Kotak dialog akan menunjukkan jenis kredensial yang diperlukan untuk repositori tersebut.

    • Jika repositori memerlukan nama pengguna dan sandi (atau token akses pribadi) untuk autentikasi, masukkan nama pengguna dan sandi atau token Anda, lalu klik Save Changes.

    • Jika repositori memerlukan kunci SSH, seperti dalam contoh menggunakan SSH untuk mengimpor project jarak jauh yang dijelaskan sebelumnya di halaman ini, Looker akan menampilkan kotak dialog yang menampilkan kunci SSH lokal Anda. Klik Copy Key untuk menyalin kunci SSH ke papan klip, lalu menambahkannya ke daftar kunci repositori Anda.

  3. Setelah menyimpan kredensial, klik Uji untuk menguji akses Looker ke repositori.

    Setelah Anda lulus pengujian koneksi dan terhubung ke repositori, bagian Import Credentials akan menampilkan tanda centang hijau di samping nama repositori.

Mengedit kredensial autentikasi

Untuk mengedit kredensial autentikasi repositori:

  1. Untuk menampilkan tombol Test dan Edit, arahkan kursor ke repositori yang sudah memiliki kredensial autentikasi yang dikonfigurasi, lalu klik Edit.

  2. Jika repositori memerlukan nama pengguna dan sandi (atau token akses pribadi) untuk autentikasi, klik Clear Credentials, dan, di pop-up konfirmasi, klik Yes, clear credentials.

  3. Masukkan kredensial baru di pop-up Configure Git Authentication, lalu klik Save Changes.

Melihat file dari project yang diimpor

Looker IDE menampilkan file project yang diimpor di folder imported_projects pada panel navigasi sebelah kiri. Anda dapat memilih file project yang diimpor untuk melihat kontennya.

File dari project lokal dan project jarak jauh tercantum dalam folder imported_projects.

Anda juga dapat melihat objek dari file project yang diimpor yang disertakan dalam project aktif dari browser objek. Akses browser objek dari menu navigasi Looker IDE.

Selain itu, pengguna dengan izin develop dapat menggunakan panel metadata untuk melihat informasi tentang objek dari project yang diimpor, termasuk link untuk membuka file yang diimpor tempat objek ditentukan. Lihat halaman dokumentasi Metadata untuk objek LookML untuk mengetahui informasi selengkapnya.

Menyertakan file dari project yang diimpor

Parameter include dalam file model menentukan file project yang akan tersedia untuk model tersebut. Setelah menentukan project yang diimpor lokal atau jarak jauh dalam file manifes, Anda dapat menggunakan parameter include dalam file model untuk menentukan file dari project yang diimpor. Hanya file yang proyeknya tercantum di file manifes yang dapat disertakan.

Untuk melakukan include file dari project lain, gunakan nama file dengan dua garis miring (//) dan nama project yang diimpor. Ikuti nama project yang diimpor dengan garis miring tunggal (/) dan jalur lengkap ke file yang ingin Anda sertakan.

Misalnya, perintah include ini menunjukkan file tampilan users dari project yang diimpor e_flights dan tampilan orders dari project yang diimpor e_commerce:

include: "//e_flights/views/users.view.lkml"
include: "//e_commerce/public/orders.view.lkml"

Lihat bagian Sintaksis jalur di halaman parameter include untuk mengetahui informasi tentang cara menentukan jalur dengan folder IDE diaktifkan.

Anda dapat menggunakan karakter pengganti untuk menyertakan beberapa file. Misalnya, untuk menyertakan semua file tampilan di direktori /views/ dari project yang diimpor oleh e_flights:

include: "//e_flights/views/*.view"

Selain itu, Anda dapat menggunakan karakter pengganti untuk menentukan cakupan ke tingkat direktori tertentu atau ke direktori rekursif dalam project yang diimpor:

include: "//e_flights/*/*.view.lkml"
include: "//e_commerce/*/*.view.lkml"

Lihat bagian Contoh karakter pengganti di halaman parameter include untuk mengetahui informasi tentang cara menggunakan karakter pengganti dengan folder IDE yang diaktifkan.

Menyertakan file model

Anda tidak dapat menyertakan file model dari project lain. Sebagai gantinya, jika ingin menggunakan kembali, menyempurnakan, atau memperluas Jelajah di berbagai project, dalam project yang diimpor, Anda dapat membuat file Jelajah terpisah, lalu menyertakan file Jelajah tersebut dalam project lainnya. Lihat bagian Menyertakan Jelajah dalam model di halaman dokumentasi parameter include untuk mengetahui informasi selengkapnya.

Termasuk file yang menyertakan file lain

Saat Anda menyertakan file yang menyertakan file lain, semua penyertaan akan diselesaikan sebelum file tersebut diteruskan ke project berikutnya yang menyertakannya.

Misalnya, jika dalam project saat ini, Anda mengimpor file (A) dari project lain (proj_A) dan file yang diimpor berisi parameter include yang menyertakan file B dari project proj_B, maka file B akan disertakan ke dalam file A sebelum file A diimpor ke dalam project saat ini.

Mengimpor file data

File yang disimpan di bagian Data project tidak akan diimpor. Untuk mereferensikan file data dari project yang diimpor, seperti dalam parameter map_layer, gunakan jalur lengkap dan nama file dari file tersebut. Contoh:

map_layer: json_from_imported_project {
  file: "//path_to_imported_project/folder/filename.topojson"
  ...
}

Mereferensikan file dari project yang diimpor

Setelah mengimpor file tampilan ke project, Anda dapat menggunakan sintaksis ${view_name.field_name} untuk mereferensikan kolom tampilan yang diimpor seolah-olah file tampilan tersebut adalah native untuk project tersebut. Misalnya, Anda telah mengimpor project ga_360_block dalam file manifes project, dan Anda memiliki pernyataan include berikut dalam file model:

include: "//ga_360_block/ga_block.view"

Anda akan menggunakan sintaksis ${ga_block.hits_total} untuk mereferensikan kolom hits_total dari tampilan ga_block yang disertakan.

Menggunakan konstanta dalam file dari project yang diimpor

Konstanta LookML memungkinkan Anda menentukan nilai dalam file manifes project yang dapat digunakan kembali di seluruh project. Subparameter export dari parameter constant menentukan apakah nilai konstanta dapat diganti saat file yang merujuk konstanta tersebut diimpor ke project lain.

Parameter export memiliki kemungkinan nilai berikut:

  • none: Nilai default untuk export. Nilai konstanta tidak dapat diganti dalam project impor Anda. Project impor menggunakan nilai konstanta yang ditentukan dalam file manifes project yang diimpor.
  • override_optional: Nilai konstanta secara opsional dapat diganti dalam project impor Anda. Jika nilai tidak diberikan dalam file manifes project impor, nilai asli dari project yang diimpor akan digunakan.
  • override_required: Project impor harus mengganti nilai konstanta yang awalnya ditentukan dalam file manifes project yang diimpor. Jika nilai konstanta baru tidak diberikan dalam project impor, Looker akan menampilkan error.

Saat mengimpor file yang mereferensikan konstanta ke dalam project, Anda dapat menggunakan subparameter override_constant dari local_dependency atau remote_dependency dalam file manifes project untuk memberikan nilai baru bagi konstanta tersebut, asalkan konstanta tersebut menetapkan export ke override_optional atau override_required dalam project aslinya. Saat Anda mengganti nilai konstanta dari project yang diimpor, project Anda akan menggunakan nilai yang Anda tentukan dengan parameter override_constant.

Sebagai contoh, anggaplah Anda mengelola beberapa database pada satu instance Looker, dengan project terpisah untuk setiap database. Dalam contoh ini, asumsikan juga bahwa skema data identik untuk setiap {i>database<i}, dan tujuan Anda adalah menentukan analisis sekali dan menerapkannya ke setiap {i>dataset<i}.

Dalam contoh ini, misalkan proj_core adalah project dasar tempat Anda telah menentukan tampilan yang ingin diimpor ke project lain. Selain itu, salah satu tampilan yang ingin Anda impor adalah tampilan orders, yang didefinisikan sebagai berikut:


view: orders {
  sql_table_name: "@{schema_name}.orders"
}

Skema yang menjadi dasar tampilan orders ditentukan dalam parameter sql_table_name menggunakan konstanta schema_name, yang ditentukan dalam file manifes proj_core. Pada contoh di bawah, karena konstanta schema_name ditetapkan ke export: override_required, project apa pun yang mengimpor schema_name harus mengganti nilainya menggunakan parameter override_constant:


constant: schema_name {
  value: "proj_core_schema"
  export: override_required
}

Untuk contoh ini, misalkan Anda ingin mengimpor tampilan orders ke project lokal yang disebut proj_a. Terdapat juga tabel bernama orders dalam database untuk proj_a dengan struktur identik dengan tabel orders di project dasar, proj_core.

Karena proj_core dan proj_a berada pada instance yang sama, Anda dapat mengimpor tampilan orders ke proj_a menggunakan local_dependency. Dengan menggunakan subparameter override_constant dari local_dependency, Anda kemudian dapat memperbarui konstanta schema_name agar mengarah ke skema proj_a_schema dalam file manifes untuk proj_a:


project_name: "proj_a"

local_dependency: {
  project: "proj_core"
  override_constant: schema_name {
    value: "proj_a_schema"
  }
}

Dalam contoh ini, karena konstanta schema_name ditetapkan ke export: override_required di project_core, Looker akan menampilkan error jika Anda tidak mengganti nilainya di proj_a (project yang mengimpor).

Mengganti konstanta schema_name di proj_a memungkinkan Anda menggunakan kolom yang ditentukan dalam tampilan orders di proj_core, bukan membuat file tampilan baru dan menentukan kolom dari awal. Dalam contoh ini, tampilan orders sesuai dengan tabel yang berbeda untuk setiap project:

  • Di proj_core, tampilan orders didasarkan pada tabel proj_core_schema.orders di database Anda.
  • Di proj_a, tampilan orders didasarkan pada tabel proj_a_schema.orders di database Anda.