# Analisis jualan BCL anda dalam Power BI

> Export transaksi berbayar dari BCL dan bina laporan Power BI tentang jualan mengikut form, saluran bayaran dan hari, atau tarik data dari BCL API.
>
> Source: https://docs.bcl.my/ms/power-bi/

BCL tidak ada connector Power BI terbina dalam, tetapi data jualan anda mudah dipindahkan. Export transaksi berbayar anda dari BCL, kemaskan fail itu dalam Excel, dan bina laporan dalam Power BI Desktop (percuma) yang menunjukkan jumlah jualan mengikut form, saluran bayaran dan hari. Jika anda biasa dengan API, Power BI juga boleh membaca transaksi anda terus dari BCL API.

## Export transaksi berbayar anda

Mulakan dengan fail Excel untuk bayaran anda yang berjaya:

1. Di sidebar, klik **Transactions**.
2. Klik tab **Successful**, kemudian klik **Export All**.

   *(Screenshot: Page Transactions dengan Transactions di sidebar, tab Successful dan butang Export All ditanda)*

3. Kekalkan lajur default dan klik **Submit**. Fail Excel itu dimuat turun.

   *(Screenshot: Panel Export All dengan butang Submit ditanda)*

Untuk semua pilihan export, lihat [Export transaksi anda](/ms/export-transactions/).

## Kekalkan satu baris untuk setiap pesanan

Fail export ada satu baris untuk setiap item dalam pesanan, dan setiap baris mengulang **Total Amount (RM)** pesanan itu. Buang baris yang berlebihan dahulu, atau Power BI akan mengira pesanan itu lebih daripada sekali:

1. Buka fail itu dalam Excel, atau dalam Excel for the web selepas anda muat naik fail itu ke OneDrive.
2. Klik **Data** → **Remove Duplicates**.
3. Buang tanda pada **Select all columns**, tandakan **Order Number** sahaja, biarkan **My data has headers** ditandakan dan klik **OK**.

   *(Screenshot: Kotak Remove Duplicates dengan Order Number sahaja ditandakan dan butang OK ditanda)*

4. Simpan fail itu.

Excel memberitahu berapa banyak baris pendua yang dibuang. Baris yang tinggal ialah satu baris untuk setiap pesanan yang dibayar.

## Bina laporan dalam Power BI Desktop

Power BI Desktop ialah aplikasi Windows percuma daripada Microsoft. Bina laporan di situ, kemudian publish ke Power BI service:

1. Buka Power BI Desktop dan klik **Excel workbook**.

   *(Screenshot: Page mula Power BI Desktop dengan jubin Excel workbook ditanda)*

2. Pilih fail export yang sudah anda simpan. Dalam **Navigator**, tandakan **Worksheet** dan klik **Load**.
3. Tambah tiga visual ini daripada panel **Visualizations**, dan tandakan ruangan dalam panel **Data**:

   | Visual | Ruangan | Apa yang ditunjukkan |
   | --- | --- | --- |
   | Clustered bar chart | **Form Name**, **Total Amount (RM)** | Jumlah jualan mengikut form |
   | Donut chart | **Payment Channel**, **Total Amount (RM)** | Jumlah jualan mengikut saluran bayaran, seperti FPX atau DuitNow QR |
   | Clustered column chart | **Transaction Date** (mengikut hari), **Total Amount (RM)** | Jumlah jualan mengikut hari |

