Mengatasi masalah definisi metrik yang bertabrakan antar dashboard dengan semantic layer dan metrics store, mempraktikkan desain semantic layer memakai dbt semantic layer untuk konsistensi metrik

Setelah di episode 10 kita mengamankan data, sekarang kita membahas masalah yang sangat nyata di hampir semua organisasi: "kenapa revenue di dashboard sales berbeda dengan di dashboard finance?" Penyebabnya hampir selalu sama — setiap tim mendefinisikan sendiri metrik yang sama dengan cara berbeda.
Mengapa episode ini penting? Karena perbedaan definisi metrik adalah salah satu sumber konflik dan distorsi keputusan terbesar. Dua angka revenue yang berbeda membuat manajemen ragu, tim saling menyalahkan, dan data kehilangan otoritas. Semantic layer adalah solusi arsitektural untuk masalah yang terlihat seperti masalah politik ini.
Tanpa semantic layer, setiap konsumen mendefinisikan metrik sendiri:
Tim Sales: revenue = SUM(total_amount) WHERE status != 'canceled'
Tim Finance: revenue = SUM(amount - discount) WHERE status = 'done'
Tim Marketing: revenue = SUM(total_amount) WHERE channel = 'paid'
Tim Ops: revenue = SUM(paid_amount)Empat angka berbeda untuk "revenue" yang sama. Dashboard mana yang benar? Jawaban seharusnya: satu, yang didefinisikan sekali di semantic layer.
Semantic layer adalah lapisan antara data fisik (gold layer) dan konsumen (dashboard/BI/API) yang menyimpan definisi bisnis metrik dan logika pemakaian dalam satu tempat. Konsumen tidak perlu tahu struktur tabel — mereka cukup memakai metrik bernama.
Manfaat untuk arsitek:
Metrics store adalah penyimpanan dan API untuk definisi metrik — dan sering dipakai bergantian dengan semantic layer. Secara praktik:
| Istilah | Fokus |
|---|---|
| Semantic layer | Lapisan logika + query engine untuk metrik |
| Metrics store | Tempat definisi metrik hidup (definisi, metadata, versioning) |
Di 2026, istilah-istilah ini saling tumpang tindih; yang penting bagi arsitek adalah kapabilitas: definisi terpusat, versioning, query execution, dan integrasi dengan BI.
dbt semantic layer adalah implementasi paling populer untuk SQL-first stack: metrik didefinisikan di dbt (kode, versionable, ter-review), lalu disajikan lewat API (GraphQL) ke berbagai BI tool. Konsumen BI tidak menulis SQL ke tabel, tapi memanggil metrik.
semantic_models:
- name: orders
model: ref('fact_sales')
defaults:
agg_time_dimension: order_date
entities:
- name: order
type: primary
expr: order_id
dimensions:
- name: order_date
type: time
- name: status
type: categorical
- name: channel
type: categorical
measures:
- name: total_amount
agg: sum
metrics:
- name: revenue
description: "Pendapatan bersih dari pesanan yang selesai"
type: simple
type_params:
measure: total_amount
filter: "{{ Dimension('status') }} = 'done'"Perhatikan: definisi revenue sekarang tunggal — SUM(total_amount) dengan filter status = 'done'. Siapa pun yang memakai metrik revenue mendapat angka yang sama persis.
Konsumen BI memakai metrik lewat API:
query {
metric(metric: "revenue") {
measure(grains: [day]) {
grain
endTime
value
}
dimensions {
name
values
}
}
}Hasilnya selalu konsisten — tidak peduli konsumennya Looker, Tableau, atau notebook Python.
Semantic layer memakai model gold (star schema, episode 3-4) sebagai sumber — bukan langsung dari silver. Konsistensi dimulai dari sini: definisi bisnis sudah dirapikan sebelum metrik dibangun.
Nama metrik (revenue, active_customers, gross_margin) harus bisa dipahami konsumen bisnis, bukan sum_col_7. Setiap metrik punya deskripsi dan owner.
Metrik tanpa owner akan jadi "milik semua, dijaga tidak ada". Tetapkan steward per metrik (hubungkan ke governance di episode 8).
Definisi metrik berubah seiring aturan bisnis. Simpan perubahan sebagai kode (Git history) dengan proses review — bukan diubah langsung di BI tool.
Semantic layer bukan tempat menampung ratusan metrik yang tidak dipakai. Mulai dari metrik kritis yang paling sering menimbulkan konflik (revenue, margin, customer count), lalu perluas.
Warning
Kesalahan umum: mendefinisikan metrik di semantic layer tapi tetap membiarkan konsumen menulis SQL langsung ke tabel gold. Begitu satu dashboard "pintar" melewati semantic layer, definisi ganda kembali muncul. Arsitek harus menetapkan semantic layer sebagai satu-satunya jalan menuju data analitis — bukan pilihan.
Tip
Mulai dengan satu metrik kontroversial: minta finance dan sales menyetujui satu definisi revenue, tulis di dbt, lalu bawa kedua dashboard tim tersebut ke metrik yang sama. Keberhasilan satu metrik adalah bukti paling kuat untuk memperluas semantic layer ke seluruh organisasi.
1. Identifikasi 5-10 metrik kritis yang paling sering bertabrakan definisi
2. Amankan satu definisi per metrik bersama stakeholder (bukan sendiri)
3. Bangun semantic model di dbt atas gold layer (measure + dimension + entity)
4. Definisikan metrik dengan filter dan agregasi yang jelas
5. Hubungkan ke BI via API; blokir akses SQL langsung ke tabel gold
6. Uji: jalankan metrik yang sama di dua BI tool → angka harus identikInti yang harus dibawa pulang:
Di episode 12 selanjutnya kita akan membahas Data Mesh & Decentralization — membalik model terpusat menjadi domain ownership, data products, dan federated governance. Sampai jumpa di episode 12!