用Power BI分析你的BCL销售
BCL没有内置的Power BI连接器,但你的销售数据很容易转过去。从BCL导出已付款的交易,在Excel整理文件,然后在Power BI Desktop(免费)制作报告,按表单、付款渠道和日期显示营业额。如果你熟悉API,Power BI也可以直接从BCL API读取你的交易。
导出已付款的交易
Section titled “导出已付款的交易”先准备一个包含成功付款的Excel文件:
-
在侧边栏点击Transactions。
-
点击Successful标签页,然后点击Export All。

-
保留默认的列,点击Submit。Excel文件就会下载。

所有导出选项,请看导出你的交易。
每笔订单只保留一行
Section titled “每笔订单只保留一行”导出的文件里,订单的每个产品各占一行,而且每一行都会重复该订单的Total Amount (RM)。先删除多出来的行,否则Power BI会把这些订单计算不止一次:
-
用Excel打开文件,或上传到OneDrive后用Excel for the web打开。
-
点击Data → Remove Duplicates。
-
取消勾选Select all columns,只勾选Order Number,保持勾选My data has headers,然后点击OK。

-
保存文件。
Excel会告诉你删除了多少个重复的行。剩下的行,每笔已付款订单一行。
在Power BI Desktop制作报告
Section titled “在Power BI Desktop制作报告”Power BI Desktop是Microsoft推出的免费Windows App。先在那里制作报告,然后发布到Power BI service:
-
打开Power BI Desktop,点击Excel workbook。

-
选择你保存好的导出文件。在Navigator勾选Worksheet,然后点击Load。
-
从Visualizations窗格添加这三个视觉对象,并在Data窗格勾选栏位:
视觉对象 栏位 显示什么 Clustered bar chart Form Name、Total Amount (RM) 按表单的营业额 Donut chart Payment Channel、Total Amount (RM) 按付款渠道的营业额,例如FPX或DuitNow QR Clustered column chart Transaction Date(按日)、Total Amount (RM) 按日的营业额 -
保存报告,然后点击Publish,选择My workspace。在app.powerbi.com打开报告,就可以在浏览器查看,或在你的机构内分享。
要更新报告,就重新导出,替换文件,然后在Power BI Desktop点击Refresh刷新数据,再重新发布。
进阶:从BCL API读取你的销售
Section titled “进阶:从BCL API读取你的销售”Power BI Desktop可以调用BCL API,不必读取导出的文件。你需要一个拥有API Read权限的BCL API token,在Platform Setup → Integrations → API Token获取。请看API tokens。
-
在Power BI Desktop开始页面点击Get data from other sources(或在Home标签页点击Get data),搜索Web,选择它,然后点击Connect。

-
选择Advanced。在URL parts输入
https://api.bcl.my/v1/transactions和?per_page=100。在HTTP request header parameters下,添加Authorization,值是Bearer加上你的token,点击Add header,再添加User-Agent,值是你的App名称,例如KopiKampung-PowerBI/1.0。没有正确User-Agent的请求会被BCL拒绝。点击OK。
-
如果Power BI问你要怎样连接,选择Anonymous,然后点击Connect。你的token已经在header里发送。Power Query会打开,并把JSON转换成表格。
第一个查询只读取一页,最多100笔交易。要读取所有页面,并只保留你需要的列,就在Power Query点击Advanced Editor,把查询换成下面这个。把YOUR_API_TOKEN换成你的token:
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
点击Done,在Query Settings下为查询命名(例如BCL Orders),然后点击Close & Apply。API每笔交易返回一行,所以没有产品行需要删除。它包含所有状态,所以加总营业额之前,先把status列筛选为成功的付款。

几个好习惯,让你的报告准确又安全:
- 只导出Successful标签页。导出文件里的待处理、失败和已取消付款会让营业额虚高。
- 每次使用相同的文件名。用同一个名称把旧的导出文件换成新的,在Power BI Desktop点击Refresh,就能刷新到新数据,不用重新制作视觉对象。
- 不要把API token放在共享的文件里。Token就在报告的查询里。不要把.pbix文件发给不应该看到你BCL数据的人,而且只给tokenAPI Read权限。
- 想让新订单一进来就出现在Excel?请看用Power Automate把订单发送到Excel。
常见问题
为什么Power BI里的营业额比BCL高?
BCL导出的文件每个产品一行,每一行都会重复该订单的Total Amount (RM)。加总之前,先按Order Number删除重复的行。
Power BI可以直接读取我的BCL数据吗?
可以,使用Power BI Desktop和BCL API。使用Get data → Web,在Authorization header发送你的API token,并设置你自己的User-Agent。API只列出真实交易。
我把Excel文件导入Power BI service,却只看到电子表格。为什么?
Power BI service会把导入的Excel文件当作工作簿打开查看,而不是报告用的数据。请在Power BI Desktop制作报告,然后发布到你的工作区。