1. Tổng quát
Bài viết này hướng dẫn phương pháp lấy log của Power BI Activity bằng cách sử dụng API, thực hiện trên Fabric Data Factory.
Mô hình tổng quát

2. Thực hiện
2.1. Chuẩn Bị
Cần chuẩn bị 2 thiết lập sau
2.1.1. Chuẩn bị Trên Azure
■ Tạo và config Service Principal dùng để chứng thực khi sử dụng
Vào Azure portal > Microsoft Entra ID để đăng ký service principal

Đăng ký service principal key

■ Tạo Security Group và add Service Principal thành member để đăng ký trên Fabric Tenant
Vào Azure portal > Microsoft Entra ID để đăng ký security group

Thêm Service Principal đã tạo vào Security Group

2.1.2. Chuẩn bị Fabric Tenant Settings
Trên Fabric, Chọn setting > Admin portal để mở tenant settings của fabric
※ Lưu ý: Bạn cần có quyền Fabric Admin để thực hiện thao tác này

2.2. Tạo Connection trên Fabric
Trên Fabic, chọn Settings > Manage Connections and gateways

Tạo mới 1 connection và thiết lập connection với các thông số sau:
| Mục Thiết Lập | Giá Trị | Ghi Chú |
|---|---|---|
| Connection | Cloud | Chọn loại connection là Cloud |
| Connection Name | <tự do> | Đặt tên cho connection |
| Connection Type | Web v2 | Chọn web v2 để thiết lập sử dụng API |
| Base Url | https://api.powerbi.com/v1.0/myorg/admin/ | Thiết lập api url |
| Token Audience Uri | https://analysis.windows.net/powerbi/api | Thiết lập token url |
| Authentication method | Service Principal | Chọn service principal để chứng thực khi kết nối |
| Tenant ID | <thiết lập azure tenant id của service principal> | cách gọi khác: Directory ID |
| Service principal ID | <thiết lập Service Principal ID> | cách gọi khác: Application (client) ID |
| Service principal key | <thiết lập Service Principal key> | cách gọi khác: client secret value |
| Privacy level | <thiết lập privacy level cho connection> | thiết lập privacy level tùy theo yêu cầu của hệ thống |
Tạo connection sử dụng api.powerbi.com


2.3. Tạo pipeline Trên Fabric
Tạo mới một pipeline và thiết lập pipeline như hình sau

2.3.1. Set StartDateTime Activity
Đây là 1 set variable activity để set thời gian bắt đầu lấy log
※ Mọi người có thể dùng các functions của pipeline để lấy ra giá trị ngày tháng thích hợp với yêu cầu

2.3.2. Set EndDateTime Activity
Đây là 1 set variable activity để set thời gian kết thúc lấy log
※ Mọi người có thể dùng các functions của pipeline để lấy ra giá trị ngày tháng thích hợp với yêu cầu

2.3.3. Data Copy Activity
Đây là 1 copy activity để thực hiện việc copy dữ liệu log power bi về fabric lakehouse
2.3.3.1. Thiết lập Source
Thiết lập source với:
Connection: Chọn connection đã tạo trên
Relative URL: Sử dụng pipeline expression builder để thiết lập các thông số cho activityevents như hình sau.

Lưu ý: Khi dùng Rest API, thì 1 lần request chỉ có thể lấy được 1h data log, nên chúng ta cần thực hiện nhiều request để lấy trọn 1 ngày data của PowerBIActivityEvents.
Track user activities in Power BI – Power BI | Microsoft Learn

Để thực hiện việc này chúng ta có 2 lựa chọn sau:
Lựa chọn 1: sử dụng vòng lặp cho xử lý
Chúng ta có thể thực hiện việc copy dữ liệu trong 1 vòng lặp và điều chỉnh startDateTime, endDateTime để thực hiện.
Ví dụ: xử lý 1 (2025-02-02T00:00:00.000Z ~ 2025-02-02T00:59:59.999Z), xử ly 2 (2025-02-02T01:00:00.000Z ~ 2025-02-02T01:59:59.999Z)
Lựa chọn 2: Chúng ta sử dụng “continuationUri”.
Việc thực hiện lấy data bằng copyActivity cũng cho phép chúng ta khai báo continuationUri. Nên đây là cách làm dễ dùng nhất mà chúng ta có thể thấy được. Cách thiết lập như hình sau:

2.3.3.2. Thiết lập Destination
Thiết lập destination với:
Connection: Chọn Bronze Lakehouse
Tùy vào thiết kết các layer dữ liệu, mọi người có thế chọn export dữ liệu thành file csv hay có thể update thẳng vào 1 table trong lakehouse.
Thiết lập trong hình dưới dùng để export log data thành file csv
※ Dùng pipeline expression để thiết lập tên file linh động hơn

2.3.3.3. Các thiết lập khác cho Copy Activity
Với các thiết lạp khác cho copy activity, các bạn có thể sử dụng giá trị mặc định.
Chú ý: Khi thiết lập export dữ liều vào table, cần thiết lập mapping cho từng column dữ liệu của table.
2.4. Chạy thử và kiểm tra kết quả

Kiểm tra dữ liệu trong lakehouse

review dữ liệu lấy được

2.5. Tổng kết và các nguồn tham khảo
Với cách làm trên, chúng ta có thể lấy được dữ liệu log của PowerBi Activity để cung cấp cho các ứng dụng quản lý, theo dõi tình trạng sử dụng tài nguyên trên Fabric.
Chú ý
Hiện tại việc lấy dữ liệu log bằng API trên bị giới hạn thời gian trích xuất dữ liệu là 1 ngày. Nên Cần có 1 thiết kế hợp lý để trích trữ dữ liệu hằng ngày vào lakehouse. Đây cũng là lý do chích phát sinh 2 set variable activity trên pipeline.
Tài liệu tham khảo:
Power BI REST APIs for embedded analytics and automation – Power BI REST API | Microsoft Learn
Admin – Get Activity Events – REST API (Power BI Power BI REST APIs) | Microsoft Learn
