Mengimpor file dari project lain

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

Ada beberapa kasus penggunaan untuk hal ini. Beberapa contoh:

  • Membuat aplikasi berdasarkan Looker Block yang diinstal tanpa harus melakukan perubahan langsung pada Looker Block tersebut. Jika Looker membuat perubahan pada blok, Anda dapat menarik perubahan tersebut karena semua LookML yang telah Anda tambahkan disimpan di repositori terpisah.

  • Mengelola project dasar yang dibuat secara otomatis berdasarkan skema database. Anda dapat menempatkan semua dimensi, ukuran, dan sejenisnya kustom di project terpisah yang mengimpor semua LookML dari project yang dibuat secara otomatis. Anda dapat membuat ulang project dasar secara berkala saat skema database berubah tanpa menimpa semua LookML kustom.

  • Mengenkapsulasi objek bersama dalam satu project, lalu mengimpornya ke beberapa project lain. Misalnya, jika memiliki tabel yang umum untuk beberapa database, Anda dapat menempatkan tampilannya dalam satu project dan mengelolanya di satu tempat tersebut. Kemudian, minta beberapa project lain untuk menggunakannya dengan mengimpor tabel ke 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 Anda impor.
  3. Melihat file dari project yang diimpor.
  4. Menyertakan file dari project yang diimpor.

Kemudian, Anda dapat mereferensikan kolom dari file project yang diimpor dan mengganti nilai konstanta yang ditentukan dalam project yang diimpor, jika konstanta mengizinkan penggantian.

Membuat file manifes project

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

Untuk mengimpor project, tentukan project tersebut 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 di project yang diimpor, pembuatan versi akan bersifat dinamis, yang berarti bahwa perubahan pada project yang diimpor akan langsung memengaruhi project yang mengimpornya. Hal ini memungkinkan developer memvalidasi perubahan di kedua project sebelum di-push ke produksi. Selain itu, untuk developer dengan izin model di kedua project, file project yang diimpor akan mencerminkan status Mode Pengembangan developer. Jadi, jika developer berada dalam Mode Pengembangan, IDE Looker akan menampilkan Mode Pengembangan file project yang diimpor. Jika developer berada dalam Mode Produksi, IDE Looker akan menampilkan Mode Produksi project yang diimpor.

Dalam file manifes, parameter project_name menentukan nama project saat ini (Looker akan otomatis mengisi parameter ini saat Anda membuat file manifes untuk project). Untuk mengimpor project lokal ke 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 project yang diimpor dan menampilkan versi statis file tersebut di IDE. Versi statis ini tidak akan pernah menampilkan versi file Mode Pengembangan, dan mungkin juga sudah tidak berlaku dengan Mode Produksi saat ini tanpa memberi tahu developer. Sebaiknya gunakan impor project jarak jauh dan berikan ref yang menentukan cabang Git atau rilis Git dalam project jarak jauh. Jika Anda melakukannya, Looker akan otomatis mendeteksi commit baru di project jarak jauh sehingga developer Anda akan diberi tahu dan kemudian dapat memasukkan file project jarak jauh versi terbaru.
  • Developer Anda harus selalu menggunakan versi produksi 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 perlu berada di instance yang sama. Sebaliknya, project diimpor melalui repositori Git jarak jauhnya.

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 inginkan. Dalam contoh berikut, nama project-nya 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 pada project yang diimpor tidak akan otomatis diterapkan di project Anda (ini adalah opsi yang baik untuk Looker Blocks). Atau, Anda dapat menentukan cabang Git atau tag rilis Git jika ingin Looker mendeteksi commit baru secara otomatis di 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 meminta Looker untuk otomatis mendeteksi commit baru di project jarak jauh jika Anda menentukan cabang Git atau tag rilis Git di 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.

Berikut adalah contoh tag rilis v1.0 yang ditentukan:

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

Terlepas dari jenis nilai yang Anda tentukan 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, mengupdate dependensi juga akan meminta Looker untuk membuat file kunci manifes. Looker menggunakan file kunci manifes untuk melacak versi project jarak jauh.

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

Jika ada commit baru, Looker akan menampilkan opsi Update Dependencies di panel tindakan Git pada 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 berfungsi dengan file project jarak jauh yang telah diperbarui. Kemudian, Anda dapat memperbaiki referensi yang rusak dan men-deploy perubahan tanpa periode nonaktif bagi 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 file browser 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 developer Looker dalam file manifes.
  • Subparameter url menunjukkan alamat repositori Git eksternal yang ditentukan developer Looker dalam file manifes.
  • Subparameter ref menampilkan 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 menampilkan versi file mana (SHA commit project jarak jauh) yang saat ini digunakan project Anda. Jika ada commit baru di project jarak jauh, Looker akan menampilkan tombol Update Dependencies di IDE sehingga Anda dapat memasukkan file project jarak jauh terbaru. Nilai ref dalam file kunci manifes kemudian akan diperbarui untuk menampilkan SHA commit terbaru untuk tag rilis atau cabang tersebut.
    • Jika project jarak jauh ditentukan dalam file manifes dengan ref SHA commit tertentu, parameter ref dalam file kunci manifes akan menjadi SHA commit yang sama.

