Xin dax tính tỷ trọng doanh thu

Liên hệ QC

kiendt1973

Thành viên chính thức
Tham gia
14/7/07
Bài viết
89
Được thích
28
Chào các anh chị.
Mình đang học Power BI để phân tích doanh thu của công ty.
Mình đang loay hoay tính tỷ trọng doanh thu từng sp / tổng doanh thu ( tức là thêm cột tỷ trọng vào Power BI như hình ở File Excel )
Screenshot 2023-10-25 at 3.33.56 PM.png
Nhờ anh/ chị nào biết giúp mình xử lý vấn đề này.
Trân trọng.
 

File đính kèm

  • ty trong ds.zip
    24 KB · Đọc: 3
  • Book1.xlsx
    9.2 KB · Đọc: 4
Chưa cần dùng đến DAX
PHP:
let
    Source = Excel.Workbook(File.Contents("D:\OneDrive\MyBooks\PowerBI\Data5.xlsx"), null, true),
    Data1 = Source{[Item="Sheet1",Kind="Sheet"]}[Data],
    Headers = Table.PromoteHeaders(Data1, [PromoteAllScalars=true]),
    DelCol = Table.SelectColumns(Headers, {"Nhóm sp", "Doanh số"}),
    TotalRev = List.Sum(DelCol[Doanh số]),
    Result = Table.AddColumn(DelCol,"Ty trong", each [Doanh số]/TotalRev, Percentage.Type)
in
    Result

Data Model:
1698253990458.png

Visual:
1698253956767.png
 
Xử lý ngay trong query của excel cũng được nè!

Mã:
let
    Source = Excel.CurrentWorkbook(){[Name="tDoanhSo"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"SanPham", type text}, {"DoanhSo", Int64.Type}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each List.Sum(Source[DoanhSo])),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "TiTrong", each [DoanhSo]/[Custom]),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"Custom"})
in
    #"Removed Columns"
 

File đính kèm

  • TiTrong.xlsx
    17.6 KB · Đọc: 7
Lần chỉnh sửa cuối:
Cảm ơn bác ptm0412 rất nhiều.
Nếu có thể bác chỉ rõ giúp các đưa
"let
Source = Excel.Workbook(File.Contents("D:\OneDrive\MyBooks\PowerBI\Data5.xlsx"), null, true),
Data1 = Source{[Item="Sheet1",Kind="Sheet"]}[Data],
Headers = Table.PromoteHeaders(Data1, [PromoteAllScalars=true]),
DelCol = Table.SelectColumns(Headers, {"Nhóm sp", "Doanh số"}),
TotalRev = List.Sum(DelCol[Doanh số]),
Result = Table.AddColumn(DelCol,"Ty trong", each [Doanh số]/TotalRev, Percentage.Type)
in
Result"
vào power Bi thế nào.
Mình thấy Power BI rất hay mà có vẻ chưa nhiều người dùng thì phải.
Cảm ơn bác nhiều.
 
Xử lý ngay trong query của excel cũng được nè!
Cách này dùng trong Power BI cũng được. Tuy nhiên List.Sum bị tính nhiều lần, nếu dữ liệu nhiều sẽ chậm.
nếu ở Excel thì không cần. Kéo DoanhSo vào pivot table 2 lần và chọn show value as Percent of grand total
 
Lần chỉnh sửa cuối:
Cảm ơn 2 bác: ptm0412, TongDe.
Rất mong nhánh Power BI trong diễn đàn này ngày càng lớn mạnh để em được nhờ.
 
Cách này dùng trong Power BI cũng được. Tuy nhiên nếu ở Excel thì không cần. Kéo DoanhSo vào pivot table 2 lần và chọn show value as Percent of grand total
Mình muốn sử dụng luôn dữ liệu đã đưa vào Power BI ( ko dùng dữ liệu từ Excel ) thì thế nào bác ơi?
 
Nếu đã có BI thì mở file này và tự khám phá nha!
 

File đính kèm

  • 11111.rar
    26.6 KB · Đọc: 11
  • Untitled.png
    Untitled.png
    120.6 KB · Đọc: 8
Cảm ơn 2 bác: ptm0412, TongDe.
Rất mong nhánh Power BI trong diễn đàn này ngày càng lớn mạnh để em được nhờ.
Em thấy bác nhiều tuổi mà chịu khó học hỏi nhỉ? Power bi, tôi mới chỉ có gần 4 năm kinh nghiệm, bác cần hỏi gì vướng thì có thể hỏi lên mục Power Bi của diễn đàn này, hoặc nhắn tôi giải đáp hộ, nếu câu hỏi tôi giải quyết được.
 

