Trong Power BI, columns (cột dữ liệu) đóng vai trò quan trọng trong việc phân tích và hiển thị dữ liệu. Columns là các thành phần cơ bản của nguồn dữ liệu và đại diện cho các thuộc tính và thông tin trong bộ dữ liệu của bạn. Trong bài viết này, KPIM sẽ tìm hiểu chi tiết về columns và vai trò của chúng trong Power BI.
CALCULATED COLUMNS (cột được tính)
Khi bạn tạo mô hình dữ liệu trong Power Pivot for Excel, Analysis Services Tabular, hoặc Power BI Desktop, bạn có thể mở rộng bảng bằng cách tạo các cột mới. Nội dung của các cột được xác định bởi biểu thức DAX được xét theo từng hàng.
Giao diện người dùng sẽ khác nhau tùy thuộc vào công cụ bạn sử dụng:
- Excel và các Dịch vụ Phân tích yêu cầu bạn viết biểu thức trong hộp văn bản công thức khi bạn chọn cột cuối cùng bên phải – Thêm cột.
- Bạn có thể đổi tên cột mới trước hoặc sau khi xác định biểu thức bằng cách bấm chuột phải vào cột mới và chọn mục menu Đổi tên Cột.
Như bạn thấy trong hình sau, công thức DAX bạn viết không chứa tên cột và bắt đầu bằng ký hiệu gán (=
).
Trong Power BI Desktop, bạn có một giao diện người dùng khác. Bạn phải nhấp vào nút New Column để tạo một cột mới.
Tên cột mới là một phần của công thức bạn viết trong hộp văn bản công thức.
Giao diện người dùng cho phép bạn chỉ cần xác định một cột mới, nhưng chúng ta nói về cột được tính toán để phân biệt giữa các cột gốc (những cột được đọc từ nguồn dữ liệu hoặc được đánh giá bởi một truy vấn được viết trong Power Query hoặc Power BI) và các cột được tính toán (những cột được tạo mở rộng một bảng trong mô hình dữ liệu).
Một khái niệm quan trọng mà bạn cần nhớ về các cột tính toán (Calculated Column) là chúng được tính toán trong quá trình tạo cột và sau đó được lưu trữ trong mô hình. Điều này có vẻ lạ nếu bạn đã quen với các cột được tính toán bằng SQL – không tồn tại – được tính toán tại thời điểm truy vấn và không sử dụng bộ nhớ.
Trong mô hình dữ liệu cho DAX, tất cả các cột được tính toán đều chiếm không gian trong bộ nhớ và được tính toán trong quá trình xử lý bảng.
Để thuận tiện, khi viết công thức cho một cột được tính trong một bài báo hoặc trong một cuốn sách, chúng tôi sử dụng quy ước sau:
TableName[ColumnName] =
Tên bảng[tên cột] =
Cú pháp này không tương ứng với những gì bạn nhập trong giao diện người dùng, nhưng giúp bạn dễ dàng viết chính xác tên của cột được tính toán, bảng thuộc về nó và biểu thức DAX của nó. Tùy thuộc vào công cụ bạn sử dụng, bạn phải bỏ qua tên bảng hoặc cả tên bảng và tên cột trong công thức bạn nhập vào giao diện người dùng.
Ví dụ: hãy xem xét biểu thức sau trong một bài báo: Trong Power BI Desktop, bạn sẽ vào bảng Bán hàng
(Sales), nhấp vào nút Cột Mới và nhập công thức sau:
Sales[GrossMargin] = Sales[SalesAmount] – Sales[TotalProductCost]
Trong Excel và Analysis Services, bạn sẽ vào bảng Sales
và thêm vào cột mới công thức sau:
= Sales[SalesAmount] – Sales[TotalProductCost]
Trong Power BI Desktop, bạn sẽ vào bảng Sales
, nhấp vào nút Cột Mới và nhập công thức sau:
GrossMargin = Sales[SalesAmount] – Sales[TotalProductCost]
MEASURES (chỉ số)
Có một cách khác để xác định các phép tính trong mô hình DAX, hữu ích bất cứ khi nào bạn không muốn tính giá trị cho mỗi hàng mà thay vào đó, bạn muốn tổng hợp các giá trị từ nhiều hàng trong một bảng. Các tính toán này là các chỉ số.
Trong ví dụ trước, bạn đã học cách xác định cột GrossMargin
trong bảng Sales
để tính số tiền lãi gộp. Tuy nhiên, điều gì xảy ra nếu bạn muốn hiển thị tỷ suất lợi nhuận gộp dưới dạng tỷ lệ phần trăm của doanh thu? Bạn có thể tạo một cột được tính toán với công thức sau:
Sales[GrossMarginPct] = DIVIDE ( Sales[GrossMargin], Sales[SalesAmount] )
Công thức này tính giá trị phù hợp ở cấp độ hàng, như bạn có thể thấy trong hình sau:
Bạn không thể sử dụng một cột được tính toán cho hoạt động này. Nếu bạn cần hoạt động trên các giá trị tổng hợp thay vì trên cơ sở từng hàng, bạn phải tạo các chỉ số.
TableName[MeasureName] :=
Tên bảng[tên chỉ số] := < Biểu thức DAX cho chỉ số
Cú pháp này đơn giản hóa định nghĩa về tên của chỉ số, của bảng mà nó thuộc về và biểu thức DAX của nó. Tùy thuộc vào công cụ bạn sử dụng, bạn phải sử dụng một cú pháp khác nhau khi nhập công thức trong giao diện người dùng.
Ví dụ: hãy coi việc triển khai chính xác cho GrossMarginPct
được xác định là một chỉ số:
Sales[Gross Margin %] := DIVIDE ( SUM ( Sales[GrossMargin] ), SUM (Sales[SalesAmount] ) )
Trong Excel và Analysis Services, bạn sẽ đi vào lưới chỉ số của bảng Sales
và nhập văn bản sau vào một ô trống:
Gross Margin % := DIVIDE ( SUM ( ] ), SUM (Sales[SalesAmount] ) )
Trong Power BI Desktop, bạn sẽ vào bảng Sales
, nhấp vào nút Chỉ số Mới và nhập công thức trước hoặc công thức sau:
Gross Margin % = DIVIDE ( SUM ( Sales[GrossMargin] ), SUM (Sales[SalesAmount] ) )
Nếu bạn sử dụng toán tử gán : =
trong cú pháp của mình, Power BI Desktop sẽ tự động biến đổi nó trong toán tử =
. Tuy nhiên, trong các bài báo và sách, chúng tôi luôn sử dụng toán tử gán : =
cho các chỉ số. Quy ước này giúp bạn dễ dàng phân biệt giữa các chỉ số và cột trong mã.
Lựa chọn giữa các cột và chỉ số được tính toán
Tại thời điểm này, bạn có thể tự hỏi khi nào sử dụng các cột được tính toán trên các chỉ số. Đôi khi một trong hai là một lựa chọn, nhưng trong hầu hết các tình huống, nhu cầu tính toán của bạn sẽ quyết định lựa chọn của bạn.
Bạn phải xác định một cột được tính toán bất cứ khi nào bạn muốn thực hiện như sau:
- Đặt kết quả được tính toán trong slicer hoặc xem kết quả trong hàng hoặc cột trong bảng tổng hợp (trái ngược với vùng giá trị) hoặc trong các trục của biểu đồ hoặc sử dụng kết quả làm điều kiện lọc trong truy vấn DAX.
- Xác định một biểu thức được liên kết chặt chẽ với hàng hiện tại.
Ví dụ: Giá * Số lượng không thể hoạt động trên mức trung bình hoặc trên tổng của hai cột. - Phân loại văn bản hoặc số.
Ví dụ: một loạt các giá trị cho một chỉ số, một loạt các độ tuổi khách hàng, chẳng hạn như 0–18, 18–25, v.v.
Tuy nhiên, bạn phải xác định một chỉ số bất cứ khi nào bạn muốn hiển thị các giá trị tính toán kết quả phản ánh các lựa chọn của người dùng và xem chúng trong vùng giá trị của bảng tổng hợp hoặc trong vùng vẽ của biểu đồ – ví dụ:
- Khi bạn tính toán tỷ lệ phần trăm lợi nhuận trên một lựa chọn dữ liệu nhất định.
- Khi bạn tính toán các tỷ lệ của một sản phẩm so với tất cả các sản phẩm nhưng vẫn giữ nguyên bộ lọc theo năm và theo khu vực.
Bạn có thể thể hiện một số phép tính cả với các cột được tính toán và với các chỉ số, ngay cả khi bạn cần sử dụng các biểu thức DAX khác nhau trong những trường hợp này.
Ví dụ: bạn có thể xác định GrossMargin là một cột được tính toán:
Sales[GrossMargin] = Sales[SalesAmount] – Sales[TotalProductCost]
Nhưng nó cũng có thể được định nghĩa là một chỉ số:
[GrossMargin] := SUM ( Sales[SalesAmount] ) – SUM ( Sales[TotalProductCost] )
Chúng tôi khuyên bạn nên sử dụng một chỉ số trong trường hợp này, vì nó được đánh giá tại thời điểm truy vấn, nó không tiêu tốn bộ nhớ và không gian đĩa. Điều này trở nên quan trọng hơn với các bộ dữ liệu lớn. Khi kích thước của mô hình không phải là vấn đề, bạn có thể sử dụng phương pháp mà bạn cảm thấy thoải mái hơn.
Bạn nên xem xét rằng thông thường bạn có thể tránh các cột được tính toán như là các phép tính trung gian cho một chỉ số.
Ví dụ: nếu bạn phải tạo một chỉ số dựa trên kết quả của một sản phẩm được tạo ra theo từng hàng, bạn có thể xác định một cột được tính toán và sau đó là một chỉ số như sau:
Sales[SalesAmount] = Sales[Quantity] * Sales[Unit Price]
Sales[Sum of SalesAmount] := SUM ( Sales[SalesAmount] )
Hoặc bạn có thể chỉ sử dụng một chỉ số duy nhất để đánh giá cùng một biểu thức của cột được tính toán theo từng hàng trong vòng lặp của bảng.
Sales[Sum of SalesAmount] := SUMX ( Sales, Sales[Quantity] * Sales[Unit Price] )
Kỹ thuật này có thể được mở rộng cho hầu hết các chỉ số.
Ví dụ: chúng tôi đã tạo các cột được tính toán sau và chỉ số trong ví dụ trước:
Sales[SalesAmount] = Sales[Quantity] * Sales[Unit Price]
Sales[TotalProductCost] = Sales[Quantity] * Sales[Unit Cost]
Sales[GrossMargin] = Sales[SalesAmount] – Sales[TotalProductCost]
Sales[Gross Margin %] := DIVIDE ( SUM ( Sales[GrossMargin] ), SUM (Sales[SalesAmount] ) )
Tuy nhiên, bạn có thể tạo cùng một chỉ số cuối cùng theo cách này:
Sales[Gross Margin %] :=
DIVIDE (
SUMX ( Sales, Sales[Quantity] * Sales[Unit Price] )
– SUMX ( Sales, Sales[Quantity] * Sales[Unit Cost] ),
SUMX ( Sales, Sales[Quantity] * Sales[Unit Price] )
)
Hoặc, trong Excel 2016, Power BI Desktop và Analysis Services 2016, bạn có thể tận dụng cú pháp biến (VAR) để không lặp lại phép tính SUMX của số tiền bán hàng hai lần, và bạn có thể chia phép tính thành nhiều bước trong một lần nữa cách dễ đọc, mà không phải trả chi phí lưu trữ các kết quả trung gian trong các cột được tính toán:
Sales[Gross Margin %] :=
VAR SalesAmount = SUMX ( Sales, Sales[Quantity] * Sales[Unit Price] )
VAR TotalProductCost = SUMX ( Sales, Sales[Quantity] * Sales[Unit Cost] )
VAR GrossMargin = SalesAmount – TotalProductCost
RETURN DIVIDE ( GrossMargin, SalesAmount )
Hãy nhớ rằng có những cách thay thế để xác định cột được tính toán trước khi nhập dữ liệu được DAX sử dụng.
Ví dụ: bạn có thể sử dụng Power Query trong Excel hoặc Trình soạn thảo truy vấn tương ứng trong Power BI Desktop, cung cấp ngôn ngữ mạnh mẽ để thao tác dữ liệu theo từng hàng.
Các cột được tính toán trong DAX rất hữu ích bất cứ khi nào bạn phải sử dụng dữ liệu từ các bảng khác trong mô hình dữ liệu hoặc xem xét dữ liệu tổng hợp trong một phép tính. Hai ví dụ trong đó các cột được tính toán rất hữu ích là Phân đoạn tĩnh và các mẫu Phân loại ABC. Bạn có thể tải xuống các ví dụ trong Power Pivot for Excel 2013 và Power BI Destkop trong tệp demo.
Columns và Measures trong Power BI
Trong Power BI, Columns và Measures đóng vai trò quan trọng trong việc phân tích và hiển thị dữ liệu. Cả hai đều được sử dụng để thao tác với dữ liệu, nhưng có một số khác biệt cơ bản giữa Columns và Measures.
Sự khác biệt giữa columns và measures
Columns: Là các cột dữ liệu trong nguồn dữ liệu của bạn, chứa giá trị riêng lẻ cho từng hàng. Các columns thường chứa thông tin chi tiết, như tên, ngày tháng, số liệu, v.v. Columns không tính toán giá trị mới, mà chỉ lưu trữ dữ liệu có sẵn.
Measures: Là các biểu thức tính toán dựa trên các columns hoặc measures khác để tạo ra giá trị mới. Measures được sử dụng để thực hiện các phép tính, tổng hợp hoặc tính toán dữ liệu theo các quy tắc xác định.
Ví dụ: bạn có thể sử dụng measures để tính tổng doanh thu, trung bình, tăng trưởng, v.v.
Sử dụng measures để tính toán dữ liệu dựa trên columns
Sử dụng measures, bạn có thể tạo các biểu thức tính toán để phân tích và trực quan hóa dữ liệu. Để tính toán dữ liệu dựa trên columns, bạn có thể sử dụng các hàm tính toán có sẵn trong Power BI như SUM, AVERAGE, COUNT, v.v. Điều này cho phép bạn thực hiện các phép tính tổng hợp, phân loại, phân tích dự đoán và so sánh dữ liệu dễ dàng.
Kết hợp columns và measures để tạo các phân tích phức tạp
Kết hợp columns và measures trong Power BI cho phép bạn tạo ra các phân tích phức tạp và tìm ra sự tương quan giữa các yếu tố dữ liệu. Bằng cách sử dụng columns để lựa chọn và sắp xếp dữ liệu, và sử dụng measures để tính toán và tổng hợp dữ liệu, bạn có thể xây dựng các biểu đồ, bảng điều khiển, và báo cáo mạnh mẽ.
Ví dụ: bạn có thể sử dụng một column chứa thông tin về doanh thu và một measure để tính toán tổng doanh thu theo thời gian. Bằng cách kết hợp chúng, bạn có thể tạo biểu đồ đường hiển thị xu hướng doanh thu theo thời gian.
Kết luận
KPIM tổng kết lại, trong Power BI, columns là các cột dữ liệu trong nguồn dữ liệu của bạn. Chúng chứa thông tin chi tiết và không thực hiện tính toán mới. Columns đại diện cho các thuộc tính và thông tin trong dữ liệu và được sử dụng để lựa chọn, sắp xếp, định dạng và tổ chức dữ liệu trong quá trình xây dựng mô hình dữ liệu và thiết kế báo cáo trong Power BI.