Lưu trữ hàng tháng: Tháng mười một 2024

Bảo vệ dữ liệu trong Power BI – Power BI Data Protection

Power BI Data Protection – Sensitivity Labels and Data Loss Prevention

Power BI Data Protection giúp bảo vệ dữ liệu nhạy cảm trong báo cáo, datasets và dashboards bằng cách sử dụng Sensitivity Labels (nhãn nhạy cảm) và Data Loss Prevention (DLP). Các công cụ này giúp bạn đảm bảo tuân thủ quy định bảo mật dữ liệu và ngăn chặn rò rỉ dữ liệu ngoài tổ chức.


1. Sensitivity Labels

Sensitivity Labels trong Power BI cho phép bạn gán cấp độ bảo mật cho dữ liệu, giúp kiểm soát cách dữ liệu được truy cập, chia sẻ và sử dụng.

Các Cấp Độ Nhãn Mẫu

  • Public: Dữ liệu công khai, không cần bảo vệ.
  • Internal: Dữ liệu chỉ sử dụng trong nội bộ.
  • Confidential: Dữ liệu cần được bảo vệ cao.
  • Highly Confidential: Dữ liệu đặc biệt nhạy cảm, yêu cầu kiểm soát nghiêm ngặt.

2. Data Loss Prevention (DLP)

DLP giúp giám sát và ngăn chặn rò rỉ dữ liệu nhạy cảm ra ngoài tổ chức. Tính năng này tự động phát hiện nội dung nhạy cảm trong báo cáo/datasets và áp dụng quy định phù hợp.


Hướng Dẫn Từng Bước: Sensitivity Labels

Bước 1: Cấu Hình Sensitivity Labels Trong Microsoft Purview

  1. Đăng nhập Microsoft Purview Compliance Portal:
  2. Vào Information Protection > Labels.
  3. Nhấp Create a label:
    • Name: Confidential.
    • Description: Chỉ dành cho nội bộ, không chia sẻ ra ngoài tổ chức.
    • Nhấp Next.
  4. Cấu hình quyền bảo vệ:
    • Bật Encryption > Chọn quyền Only people in your organization.
    • Nhấn Save.

