Bahasa Indonesia

Buka kekuatan data rangkaian waktu dengan fungsi jendela. Panduan ini mencakup konsep penting, contoh praktis, dan teknik canggih untuk analisis data.

Analitik Rangkaian Waktu: Menguasai Fungsi Jendela untuk Wawasan Data

Data rangkaian waktu, yang dicirikan oleh sifatnya yang sekuensial dan bergantung pada waktu, ada di mana-mana di berbagai industri. Dari melacak harga saham dan memantau lalu lintas situs web hingga menganalisis pembacaan sensor dan memprediksi tren penjualan, kemampuan untuk mengekstrak wawasan yang bermakna dari data rangkaian waktu sangat penting untuk pengambilan keputusan yang terinformasi. Fungsi jendela menyediakan perangkat yang kuat dan fleksibel untuk melakukan perhitungan di seluruh rangkaian baris yang terkait dengan baris saat ini dalam tabel atau kerangka data, menjadikannya sangat diperlukan untuk analisis rangkaian waktu.

Memahami Data Rangkaian Waktu

Data rangkaian waktu adalah urutan titik data yang diindeks dalam urutan waktu. Titik data dapat mewakili berbagai metrik, seperti:

Menganalisis data rangkaian waktu melibatkan identifikasi pola, tren, dan musiman, yang dapat digunakan untuk meramalkan nilai masa depan, mendeteksi anomali, dan mengoptimalkan proses bisnis.

Pengenalan Fungsi Jendela

Fungsi jendela, juga dikenal sebagai agregat berjendela atau fungsi analitik, memungkinkan Anda melakukan perhitungan pada serangkaian baris yang terkait dengan baris saat ini, tanpa mengelompokkan baris ke dalam satu set hasil tunggal seperti fungsi agregat tradisional (misalnya, SUM, AVG, COUNT). Kemampuan ini sangat berguna untuk analisis rangkaian waktu, di mana Anda sering kali perlu menghitung rata-rata bergerak, jumlah kumulatif, dan metrik berbasis waktu lainnya.

Fungsi jendela biasanya terdiri dari komponen-komponen berikut:

  1. Fungsi: Perhitungan yang akan dilakukan (misalnya, AVG, SUM, RANK, LAG).
  2. Klausa OVER: Mendefinisikan jendela baris yang digunakan untuk perhitungan.
  3. Klausa PARTITION BY (opsional): Membagi data menjadi partisi, dan fungsi jendela diterapkan pada setiap partisi secara independen.
  4. Klausa ORDER BY (opsional): Menentukan urutan baris dalam setiap partisi.
  5. Klausa ROWS/RANGE (opsional): Mendefinisikan bingkai jendela, yaitu himpunan baris yang relatif terhadap baris saat ini yang digunakan untuk perhitungan.

Konsep Utama dan Sintaksis

1. Klausa OVER()

Klausa OVER() adalah inti dari fungsi jendela. Ini mendefinisikan jendela baris tempat fungsi akan beroperasi. Klausa OVER() sederhana tanpa argumen akan menganggap seluruh set hasil sebagai jendela. Sebagai contoh:

Contoh SQL:

SELECT
  date,
  sales,
  AVG(sales) OVER()
FROM
  sales_data;

Kueri ini menghitung rata-rata penjualan di semua tanggal dalam tabel sales_data.

2. PARTITION BY

Klausa PARTITION BY membagi data menjadi partisi, dan fungsi jendela diterapkan secara terpisah untuk setiap partisi. Ini berguna ketika Anda ingin menghitung metrik untuk kelompok yang berbeda dalam data Anda.

Contoh SQL:

SELECT
  date,
  product_id,
  sales,
  AVG(sales) OVER (PARTITION BY product_id)
FROM
  sales_data;

Kueri ini menghitung rata-rata penjualan untuk setiap produk secara terpisah.

3. ORDER BY

Klausa ORDER BY menentukan urutan baris dalam setiap partisi. Ini penting untuk menghitung total berjalan, rata-rata bergerak, dan metrik berbasis waktu lainnya.

Contoh SQL:

SELECT
  date,
  sales,
  SUM(sales) OVER (ORDER BY date)
FROM
  sales_data;

Kueri ini menghitung jumlah kumulatif penjualan dari waktu ke waktu.

4. ROWS/RANGE