File đính kèm

  • 1698329659086.png
    1698329659086.png
    46.9 KB · Đọc: 4
  • ty trong ds.rar
    25.2 KB · Đọc: 8

File đính kèm

  • Visual.png
    Visual.png
    47.2 KB · Đọc: 7
Theo tôi thì chẳng cần mấy cái mesure ấy làm gì,
Measure có cái hay riêng của nó chứ. Chẳng hạn tôi và bạn không dùng measure mà thêm cột (bài 2 và 3), nếu dữ liệu nhiều (1 vài triệu dòng) thì bị ảnh hưởng. Measure chỉ tính có 1 lần trên số tổng lớn (grand total) hoặc 1 số lần các tổng nhóm (group). Ít hơn nhiều so với tính tất cả các dòng.
Tôi không biết nhiều hàm và công thức DAX ứng dụng nên mới phải làm như bài 2.
 
Theo tôi thì chẳng cần mấy cái mesure ấy làm gì,
Chỉ cần có sản phẩm và doanh số là tự động có tỉ trọng
2 visual cơ bản là đây:
Bạn cho vào biểu đồ thì nó chả tự chia thị phần. Vấn đề là dữ liệu thực tế thì không ai chỉ có đơn giản chỉ 4 sku như vậy. Bạn có 100 sku thì bạn có kéo vào biểu đồ chỉ để ngó thị phần không? Khi bạn sử dụng measure nó có tính chất kế thừa sử dụng cho nhiều bài toán khác nữa bạn.
Tôi viết vài cái với mục đích là giúp tác giả hiểu về bản chất của Dax nó sử dụng context như thế nào.
 
Đúng như bác ptm0412tranhungdao12a3 nghĩ, mình phải làm bằng DAX vì thực tế dữ liệu rất nhiều sản phẩm và phải dùng dữ liệu trên power bi vì dữ liệu lấy từ nhiều file Excel được Get Data bằng thư mục để đổ vào power bi.
Cảm ơn tranhungdao12a3 đã rất nhiệt tình giúp đỡ và xử lý đc vấn đề. Hy vọng sẽ đc bạn tiếp tục giúp đỡ cho các lần sau vì học mò power bi này rất khó.
Trong lúc chờ giúp, mình mò trên web ra DAX giải quyết được vấn đề rất đơn giản trên excel mà khá mệt mỏi trên power bi ( đối với mình). Cách này đúng hướng của tranhungdao12a3
Mình gửi lên để ai vướng như mình thì có hướng để xử lý:
Tỷ trọng DS =
DIVIDE(
[Doanh_số],
CALCULATE(
[Doanh_số],
ALLSELECTED('Sheet1')
)
)

Screenshot 2023-10-26 at 22.47.47.png
 

File đính kèm

  • ty trong ds.zip
    25.1 KB · Đọc: 2
Lần chỉnh sửa cuối:
Đúng như bác ptm0412tranhungdao12a3 nghĩ, mình phải làm bằng DAX vì thực tế dữ liệu rất nhiều sản phẩm và phải dùng dữ liệu trên power bi vì dữ liệu lấy từ nhiều file Excel được Get Data bằng thư mục để đổ vào power bi.
Cảm ơn tranhungdao12a3 đã rất nhiệt tình giúp đỡ và xử lý đc vấn đề nhưng cách của bạn khi trình bầy sẽ mất nhiều cột. Hy vọng sẽ đc bạn tiếp tục giúp đỡ cho các lần sau vì học mò power bi này rất khó.
Mò mãi mới ra DAX giải quyết được vấn đề rất đơn giản trên excel mà khá mệt mỏi trên power bi ( đối với mình).
Mình gửi lên để ai vướng như mình thì có hướng để xử lý:
Tỷ trọng DS =
DIVIDE(
[Doanh_số],
CALCULATE(
[Doanh_số],
ALLSELECTED('Sheet1')
)
)

