Pendekatan LAMBDA pada Penulisan Query

Tri Juhari
4 min readMar 20, 2022

--

Biasanya kita akan sering temui penggunaan lambda pada penulisan code di bahasa pemrograman contohnya pada bahasa pemrograman python.Contoh simpel dari penggunaan lambda misalnya seperti dibawah ini.

Sebenarnya dalam penulisan query kita bisa menggunakan pendekatan lambda sama halnya pada penggunaan lambda di bahasa pemrograman, misalnya dalam studi kasus ketika kita ingin menemukan semua mobil bertipe sedan, misalnya dalam penggunaan python kita dapat menuliskannya dengan code seperti di bawah ini :

Dalam konteks kode diatas sebenernya tidak ada masalah ketika kita convert kedalam query dan hasil quernya seperti di bawah ini

hanya saja apabila datanya tersimpan dalam bentuk sebuah array dalam database. Data Array merupakan data yang mewakili kumpulan item yang berbentuk serupa. Ada beberapa kasus mengapa perlunya menyimpan data sebagai array dalam database:

  • Mempertahan item dalam urutan yang dapat diprediksi. Misalnya mereplikasi baris checkout yang memiliki pelanggan dalam antrian.
  • Mereferensikan elemen array berdasarkan posisinya agar dapat mengimplementasikan indeks array.
  • Menyimpan semua atribut item yang relevan, terlepas dari perinciannya, dalam satu tabel, alih-alih memperluas model data dengan tabel tambahan. Ini merupakan salah satu cara yg digunakan beberapa kali saat menggunakan sstar schema, karena ketika model dimensi sudah ter set up, namun kadang ada satu atau beberapa model dimensi yang membutuhkan sebuah atribut baru di dalam level yang lebih terperinci. Kita menggunakan model snowflake dengan menambahkan model data dan menyimpannya dalam bentuk yang terstruktur seperti array atau tipe data json
  • Menyimpan semua versi data yang tersimpan dalam bentuk single line, karena dengan cara ini memudahkan saat hendak melakukan seluruh baris tabel pada setiap perubahan atribut.proses SCD, karena dengan menggunakan bentuk array, kita hanya perlu menyimpan atribut yang yang berubah sebagai elemen array yang baru dalam bentuk single line, bukan dengan menduplikasi seluruh baris tabel pada setiap perubahan atribut.
  • memudahkan untuk struktur data yang lebih kompleks dengan elemen elemen yang mempunyai korelasi untuk dapat disimpan dalam database korelasi dengan elemen.

Setelah kita memahami pentingnya array, namun yang jadi pertanyaan adalah bagaimana kita bisa melakukan operasi pada array di dalam sebuah database? Ada cara yang paling umum yaitu dengan menggunakan fungsi array out-of-the-box, seperti ARRAY_FIRST atau ARRAY_COUNT, namun pada akhirnya, akan ada lebih banyak fungsi atau statement untuk menangani operasi yang lebih kompleks.

Alternatif yang dapat digunakannya yaitu dengan menggunakan fungsi UNNEST. Fungsi UNNEST berfungsi untuk mengambil sebagai input array dan mengembalikan tabel yang menyertakan baris untuk setiap elemen array contohnya seperti di bawah ini

Namun proses UNNESTING tidak bisa terus terus dilakukan apabila terdapat banyak struktur yang nested (berserang), oleh karena itu kita bisa menggunakan pendekatan LAMBDA pada penuliasan QUERY.

Penerapan Fungsi LAMBDA Pada Query

Fungsi lambda memungkinkan kita untuk menerapkan fungsi pada data berbentuk array. Fungsi yang berulang melalui elemen array dan menerapkan transformasi/ekspresi yang dihendaki. Fungsi dapat mengambil sejumlah parameter array. Bentuk umum dari fungsi lambda adalah:

ARRAY_FUNC(<lambda-expression>, arr[, arr1, arr2…])

Experiment

Cara terbaik dalam memahami sesuatu yaitu dengan mempraktikannya. Misalnya data model merek mobil kita simpan ke dalam bentuk array dan jenis mobil terkait ke dalam array lainnya jika dibanding apabila menyimpan setiap model mobil sebagai baris terpisah.

Membuat tabel ALL_CARS:

Disini kita akan membuktikan bagaiman fungsi Lambda sangat tepat untuk proses query pada data berbentuk arrays

Apakah bisa kita melakukan ekstraksi data array untuk mencari semua model mobil yang bertipe sedan?

Kita dapat menggunakannya dengan fungsi array FILTER dan memasukannya sebagai parameter model mobil dan tipe mobil :

Penjelasan lebih dalam dari query di atas yaitu jadi kasusnya disini kita ingin mengambil seluruh data model mobil dengan tipe model oleh karena itu :

  • kita membutuhkan proses filtering
  • selain itu kita membutuhkan kolom car_model, car_type sebagai inputannya
  • dari kedua inputan ini akan digunakan dalam bentuk statement lambda ( x,y -> y = ‘sedan’) dimana variabel x kita isikan kolom car_model dan variabel y kita isikan kolom car_type.

Misalkan ada kasus tambahan, dimana terdapat kolom tambahan yaitu tangggal rilis untuk setiap modelnya. Lalu kita ingin mendapatkan data mobil dengan waktu rilis terbaru untuk setiap merek mobil.

Untuk mendapatkan data tersebut langkah yang harus dilakukan adalah

  • mengurutkan susunan value di kolom car_model beradasarkan tanggal rilis mobil ( car_release)
  • lakukan ekstraksi elemen terakhir dari array car_model

Contoh diatas hanya dasar dari penggunan lambda pada penulisan query, tentunya masih banyak yang dapat kita explore, semoga tulisan ini bisa membantu.

--

--

No responses yet