Mengonfigurasi kredensial autentikasi untuk repositori jarak jauh pribadi

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

Setelan Impor Kredensial 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 pada judul URL, arahkan kursor ke nama repositori untuk menampilkan tombol Test dan Configure, lalu klik Configure.

  2. Looker menampilkan dialog Configure Git Authentication untuk memungkinkan Anda mengonfigurasi kredensial untuk repositori jarak jauh. Dialog akan menunjukkan jenis kredensial yang diperlukan untuk repositori tertentu 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 penggunaan SSH untuk mengimpor project jarak jauh yang dijelaskan sebelumnya di halaman ini, Looker akan menampilkan dialog yang menampilkan kunci SSH lokal Anda. Klik Salin Kunci untuk menyalin kunci SSH ke papan klip, lalu tambahkan ke daftar kunci repositori Anda.

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

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

Mengedit kredensial autentikasi

Untuk mengedit kredensial autentikasi untuk repositori:

  1. Untuk menampilkan tombol Uji dan Edit, arahkan kursor ke repositori yang sudah mengonfigurasi kredensial autentikasi, lalu klik Edit.

  2. Jika repositori memerlukan nama pengguna dan sandi (atau token akses pribadi) untuk autentikasi, klik Hapus Kredensial, dan, di dialog konfirmasi, klik Ya, hapus kredensial.

  3. Masukkan kredensial baru di dialog Configure Git Authentication, lalu klik Save Changes.

Melihat file dari project yang diimpor

IDE Looker 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 impor 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 project-nya tercantum dalam file manifes yang dapat disertakan.

Untuk include file dari project lain, gunakan nama file dengan dua garis miring ke depan (//) dan nama project yang diimpor. Ikuti nama project yang diimpor dengan satu garis miring (/) 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 yang diaktifkan.

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

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

Selain itu, Anda dapat menggunakan karakter pengganti untuk 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, menyetel ulang, atau extend Jelajah di seluruh project, dalam project yang diimpor, Anda dapat membuat file Jelajah terpisah, lalu menyertakan file Jelajah tersebut dalam project lain. Lihat bagian Menyertakan Jelajahi dalam model di halaman dokumentasi parameter include untuk mengetahui informasi selengkapnya.

Menyertakan file yang menyertakan file lain

Saat Anda menyertakan file yang menyertakan file lain, semua penyertaan akan di-resolve sebelum file 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, file B akan disertakan ke dalam file A sebelum file A diimpor ke project saat ini.

Mengimpor file data

File yang disimpan di bagian Data project tidak diimpor. Untuk mereferensikan file data dari project yang diimpor, seperti dalam parameter map_layer, gunakan jalur lengkap dan nama file. 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 adalah bagian dari 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 mereferensikan 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 konstan yang ditentukan dalam file manifes project yang diimpor.
  • override_optional: Nilai konstanta dapat diganti secara opsional dalam project impor Anda. Jika nilai tidak diberikan dalam file manifes project yang diimpor, nilai asli dari project yang diimpor akan digunakan.
  • override_required: Project pengimporan harus mengganti nilai konstan 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 untuk konstanta tersebut, selama konstanta tersebut memiliki export yang ditetapkan 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.

Misalnya, Anda mengelola beberapa database di satu instance Looker, dengan project terpisah untuk setiap database. Asumsikan juga bahwa skema data identik untuk setiap database, dan bahwa sasaran Anda adalah menentukan analisis satu kali dan menerapkannya ke setiap set data.

Dalam contoh ini, misalkan proj_core adalah project dasar tempat Anda menentukan tampilan yang ingin diimpor ke project lain. Selain itu, salah satu tampilan yang ingin Anda impor adalah tampilan orders, yang ditentukan 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. Dalam contoh berikut, karena konstanta schema_name ditetapkan ke export: override_required, setiap project yang mengimpor schema_name harus mengganti nilainya menggunakan parameter override_constant:


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

Misalnya, Anda ingin mengimpor tampilan orders ke project lokal bernama proj_a. Ada juga tabel bernama orders dalam database untuk proj_a dengan struktur yang identik dengan tabel orders di project dasar, proj_core.

Karena proj_core dan proj_a berada di instance yang sama, Anda dapat mengimpor tampilan orders ke proj_a menggunakan local_dependency. Dengan menggunakan subparameter override_constant dari local_dependency, Anda dapat memperbarui konstanta schema_name untuk 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 impor).

Dengan mengganti konstanta schema_name di proj_a, Anda dapat menggunakan kolom yang ditentukan di 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.