Bước 2: Kích Hoạt Sensitivity Labels Trong Power BI

  1. Truy cập Power BI Service (https://app.powerbi.com).
  2. Vào Admin Portal > Tenant Settings.
  3. Trong mục Information Protection, bật:
    • Enable sensitivity labels in Power BI.
    • Mandatory labeling for Power BI content (nếu muốn yêu cầu bắt buộc áp dụng nhãn).

Bước 3: Áp Dụng Sensitivity Labels

  1. Mở Power BI Desktop.
  2. Mở báo cáo bạn muốn áp dụng nhãn nhạy cảm.
  3. Ở góc trên bên phải, chọn Sensitivity:
    • Chọn Confidential từ danh sách nhãn.
  4. Lưu file báo cáo và xuất lên Power BI Service.

Bước 4: Kiểm Tra Sensitivity Labels Trong Power BI Service

  1. Trong Power BI Service, mở báo cáo vừa đăng tải.
  2. Bạn sẽ thấy nhãn Confidential hiển thị ở góc phải trên cùng.

Hướng Dẫn Từng Bước: Data Loss Prevention (DLP)

Bước 1: Tạo Chính Sách DLP Trong Microsoft Purview

  1. Đăng nhập Microsoft Purview Compliance Portal.
  2. Vào Data Loss Prevention > Policies > Create policy.
  3. Chọn phạm vi áp dụng:
    • Choose locations: Chọn Power BI.
  4. Cấu hình điều kiện:
    • Sensitive information types: Chọn loại dữ liệu (ví dụ: Thông tin tài chính, số thẻ tín dụng).
    • Actions:
      • Cảnh báo (Notify users).
      • Chặn hành động chia sẻ (Block sharing).

Bước 2: Áp Dụng Chính Sách DLP

  1. Trong Power BI Service, mở báo cáo hoặc dataset có chứa thông tin nhạy cảm.
  2. DLP sẽ tự động phát hiện thông tin nhạy cảm và:
    • Gửi cảnh báo nếu vi phạm chính sách.
    • Ngăn không cho chia sẻ báo cáo nếu dữ liệu vượt phạm vi bảo vệ.

Bước 3: Kiểm Tra Và Điều Chỉnh Chính Sách

  1. Quay lại Microsoft Purview Compliance Portal.
  2. Vào Data Loss Prevention > Activity explorer.
  3. Xem báo cáo chi tiết về các hành động:
    • Dữ liệu nhạy cảm nào bị phát hiện.
    • Ai đã vi phạm chính sách.

Ví Dụ Thực Tế

Tình Huống 1: Bảo Vệ Dữ Liệu Nhạy Cảm

  1. Báo cáo Power BI chứa dữ liệu tài chính của khách hàng.
  2. Áp dụng nhãn Highly Confidential:
    • Chỉ người trong tổ chức mới truy cập được.
    • Chặn tải xuống hoặc in ấn báo cáo.

Tình Huống 2: Phát Hiện Rò Rỉ Dữ Liệu

  1. Một báo cáo Power BI chứa số thẻ tín dụng.
  2. Chính sách DLP tự động phát hiện và ngăn không cho báo cáo được chia sẻ bên ngoài tổ chức.

Kết Quả Sau Khi Áp Dụng

Tính NăngLợi Ích
Sensitivity LabelsGắn nhãn nhạy cảm và kiểm soát chia sẻ dữ liệu.
DLP PoliciesTự động phát hiện và ngăn chặn rò rỉ dữ liệu nhạy cảm.

Phân quyền RLS – trong Power BI

Trong Power BI, các hàm PATH, PATHITEM, và PATHCONTAINS thường được sử dụng để thiết lập Row-Level Security (RLS) cho các cấu trúc dữ liệu dạng phân cấp (hierarchical data). Các hàm này giúp kiểm soát và cấp quyền truy cập dữ liệu theo cấp bậc, chẳng hạn như trong tổ chức có nhiều cấp quản lý (giám đốc, trưởng phòng, nhân viên) hoặc phân cấp sản phẩm (nhóm sản phẩm, loại sản phẩm, sản phẩm).

1. Hàm PATH

  • Mục đích: PATH tạo ra một chuỗi đại diện cho đường dẫn phân cấp từ một cấp thấp nhất lên cấp cao nhất.
  • Cú pháp: PATH(<child_column>, <parent_column>)
    • child_column: Cột chứa giá trị của cấp hiện tại.
    • parent_column: Cột chứa giá trị của cấp trên.
  • Ứng dụng: PATH được dùng để tạo ra một chuỗi đại diện cho mối quan hệ phân cấp, giúp xác định mối quan hệ từ cấp dưới đến cấp trên trong một tổ chức hoặc hệ thống phân cấp.

Ví dụ

Giả sử bạn có bảng Employee với hai cột EmployeeID (mã nhân viên) và ManagerID (mã quản lý của nhân viên đó). Bạn có thể dùng PATH để xác định chuỗi phân cấp từ một nhân viên đến cấp quản lý cao nhất.

DAX: EmployeePath = PATH(Employee[EmployeeID], Employee[ManagerID])

Kết quả là cột EmployeePath sẽ chứa chuỗi đại diện cho đường dẫn phân cấp từ nhân viên đến các cấp quản lý.

2. Hàm PATHITEM

  • Mục đích: PATHITEM truy xuất một phần tử cụ thể từ đường dẫn phân cấp được tạo bởi PATH.
  • Cú pháp: PATHITEM(<path>, <position>, <datatype>)
    • path: Chuỗi phân cấp được tạo bởi PATH.
    • position: Vị trí của phần tử cần lấy trong đường dẫn.
    • datatype: (Tuỳ chọn) Kiểu dữ liệu của kết quả (INTEGER hoặc TEXT).
  • Ứng dụng: PATHITEM giúp trích xuất các cấp cụ thể trong một chuỗi phân cấp. Hàm này hữu ích khi bạn cần xác định các cấp bậc cụ thể để phân quyền truy cập.

Ví dụ

Tiếp tục với ví dụ bảng Employee, bạn có thể dùng PATHITEM để lấy cấp quản lý đầu tiên của mỗi nhân viên:

DAX FirstManager = PATHITEM(Employee[EmployeePath], 1, INTEGER)

Kết quả sẽ trả về EmployeeID của cấp quản lý đầu tiên (cấp cao nhất) trong chuỗi phân cấp của mỗi nhân viên.

3. Hàm PATHCONTAINS

  • Mục đích: PATHCONTAINS kiểm tra xem một giá trị cụ thể có tồn tại trong chuỗi phân cấp hay không.
  • Cú pháp: PATHCONTAINS(<path>, <item>)
    • path: Chuỗi phân cấp được tạo bởi PATH.
    • item: Giá trị cần kiểm tra.
  • Ứng dụng: PATHCONTAINS rất hữu ích khi thiết lập bảo mật cấp dòng (RLS) để kiểm tra quyền truy cập. Hàm này giúp xác định xem người dùng hiện tại có thuộc nhánh phân cấp cần truy cập hay không.

Ví dụ

Nếu bạn muốn kiểm tra xem một nhân viên có nằm dưới sự quản lý của một cấp quản lý cụ thể (ví dụ, ManagerID101) hay không, bạn có thể dùng PATHCONTAINS:

DAX IsUnderManager101 = PATHCONTAINS(Employee[EmployeePath], "101")

Kết quả sẽ trả về TRUE nếu EmployeePath chứa mã 101, nghĩa là nhân viên này nằm dưới quản lý của người có mã 101.

Ứng dụng của các hàm này trong bảo mật (Row-Level Security)

Các hàm PATH, PATHITEM, và PATHCONTAINS giúp thiết lập bảo mật cấp dòng dựa trên mối quan hệ phân cấp:

  • Thiết lập RLS dựa trên phân cấp: Bạn có thể thiết lập các quy tắc bảo mật để cấp quyền truy cập dựa trên đường dẫn phân cấp. Ví dụ, nếu một người dùng là quản lý của một nhóm, bạn có thể sử dụng các hàm này để cho phép họ xem dữ liệu của tất cả nhân viên nằm trong nhánh của họ.
  • Ví dụ RLS với PATHCONTAINS: Giả sử bạn muốn cấp quyền truy cập cho người dùng dựa trên EmployeeID, và muốn họ có thể xem dữ liệu của tất cả nhân viên trong nhánh của họ. Bạn có thể tạo một quy tắc RLS trong Power BI như sau:DAX: PATHCONTAINS(Employee[EmployeePath], USERPRINCIPALNAME())

Trong ví dụ trên, hàm USERPRINCIPALNAME() lấy địa chỉ email của người dùng hiện tại, và PATHCONTAINS kiểm tra xem người dùng có nằm trong chuỗi phân cấp cần truy cập hay không. Điều này đảm bảo người dùng chỉ có thể xem dữ liệu của các nhân viên nằm trong nhánh của họ, đáp ứng yêu cầu bảo mật cấp dòng (RLS).

Với các hàm này, bạn có thể quản lý quyền truy cập dữ liệu theo cấu trúc phân cấp phức tạp, giúp bảo mật dữ liệu một cách hiệu quả và dễ dàng quản lý hơn trong Power BI.

Thiết lập bảo mật cấp hàng động

Hàm Path cho biết các cấp quan hệ đệ quy cho trong bảng

VD: UserPath = PATH(Users[UserID],Users[ManagerID])

Thực hiện hàm Lookupvalue để xác định email của cấp quản lý

ManagerEmail = LOOKUPVALUE(Users[UserEmail],Users[UserID],Users[ManagerID])

Sử dụng hàm PATH ddể tìm ra danh sách email cấp quản lý tương ứng như USERPATH ở trên: ManagerPath = path(Users[UserEmail],Users[ManagerEmail])

THIẾT LẬP PHÂN QUYỀN ĐỘNG tại cột useremail VỚI HÀM

PATHCONTAINS(
Users[ManagerPath],
USERPRINCIPALNAME()
)

Tự tạo biểu đồ box plot trong power bi với Node.js

Để tạo một biểu đồ Box Plot trong Power BI với tệp .pbiviz, bạn sẽ cần sử dụng Power BI Visual Tools (PBIVIZ)D3.js (hoặc Plotly.js) để xây dựng biểu đồ tùy chỉnh. Dưới đây là hướng dẫn chi tiết từng bước để tạo một custom visual dạng Box Plot cho Power BI.

Các Bước Chuẩn Bị

  1. Cài đặt Node.js: Nếu chưa cài đặt, hãy tải và cài đặt Node.js.
  2. Cài đặt Power BI Visual Tools (PBIVIZ):
    • Mở Command Prompt hoặc Terminal và chạy lệnh sau để cài đặt:npm install -g powerbi-visuals-tools
  3. Tạo thư mục dự án cho visual của bạn (ví dụ BoxPlotVisual) và khởi tạo visual mới trong thư mục này.

Bước 1: Khởi Tạo Dự Án Box Plot

  1. Khởi tạo dự án: Mở Command Prompt hoặc Terminal và chạy lệnh sau để tạo một visual mới:pbiviz new BoxPlotVisual
  2. Chuyển vào thư mục dự án mới tạo:cd BoxPlotVisual

Bước 2: Cấu Hình và Phát Triển Box Plot

  1. Chỉnh sửa file cấu hình pbiviz.json:
    • Mở tệp pbiviz.json trong thư mục BoxPlotVisual.
    • Thay đổi các thuộc tính như displayNamedescription để mô tả visual của bạn.
    • Đảm bảo apiVersion là phiên bản mới nhất hỗ trợ Power BI.
  2. Cài đặt thư viện D3 hoặc Plotly (thường dùng để tạo biểu đồ box plot):npm install d3 Hoặc nếu bạn sử dụng Plotly:npm install plotly.js

Bước 3: Chỉnh Sửa Mã Nguồn Trong visual.ts

Mở file visual.ts trong thư mục src. Đây là nơi bạn sẽ viết mã TypeScript để tạo Box Plot.

Nhập thư viện D3 hoặc Plotly vào visual.ts: import * as d3 from 'd3'; // Hoặc nếu dùng Plotly: import * as Plotly from 'plotly.js-dist';

Xử lý dữ liệu:

Viết hàm để xử lý dữ liệu từ Power BI và chuyển nó thành định dạng phù hợp cho Box Plot. Ví dụ, chuyển dữ liệu thành các nhóm cho từng giá trị phân loại.

import * as d3 from "d3";

function processDataForBoxPlot(data: { Category: string; Value: number }[]) {
// Nhóm dữ liệu theo Category
const groupedData = d3.group(data, d => d.Category);

// Tạo một mảng để chứa dữ liệu theo định dạng cho Box Plot
const boxPlotData = Array.from(groupedData, ([key, values]) => {
    const sortedValues = values.map(d => d.Value).sort(d3.ascending);

    // Tính toán các thông số cho Box Plot
    const q1 = d3.quantile(sortedValues, 0.25);
    const median = d3.quantile(sortedValues, 0.5);
    const q3 = d3.quantile(sortedValues, 0.75);
    const interQuantileRange = q3 - q1;
    const min = d3.min(sortedValues);
    const max = d3.max(sortedValues);

    // Tìm các giá trị ngoại lệ
    const lowerFence = q1 - 1.5 * interQuantileRange;
    const upperFence = q3 + 1.5 * interQuantileRange;
    const outliers = sortedValues.filter(v => v < lowerFence || v > upperFence);

    return {
        category: key,
        q1: q1,
        median: median,
        q3: q3,
        min: min,
        max: max,
        outliers: outliers
    };
});

return boxPlotData;

}

Giải thích hàm processDataForBoxPlot

  • Nhóm dữ liệu: Dùng d3.group để nhóm dữ liệu theo Category, cho phép mỗi Category có một tập hợp các giá trị Value.
  • Tính toán các thống kê Box Plot:
    • q1: Tứ phân vị thứ nhất, bằng 25% của dữ liệu.
    • median: Trung vị (tứ phân vị thứ hai, 50%).
    • q3: Tứ phân vị thứ ba, 75% của dữ liệu.
    • interQuantileRange (IQR): Đoạn cách giữa tứ phân vị thứ ba và tứ phân vị thứ nhất, giúp xác định các giá trị ngoại lệ.
    • minmax: Giá trị nhỏ nhất và lớn nhất trong tập dữ liệu.
  • Tính toán giá trị ngoại lệ:
    • Sử dụng công thức lowerFence = q1 - 1.5 * IQRupperFence = q3 + 1.5 * IQR để xác định các giá trị nằm ngoài phạm vi bình thường.
    • Các giá trị nằm dưới lowerFence hoặc trên upperFence được coi là ngoại lệ và lưu vào outliers.
  • Trả về dữ liệu Box Plot: Kết quả cuối cùng là một mảng các đối tượng chứa các thông tin cần thiết cho Box Plot, bao gồm category, q1, median, q3, min, max, và outliers.

Vẽ Box Plot:

Nếu bạn dùng D3.js, hãy sử dụng D3 để tạo Box Plot từ dữ liệu đã xử lý. Dưới đây là ví dụ mã cơ bản:

// Thêm hàm vẽ box plot vào hàm update của visual public

update(options: VisualUpdateOptions) {

// Lấy dữ liệu và xử lý thành định dạng phù hợp

const data = options.dataViews[0].table.rows;

// Xóa nội dung cũ của visual d3.select(this.target).selectAll("*").remove();

// Tạo box plot từ dữ liệu

// Đoạn mã chi tiết sử dụng D3 để tạo Box Plot tùy thuộc vào dữ liệu

}

Nếu bạn dùng Plotly, đoạn mã dưới đây sẽ giúp bạn tạo Box Plot dễ dàng:

public update(options: VisualUpdateOptions) {
const data = [
{
y: [1, 2, 3, 4, 5], // Dữ liệu ví dụ, hãy thay bằng dữ liệu thật từ Power BI
type: 'box'
}
];

const layout = {
title: 'Box Plot Example',
yaxis: { title: 'Values' }
};

Plotly.newPlot(this.target, data, layout);

}

Bước 4: Vẽ Box Plot Với D3.js
Trong hàm drawBoxPlot, bạn có thể sử dụng D3.js để vẽ Box Plot dựa trên boxPlotData.

private drawBoxPlot(boxPlotData) {
    const svg = d3.select(this.target)
        .append("svg")
        .attr("width", 500)
        .attr("height", 300);

    const xScale = d3.scaleBand()
        .domain(boxPlotData.map(d => d.category))
        .range([50, 450])
        .padding(0.2);

    const yScale = d3.scaleLinear()
        .domain([0, d3.max(boxPlotData, d => d.max)])
        .nice()
        .range([250, 50]);

    // Vẽ các hộp và các đường trong Box Plot
    boxPlotData.forEach(d => {
        const g = svg.append("g")
            .attr("transform", `translate(${xScale(d.category)}, 0)`);

        // Vẽ đường trung vị
        g.append("line")
            .attr("y1", yScale(d.median))
            .attr("y2", yScale(d.median))
            .attr("x1", -10)
            .attr("x2", 10)
            .attr("stroke", "black");

        // Vẽ hình chữ nhật (box) giữa q1 và q3
        g.append("rect")
            .attr("y", yScale(d.q3))
            .attr("height", yScale(d.q1) - yScale(d.q3))
            .attr("width", 20)
            .attr("fill", "skyblue");

        // Vẽ đường min-max
        g.append("line")
            .attr("y1", yScale(d.min))
            .attr("y2", yScale(d.max))
            .attr("stroke", "black");

        // Vẽ các điểm ngoại lệ
        d.outliers.forEach(outlier => {
            g.append("circle")
                .attr("cy", yScale(outlier))
                .attr("r", 3)
                .attr("fill", "red");
        });
    });
}
.

Tổng Kết
Hàm processDataForBoxPlot xử lý dữ liệu từ Power BI, chuyển nó thành các chỉ số phù hợp cho Box Plot.
Hàm drawBoxPlot vẽ Box Plot bằng D3.js dựa trên dữ liệu đã xử lý.
Chạy thử nghiệm visual và kiểm tra kết quả hiển thị Box Plot.
Với các bước trên, bạn có thể tạo thành công một Box Plot tùy chỉnh trong Power BI bằng D3.js và Power BI Visual Tools

Chạy thử visual:

Để kiểm tra visual, bạn có thể chạy lệnh sau:bashSao chép mãpbiviz start

Sau đó, mở Power BI Desktop, bật Developer Mode (trong phần Options > Security) và kết nối tới server để kiểm tra visual.

Bước 4: Đóng Gói Visual Thành Tệp .pbiviz

  1. Sau khi hoàn tất phát triển và thử nghiệm, đóng gói custom visual thành tệp .pbiviz bằng lệnh:bashSao chép mãpbiviz package
  2. Tệp .pbiviz sẽ được tạo trong thư mục dist của dự án. Tệp này có thể được import vào Power BI Desktop hoặc Power BI Service.

Bước 5: Import Tệp .pbiviz Vào Power BI

  1. Mở Power BI Desktop và mở báo cáo mà bạn muốn thêm Box Plot.
  2. Trong phần Visualizations, chọn biểu tượng dấu ba chấm ... > Import a visual from a file.
  3. Chọn tệp .pbiviz bạn vừa đóng gói để thêm visual vào báo cáo.
  4. Sử dụng Box Plot bằng cách kéo dữ liệu cần thiết vào visual.

Lưu Ý Khi Phát Triển Box Plot Custom Visual

  • Kiểm tra cẩn thận dữ liệu đầu vào: Đảm bảo dữ liệu đầu vào từ Power BI đã được xử lý đúng trước khi truyền vào D3 hoặc Plotly.
  • Sử dụng các thư viện vẽ biểu đồ thích hợp: D3.js phù hợp cho các yêu cầu tùy chỉnh phức tạp, còn Plotly.js dễ sử dụng hơn nếu bạn muốn tạo các biểu đồ nhanh và không cần nhiều tuỳ chỉnh.
  • Kiểm tra trên nhiều nguồn dữ liệu để đảm bảo visual hoạt động chính xác với các bộ dữ liệu khác nhau.

Với các bước trên, bạn có thể tạo thành công một custom visual dạng Box Plot cho Power BI, đóng gói thành tệp .pbiviz và sử dụng hoặc chia sẻ dễ dàng trong Power BI.

Tự tạo một visual mới trong Power Bi từ Node.js

Dưới đây là hướng dẫn từng bước để tạo một custom visual đơn giản dưới dạng tệp .pbiviz trong Power BI. Trong ví dụ này, chúng ta sẽ tạo một biểu đồ vòng tròn đơn giản (Circular Chart), hiển thị một giá trị phần trăm dưới dạng hình tròn để trực quan hóa phần trăm hoàn thành.

Yêu cầu

  1. Node.js: Đảm bảo bạn đã cài đặt Node.js (bao gồm cả NPM) trên máy tính.
    • Tải từ: https://nodejs.org/.
    • Sau khi cài đặt, kiểm tra phiên bản bằng cách mở Terminal (hoặc Command Prompt) và chạy lệnh:bashSao chép mãnode -v npm -v
  2. Power BI Visual Tools: Đây là công cụ chính để phát triển custom visual cho Power BI.
    • Cài đặt bằng lệnh:bashSao chép mãnpm install -g powerbi-visuals-tools

Bước 1: Khởi tạo dự án Custom Visual

  1. Mở Terminal hoặc Command Prompt.
  2. Chuyển đến thư mục bạn muốn tạo dự án.
  3. Khởi tạo một custom visual mới bằng lệnh:bashSao chép mãpbiviz new SimpleCircularChart
    • Thay SimpleCircularChart bằng tên bạn muốn. Power BI Visual Tools sẽ tạo thư mục dự án với cấu trúc cần thiết cho custom visual.
  4. Chuyển đến thư mục dự án:bashSao chép mãcd SimpleCircularChart

Bước 2: Cấu hình dự án Custom Visual

  1. Mở dự án trong trình soạn thảo mã (như Visual Studio Code).
  2. Tìm tệp pbiviz.json trong thư mục dự án và mở nó.
  3. Trong tệp này, bạn có thể chỉnh sửa một số thông tin về visual như:
    • displayName: Tên hiển thị của visual.
    • visualCapabilities: Định nghĩa các thuộc tính và trường mà visual sẽ hỗ trợ.

Bước 3: Phát triển Biểu đồ Vòng tròn Đơn giản

  1. Mở tệp visual.ts trong thư mục src. Đây là nơi bạn sẽ viết mã để tạo visual.
  2. Thay thế mã hiện có bằng mã sau để tạo một biểu đồ vòng tròn đơn giản:typescriptSao chép mãimport * as d3 from "d3"; import powerbi from "powerbi-visuals-api"; import VisualConstructorOptions = powerbi.extensibility.visual.VisualConstructorOptions; import VisualUpdateOptions = powerbi.extensibility.visual.VisualUpdateOptions; import IVisual = powerbi.extensibility.visual.IVisual; export class Visual implements IVisual { private svg: d3.Selection<SVGElement, any, any, any>; private circle: d3.Selection<SVGCircleElement, any, any, any>; constructor(options: VisualConstructorOptions) { // Tạo SVG cho biểu đồ this.svg = d3.select(options.element) .append('svg') .classed('circularChart', true); // Tạo vòng tròn this.circle = this.svg.append('circle'); } public update(options: VisualUpdateOptions) { const width = options.viewport.width; const height = options.viewport.height; const radius = Math.min(width, height) / 2; // Cập nhật kích thước SVG this.svg.attr('width', width).attr('height', height); // Lấy giá trị phần trăm từ dữ liệu (giả sử là giá trị đầu tiên trong trường dữ liệu) const dataView = options.dataViews[0]; const percentage = dataView.single ? <number>dataView.single.value : 0.5; // Mặc định là 50% // Cập nhật vòng tròn this.circle .attr('cx', width / 2) .attr('cy', height / 2) .attr('r', radius * percentage) // Tỉ lệ bán kính theo phần trăm .style('fill', 'steelblue'); // Màu sắc của vòng tròn } }

Giải thích mã:

  • SVG Element: Tạo phần tử SVG để chứa biểu đồ.
  • Circle: Vòng tròn sẽ biểu diễn phần trăm dưới dạng bán kính thay đổi.
  • update function: Hàm update sẽ lấy giá trị phần trăm từ dữ liệu và cập nhật bán kính của vòng tròn để phản ánh phần trăm này.

Bước 4: Khởi Động Máy Chủ Phát Triển và Thử Nghiệm

  1. Để chạy visual và kiểm tra, khởi động máy chủ phát triển bằng lệnh:bashSao chép mãpbiviz start
  2. Mở Power BI Desktop.
  3. Chọn File > Options and settings > Options > Security và bật Enable developer mode.
  4. Trong báo cáo Power BI, chọn From file để kết nối với visual của máy chủ đang chạy và thử nghiệm visual.

Bước 5: Đóng Gói Custom Visual thành .pbiviz

Khi hoàn tất phát triển và thử nghiệm, đóng gói custom visual bằng lệnh:

bashSao chép mãpbiviz package

Lệnh này sẽ tạo tệp .pbiviz trong thư mục dist của dự án, sẵn sàng để import vào Power BI.

Bước 6: Import .pbiviz vào Power BI

  1. Mở Power BI Desktop hoặc Power BI Service.
  2. Trong ngăn Visualizations, chọn biểu tượng ba chấm ... > Import a visual from a file.
  3. Chọn tệp .pbiviz vừa tạo để import visual vào Power BI.
  4. Visual tùy chỉnh của bạn sẽ xuất hiện trong ngăn Visualizations và có thể được kéo vào báo cáo để sử dụng.

Lưu ý:

  • Cấu hình dữ liệu: Đảm bảo rằng dữ liệu cung cấp cho visual có giá trị số phù hợp với cấu trúc dự án.
  • Chạy kiểm tra: Trước khi chia sẻ tệp .pbiviz, hãy kiểm tra kỹ để đảm bảo visual hoạt động tốt và không có lỗi.

Với hướng dẫn này, bạn có thể tạo một custom visual đơn giản cho Power BI, đóng gói thành tệp .pbiviz và sử dụng lại trong các báo cáo của mình.