Klausa ROWS dan RANGE mendefinisikan bingkai jendela, yaitu himpunan baris yang relatif terhadap baris saat ini yang digunakan untuk perhitungan. Klausa ROWS menentukan bingkai jendela berdasarkan nomor baris fisik, sedangkan klausa RANGE menentukan bingkai jendela berdasarkan nilai kolom ORDER BY.

Contoh ROWS:

SELECT
  date,
  sales,
  AVG(sales) OVER (ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)
FROM
  sales_data;

Kueri ini menghitung rata-rata bergerak penjualan selama 3 hari terakhir (termasuk hari ini).

Contoh RANGE:

SELECT
  date,
  sales,
  AVG(sales) OVER (ORDER BY date RANGE BETWEEN INTERVAL '2' DAY PRECEDING AND CURRENT ROW)
FROM
  sales_data;

Kueri ini menghitung rata-rata bergerak penjualan selama 2 hari terakhir (termasuk hari ini). Perhatikan bahwa `RANGE` memerlukan kolom terurut yang bertipe data numerik atau tanggal/waktu.

Fungsi Jendela Umum untuk Analisis Rangkaian Waktu

1. Rata-Rata Bergulir/Bergerak

Rata-rata bergulir, juga dikenal sebagai rata-rata bergerak, adalah teknik yang banyak digunakan untuk menghaluskan fluktuasi jangka pendek dalam data rangkaian waktu dan menyoroti tren jangka panjang. Ini dihitung dengan merata-ratakan nilai selama jendela waktu tertentu.

Contoh SQL:

SELECT
  date,
  sales,
  AVG(sales) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_average_7_days
FROM
  sales_data;

Kueri ini menghitung rata-rata bergerak 7 hari dari penjualan.

Contoh Python (menggunakan Pandas):

import pandas as pd

# Assuming you have a Pandas DataFrame called 'sales_df' with 'date' and 'sales' columns

sales_df['moving_average_7_days'] = sales_df['sales'].rolling(window=7).mean()

Contoh Aplikasi Global: Pengecer multinasional dapat menggunakan rata-rata bergerak 30 hari untuk menghaluskan fluktuasi penjualan harian dan mengidentifikasi tren penjualan yang mendasari di berbagai wilayah.

2. Jumlah Kumulatif

Jumlah kumulatif, juga dikenal sebagai total berjalan, menghitung jumlah nilai hingga baris saat ini. Ini berguna untuk melacak total nilai yang terakumulasi dari waktu ke waktu.

Contoh SQL:

SELECT
  date,
  sales,
  SUM(sales) OVER (ORDER BY date) AS cumulative_sales
FROM
  sales_data;

Kueri ini menghitung jumlah kumulatif penjualan dari waktu ke waktu.

Contoh Python (menggunakan Pandas):

import pandas as pd

# Assuming you have a Pandas DataFrame called 'sales_df' with 'date' and 'sales' columns

sales_df['cumulative_sales'] = sales_df['sales'].cumsum()

Contoh Aplikasi Global: Perusahaan e-commerce internasional dapat menggunakan penjualan kumulatif untuk melacak total pendapatan yang dihasilkan dari peluncuran produk baru di pasar yang berbeda.

3. Lead dan Lag

Fungsi LEAD dan LAG memungkinkan Anda mengakses data dari baris berikutnya atau sebelumnya. Fungsi ini berguna untuk menghitung perubahan dari periode ke periode, mengidentifikasi tren, dan membandingkan nilai di berbagai periode waktu.

Contoh SQL:

SELECT
  date,
  sales,
  LAG(sales, 1, 0) OVER (ORDER BY date) AS previous_day_sales,
  sales - LAG(sales, 1, 0) OVER (ORDER BY date) AS sales_difference
FROM
  sales_data;

Kueri ini menghitung selisih penjualan dibandingkan dengan hari sebelumnya. Fungsi `LAG(sales, 1, 0)` mengambil nilai penjualan dari baris sebelumnya (offset 1), dan jika tidak ada baris sebelumnya (misalnya, baris pertama), ia akan mengembalikan 0 (nilai default).

Contoh Python (menggunakan Pandas):

import pandas as pd

# Assuming you have a Pandas DataFrame called 'sales_df' with 'date' and 'sales' columns

sales_df['previous_day_sales'] = sales_df['sales'].shift(1)
sales_df['sales_difference'] = sales_df['sales'] - sales_df['previous_day_sales'].fillna(0)

Contoh Aplikasi Global: Maskapai penerbangan global dapat menggunakan fungsi lead dan lag untuk membandingkan penjualan tiket untuk rute yang sama di minggu yang berbeda dan mengidentifikasi potensi fluktuasi permintaan.