4. Simpan laporan itu, kemudian klik **Publish** dan pilih **My workspace**. Buka laporan itu di [app.powerbi.com](https://app.powerbi.com) untuk melihatnya dalam browser anda atau berkongsi laporan itu dalam organisasi anda.

Untuk mengemas kini laporan, export sekali lagi, gantikan fail itu, dan klik **Refresh** dalam Power BI Desktop sebelum anda publish semula.

## Lanjutan: baca jualan anda dari BCL API

Power BI Desktop boleh memanggil BCL API dan tidak perlu membaca fail export. Anda memerlukan API token BCL dengan kebenaran **API Read**, dari **Platform Setup** → **Integrations** → **API Token**. Lihat [Cipta API token](/ms/api-tokens/).

> **Caution**
> API ini hanya menyenaraikan transaksi live. Bayaran Test Mode tidak dipaparkan dalam `/transactions`.

1. Dalam Power BI Desktop, klik **Get data from other sources** di page mula (atau **Get data** dalam tab **Home**), cari **Web**, pilih dan klik **Connect**.

   *(Screenshot: Kotak Get Data dengan connector Web dan butang Connect ditanda)*

2. Pilih **Advanced**. Masukkan `https://api.bcl.my/v1/transactions` dan `?per_page=100` sebagai **URL parts**. Di bawah **HTTP request header parameters**, tambah **Authorization** dengan `Bearer ` diikuti token anda, klik **Add header**, dan tambah **User-Agent** dengan nama untuk aplikasi anda, contohnya `KopiKampung-PowerBI/1.0`. BCL menolak request tanpa User-Agent yang betul. Klik **OK**.

   *(Screenshot: Kotak From Web dalam mod Advanced dengan URL parts serta header Authorization dan User-Agent ditanda)*

3. Jika Power BI bertanya cara untuk menyambung, pilih **Anonymous** dan klik **Connect**. Token anda sudah dihantar dalam header. Power Query dibuka dan menukar JSON itu kepada jadual.

Query pertama itu membaca satu page dengan sehingga 100 transaksi. Untuk membaca setiap page dan mengekalkan lajur yang anda perlukan sahaja, klik **Advanced Editor** dalam Power Query dan gantikan query itu dengan yang ini. Letakkan token anda di tempat `YOUR_API_TOKEN`:

```text
let
    Token = "YOUR_API_TOKEN",
    GetPage = (page as number) =>
        Json.Document(Web.Contents("https://api.bcl.my/v1", [
            RelativePath = "transactions",
            Query = [per_page = "100", page = Number.ToText(page)],
            Headers = [
                Authorization = "Bearer " & Token,
                #"User-Agent" = "KopiKampung-PowerBI/1.0",
                Accept = "application/json"
            ]
        ])),
    FirstPage = GetPage(1),
    AllRows = List.Combine(
        List.Transform({1..FirstPage[meta][last_page]}, each GetPage(_)[data])
    ),
    Orders = Table.FromRecords(AllRows,
        {"order_number", "created_at", "payer_name", "amount", "status",
         "payment_channel", "form_type", "remarks"}, MissingField.UseNull),
    Typed = Table.TransformColumnTypes(Orders,
        {{"created_at", type datetime}, {"amount", type number}})
in
    Typed
```

*(Screenshot: Power Query Advanced Editor dengan query untuk membaca setiap page)*

Klik **Done**, beri nama kepada query itu (contohnya **BCL Orders**) di bawah **Query Settings**, dan klik **Close & Apply**. API ini memulangkan satu baris untuk setiap transaksi, jadi tiada baris item yang perlu dibuang. Ia merangkumi semua status, jadi filter lajur **status** kepada bayaran yang berjaya sebelum anda menjumlahkan jualan.

*(Screenshot: Power Query dengan query BCL Orders, satu baris untuk setiap transaksi, dan ruangan Name ditanda)*

## Tips

Beberapa tabiat ini memastikan laporan anda tepat dan selamat:

- **Export tab Successful sahaja.** Bayaran yang pending, gagal dan dibatalkan dalam fail export akan menjadikan jumlah jualan anda lebih tinggi daripada sebenar.
- **Guna nama fail yang sama setiap kali.** Gantikan fail export lama dengan yang baru di bawah nama yang sama, dan **Refresh** dalam Power BI Desktop akan mengambil data baru tanpa perlu membina semula visual.
- **Jauhkan API token anda daripada fail yang dikongsi.** Token itu berada di dalam query laporan. Jangan hantar fail .pbix kepada orang yang tidak sepatutnya membaca data BCL anda, dan beri token itu kebenaran **API Read** sahaja.
- **Mahu pesanan baru masuk ke Excel serta-merta?** Lihat [Hantar pesanan ke Excel dengan Power Automate](/ms/excel-power-automate/).

## Isu biasa

### Kenapa jumlah jualan saya dalam Power BI lebih tinggi daripada dalam BCL?

Fail export BCL ada satu baris untuk setiap item, dan setiap baris mengulang Total Amount (RM) pesanan itu. Buang baris pendua mengikut Order Number sebelum anda menjumlahkan total.

### Boleh Power BI membaca data BCL saya secara terus?

Boleh, dengan Power BI Desktop dan BCL API. Guna Get data → Web, hantar API token anda dalam header Authorization dan tetapkan User-Agent anda sendiri. API ini hanya menyenaraikan transaksi live.

### Kenapa saya hanya nampak spreadsheet selepas import fail Excel ke Power BI service?

Power BI service membuka fail Excel yang di-import sebagai workbook untuk dilihat, bukan sebagai data untuk laporan. Bina laporan dalam Power BI Desktop, kemudian publish ke workspace anda.