View attachment 296112
Em viết nhiều measure để bác tiếp cận theo nhiều hàm khác nhau để hiểu vấn đề.
Nếu dữ liệu của bác nạp từ nhiều file excel từ trong folder thì em tư vấn cho bác như sau:
1. Để tăng tốc độ nạp và refresh trong power Bi thì bác nên dùng nguồn là file Csv(bác convert file excel sang Csv để nạp vào Power Bi) File Csv nạp vào Power Bi có tốc độ nhanh gấp 10 lần file xlsx đó.
2. Khi nạp vào Power Bi thì bác nên tinh chỉnh dữ liệu trên Power Query, chỉ lấy dữ liệu những cột mình cần khi nạp vào Power Bi thôi, bảng dữ liệu có 50 cột, ví dụ mà chỉ có 10 cột cần dùng( bao gồm các cột thông tin và các cột chỉ số) thì chỉ lấy 10 cột này ra thôi=> cải thiện tốc độ cũng như tinh giảm độ lớn của bảng dữ liệu
3. Nếu cần lưu dữ liệu của nhiều năm, lưu từng tháng 1 thì nên tách nó thành 2 bảng, một bảng dữ liệu cũ và một bảng dữ liệu mới. Trong Power Bi chập 2 bảng làm một và chỉ setup refresh phần dữ liệu của bảng mới thôi=> Việc này tiết kiệm thời gian vì nó chỉ cập nhật dữ liệu mới, còn phần dữ liệu cũ thì nó sẽ không cần refresh lại
4. Power Bi thì Data Model là vô cùng quan trọng, cái này tùy thuộc vào tổ chức dữ liệu của đơn vị bạn để thiết kế một Model phù hợp nhất
5. Tìm hiểu về Dax thì trước tiên tìm hiểu về context nhé! Rowcontext và filter context, hai thứ này là quan trọng nhất chứ không phải là hàm.
6. Dữ liệu mà lớn thì hạn chế tạo thêm các cột mới, vì calculated column nó sẽ làm phình độ lớn của bảng dữ liệu
7. Power Bi nó tình theo cả dòng và cột, nên càng ít cột càng tốt, còn càng nhiều dòng cũng không có sao cả
Tư vấn cho bác vài ý để cải thiện khi tiếp cận Power Bi
 
Em viết nhiều measure để bác tiếp cận theo nhiều hàm khác nhau để hiểu vấn đề.
Nếu dữ liệu của bác nạp từ nhiều file excel từ trong folder thì em tư vấn cho bác như sau:
1. Để tăng tốc độ nạp và refresh trong power Bi thì bác nên dùng nguồn là file Csv(bác convert file excel sang Csv để nạp vào Power Bi) File Csv nạp vào Power Bi có tốc độ nhanh gấp 10 lần file xlsx đó.
2. Khi nạp vào Power Bi thì bác nên tinh chỉnh dữ liệu trên Power Query, chỉ lấy dữ liệu những cột mình cần khi nạp vào Power Bi thôi, bảng dữ liệu có 50 cột, ví dụ mà chỉ có 10 cột cần dùng( bao gồm các cột thông tin và các cột chỉ số) thì chỉ lấy 10 cột này ra thôi=> cải thiện tốc độ cũng như tinh giảm độ lớn của bảng dữ liệu
3. Nếu cần lưu dữ liệu của nhiều năm, lưu từng tháng 1 thì nên tách nó thành 2 bảng, một bảng dữ liệu cũ và một bảng dữ liệu mới. Trong Power Bi chập 2 bảng làm một và chỉ setup refresh phần dữ liệu của bảng mới thôi=> Việc này tiết kiệm thời gian vì nó chỉ cập nhật dữ liệu mới, còn phần dữ liệu cũ thì nó sẽ không cần refresh lại
4. Power Bi thì Data Model là vô cùng quan trọng, cái này tùy thuộc vào tổ chức dữ liệu của đơn vị bạn để thiết kế một Model phù hợp nhất
5. Tìm hiểu về Dax thì trước tiên tìm hiểu về context nhé! Rowcontext và filter context, hai thứ này là quan trọng nhất chứ không phải là hàm.
6. Dữ liệu mà lớn thì hạn chế tạo thêm các cột mới, vì calculated column nó sẽ làm phình độ lớn của bảng dữ liệu
7. Power Bi nó tình theo cả dòng và cột, nên càng ít cột càng tốt, còn càng nhiều dòng cũng không có sao cả
Tư vấn cho bác vài ý để cải thiện khi tiếp cận Power Bi
Mình sẽ làm theo tư vấn của bạn đặc biệt là chuyển sang csv và bỏ bớt cột thừa.
Cảm ơn bạn nhiều.
 
Web KT
Back
Top Bottom