4. Rank dan Dense Rank

Fungsi RANK() dan DENSE_RANK() memberikan peringkat untuk setiap baris dalam partisi berdasarkan urutan yang ditentukan. RANK() memberikan peringkat dengan celah (misalnya, 1, 2, 2, 4), sementara DENSE_RANK() memberikan peringkat tanpa celah (misalnya, 1, 2, 2, 3).

Contoh SQL:

SELECT
  date,
  sales,
  RANK() OVER (ORDER BY sales DESC) AS sales_rank,
  DENSE_RANK() OVER (ORDER BY sales DESC) AS sales_dense_rank
FROM
  sales_data;

Kueri ini memeringkat nilai penjualan dalam urutan menurun.

Contoh Aplikasi Global: Pasar online global dapat menggunakan fungsi pemeringkatan untuk mengidentifikasi produk terlaris di setiap negara atau wilayah.

Teknik dan Aplikasi Tingkat Lanjut

1. Menggabungkan Fungsi Jendela

Fungsi jendela dapat digabungkan untuk melakukan perhitungan yang lebih kompleks. Misalnya, Anda dapat menghitung rata-rata bergerak dari jumlah kumulatif.

Contoh SQL:

SELECT
  date,
  sales,
  AVG(cumulative_sales) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_average_cumulative_sales
FROM
  (
    SELECT
      date,
      sales,
      SUM(sales) OVER (ORDER BY date) AS cumulative_sales
    FROM
      sales_data
  ) AS subquery;

2. Menggunakan Fungsi Jendela dengan Agregasi Bersyarat

Anda dapat menggunakan fungsi jendela bersama dengan agregasi bersyarat (misalnya, menggunakan pernyataan CASE) untuk melakukan perhitungan berdasarkan kondisi tertentu.

Contoh SQL:

SELECT
  date,
  sales,
  AVG(CASE WHEN sales > 100 THEN sales ELSE NULL END) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_average_high_sales
FROM
  sales_data;

Kueri ini menghitung rata-rata bergerak penjualan hanya untuk hari-hari ketika penjualan lebih besar dari 100.

3. Dekomposisi Rangkaian Waktu

Fungsi jendela dapat digunakan untuk menguraikan rangkaian waktu menjadi komponen tren, musiman, dan residu. Ini melibatkan penghitungan rata-rata bergerak untuk memperkirakan tren, mengidentifikasi pola musiman, dan kemudian mengurangi komponen tren dan musiman untuk mendapatkan residu.

4. Deteksi Anomali

Fungsi jendela dapat digunakan untuk mendeteksi anomali dalam data rangkaian waktu dengan menghitung rata-rata bergerak dan deviasi standar. Titik data yang berada di luar rentang tertentu (misalnya, +/- 3 deviasi standar dari rata-rata bergerak) dapat ditandai sebagai anomali.

Contoh Praktis di Berbagai Industri

1. Keuangan

2. Ritel

3. Manufaktur

4. Layanan Kesehatan

Memilih Alat yang Tepat

Fungsi jendela tersedia di berbagai alat pemrosesan data dan bahasa pemrograman, termasuk:

Pilihan alat tergantung pada kebutuhan spesifik dan keahlian teknis Anda. SQL sangat cocok untuk data yang disimpan dalam basis data relasional, sementara Python dan Spark lebih fleksibel untuk memproses kumpulan data besar dan melakukan analisis yang kompleks.

Praktik Terbaik

Kesimpulan

Fungsi jendela adalah alat yang kuat untuk analisis rangkaian waktu, yang memungkinkan Anda menghitung rata-rata bergerak, jumlah kumulatif, nilai lead/lag, dan metrik berbasis waktu lainnya. Dengan menguasai fungsi jendela, Anda dapat membuka wawasan berharga dari data rangkaian waktu Anda dan membuat keputusan yang lebih terinformasi. Baik Anda menganalisis data keuangan, data penjualan, data sensor, atau data lalu lintas web, fungsi jendela dapat membantu Anda mengidentifikasi pola, tren, dan anomali yang akan sulit dideteksi menggunakan teknik agregasi tradisional. Dengan memahami konsep utama dan sintaksis fungsi jendela serta mengikuti praktik terbaik, Anda dapat secara efektif memanfaatkannya untuk menyelesaikan berbagai masalah dunia nyata di berbagai industri.