Belajar BI Analyst - Power BI Dasar
Episode 8 of 28

Belajar BI Analyst - Power BI Dasar

Episode ini membawa kalian membangun report pertama di Power BI Desktop: menghubungkan data, merancang data model dengan relasi, menulis measure DAX untuk metrik, dan menyusun report Sales Performance dari model Superstore yang sudah kalian siapkan

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Setelah di episode 7 kalian memahami prinsip visualisasi, pada episode ini kita menerapkannya di tool BI pertama: Power BI Desktop. Power BI adalah tool dashboard paling banyak dipakai di korporasi Indonesia — menguasainya membuka banyak pintu karir.

Mengapa Power BI begitu populer? Karena ia menggabungkan tiga hal dalam satu produk: data model (mengelola relasi), DAX (bahasa kalkulasi), dan report building (visualisasi & publikasi). Kalian tidak perlu menyambung tiga tool terpisah. Di episode ini kalian akan membangun report nyata dari model Superstore — dashboard pertama yang benar-benar bekerja.

Alur Kerja Power BI Desktop

Power BI Desktop bekerja dalam tiga pane utama: Data, Model, dan Report.

  1. Data pane: mengimpor dan membersihkan data (Power Query).
  2. Model view: mendefinisikan relasi antar tabel.
  3. Report view: menyusun visual dan dashboard.

Alur pembangunan report yang profesional: import → model → measure → visual. Jangan mulai dari menyeret field ke kanvas sebelum model dan measure siap — itulah sumber dashboard berantakan.

Menghubungkan ke Database

Mulai dengan menghubungkan Power BI ke PostgreSQL bi_lab:

text
Get Data → Database → PostgreSQL database
Server: localhost
Database: bi_lab

Pilih tabel fact_orders, dim_customer, dan dim_product. Setelah diimpor, Power BI menampilkan semuanya di pane Data. Pastikan tipe kolom sudah benar: sales/profit sebagai Decimal, order_date sebagai Date.

Merancang Data Model

Di Model view, buat relasi antar tabel. Ini momen paling penting — relasi menentukan kecepatan dan kebenaran semua perhitungan:

text
dim_customer.customer_id  → (1) : (banyak) fact_orders.customer_id
dim_product.product_id    → (1) : (banyak) fact_orders.product_id
dim_customer.region       → (1) : (banyak) fact_orders.region

Pastikan arah filter dari dimension ke fact (filter satu dimension menyaring fact, bukan sebaliknya). Power BI menandai relasi one-to-many dengan ikon 1:* — inilah star schema yang kita rancang di episode 5, kini hidup di dalam tool.

Important

Aturan emas Power BI: jangan pernah menghitung metrik dengan menyeret kolom langsung ke visual. Selalu buat measure dengan DAX. Measure menghitung ulang sesuai konteks filter (slicer, filter, halaman) secara otomatis; kolom mentah tidak.

DAX: Bahasa Kalkulasi Power BI

DAX (Data Analysis Expressions) adalah bahasa formula Power BI — mirip formula Excel, tetapi berjalan di atas model relasional. Tiga measure pertama yang wajib kalian kuasai:

text
Revenue = SUM(fact_orders[sales])
 
Profit = SUM(fact_orders[profit])
 
Margin % = DIVIDE([Profit], [Revenue], 0)

Perhatikan pola:

  • [Revenue] dan [Profit] adalah measure — perhitungan dinamis yang merespons filter.
  • DIVIDE(a, b, 0) menangani pembagian dengan nol dengan aman (tidak menghasilkan error) — versi DAX dari NULLIF di SQL.
  • Measure memakai nama dalam tanda kurung [...], tabel dalam tanda kutip ganda '...'.

Measure Lanjutan: Konsep Konteks

Kekuatan DAX ada di filter context. Satu measure yang sama otomatis menghitung ulang saat visual difilter:

text
Revenue = SUM(fact_orders[sales])
 
Revenue FY2026 = CALCULATE([Revenue], fact_orders[order_date] >= DATE(2026, 1, 1))
 
Revenue vs Previous Month = 
    [Revenue] - CALCULATE([Revenue], PREVIOUSMONTH('dim_date'[date]))
  • CALCULATE(...) mengubah konteks filter — dasar dari semua perhitungan kondisional.
  • PREVIOUSMONTH(...) menghitung nilai periode sebelumnya — pola MoM (month-over-month) yang paling sering diminta stakeholder.

Untuk tren bulanan di report, gunakan tabel dim_date sebagai sumbu waktu (bukan order_date dari fact), lengkap dengan kolom year, month, quarter. Relasi dim_date[date] → fact_orders[order_date] membuat semua analisis waktu konsisten.

Membangun Report Sales Performance

Sekarang susun report sesuai layout dari episode 7:

  1. KPI cards di atas: Revenue, Profit, Margin %, ditambah AOV = DIVIDE([Revenue], DISTINCTCOUNT(fact_orders[order_id]), 0).
  2. Line chart: Revenue dengan sumbu dim_date[month] — garis tren bulanan.
  3. Bar chart: Revenue dengan sumbu dim_customer[region] — perbandingan antar region.
  4. Bar chart: Revenue dengan sumbu dim_product[category].
  5. Table: month, region, Revenue, Profit, Margin % untuk detail presisi.
  6. Slicer: dim_product[category] agar pembaca bisa memfilter interaktif.

Kembalikan ke prinsip episode 7: setiap visual menjawab satu pertanyaan, warna konsisten, dan KPI di posisi paling terlihat.

Common Pitfalls Power BI

  • Mengabaikan relasi: tanpa relasi benar, measure menghasilkan angka yang salah (duplikasi/blank).
  • Menyeret kolom, bukan measure: kolom mentah tidak menghormati filter dan membuat report sulit dipelihara.
  • Tanpa dim_date: analisis waktu menjadi ad-hoc dan tidak konsisten antar report.
  • Model satu tabel raksasa: lambat dan semua logika menyebar — pakai star schema seperti di episode 5.
  • DAX tanpa DIVIDE: pembagian oleh nol menghasilkan error yang merusak visual.

Penutup

Inti yang harus dibawa pulang:

  • Alur Power BI yang benar: import → model → measure → visual.
  • Bangun relasi star schema (one-to-many, filter dari dimension ke fact).
  • Measure DAX adalah cara menghitung yang benar: SUM, CALCULATE, DIVIDE, PREVIOUSMONTH.
  • Report Sales Performance: KPI cards + line tren + bar perbandingan + slicer.
  • Hindari pitfall: tanpa relasi, kolom mentah, dan tanpa dim_date.

Di episode 9 selanjutnya kita akan membahas tool kedua: Tableau Dasar — workbooks, calculated fields, dan dashboards. Kalian akan melihat bagaimana prinsip yang sama diekspresikan dengan gaya Tableau yang berbeda, dan bisa membandingkan mana yang paling cocok untuk kalian. Pastikan tetap semangat!