Cần giúp đỡ viết measure bằng dax cho power pivot

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

talkymachine

Thành viên mới
Tham gia
17/2/20
Bài viết
5
Được thích
2
Donate (Momo)
Donate
Giới tính
Nam
Em có 2 bảng dữ liệu được đưa vào power pivot như hình.
  • Bảng NV thể hiện cấp trên của nhân viên theo từng tháng
  • Bảng BH thể hiện doanh số từng sản phẩm theo từng nhân viên và tháng

    => Dữ liệu thể hiện 2 bảng này liên kết với nhau thông qua cột "Month" và "NV_id" , mối quan hệ nhiều-nhiều
Em không muốn bổ sung thêm các cột phụ vào bảng dữ liệu, mà muốn viết measure để đưa vào pivot table lọc doanh số dựa theo các trường được kéo thả vào pivot table (theo tháng, theo sup, theo sản phẩm,..)
Xin được giúp đỡ từ phía các anh/chị.

Em có đính kèm file excel để rõ hơn

Many thanks

Image
 

File đính kèm

  • New Microsoft Excel Worksheet.xlsx
    175.7 KB · Đọc: 12
Em có 2 bảng dữ liệu được đưa vào power pivot như hình.
  • Bảng NV thể hiện cấp trên của nhân viên theo từng tháng
  • Bảng BH thể hiện doanh số từng sản phẩm theo từng nhân viên và tháng

    => Dữ liệu thể hiện 2 bảng này liên kết với nhau thông qua cột "Month" và "NV_id" , mối quan hệ nhiều-nhiều
Em không muốn bổ sung thêm các cột phụ vào bảng dữ liệu, mà muốn viết measure để đưa vào pivot table lọc doanh số dựa theo các trường được kéo thả vào pivot table (theo tháng, theo sup, theo sản phẩm,..)
Xin được giúp đỡ từ phía các anh/chị.

Em có đính kèm file excel để rõ hơn

Many thanks

Image
Bài này hay quá, đang hóng bài giải mà chưa thấy nhận được sự hỗ trợ các anh/chị ơi :)
 
Bài này hay quá, đang hóng bài giải mà chưa thấy nhận được sự hỗ trợ các anh/chị ơi :)
Xem sơ qua thì các bảng nên là danh sách duy nhất, mối quan hệ sẽ là 1 nhiều và là chuẩn CSDL. Gột thông tin vào 1 bảng là khó truy xuất và quan hệ nhiều nhiều sẽ dẫn đến nhân bản kết quả. Không có Measure nào tính nổi

Đại khái phải như hình sau

1726844323258.png
 
Xem sơ qua thì các bảng nên là danh sách duy nhất, mối quan hệ sẽ là 1 nhiều và là chuẩn CSDL. Gột thông tin vào 1 bảng là khó truy xuất và quan hệ nhiều nhiều sẽ dẫn đến nhân bản kết quả. Không có Measure nào tính nổi

Đại khái phải như hình sau

View attachment 304123
Cháu làm theo được như này rồi, nhưng chưa biết kéo các trường như nào để có kết quả như chủ thớt mong muốn
 

File đính kèm

  • viết measure bằng dax cho power pivot.xlsx
    305.9 KB · Đọc: 7
Cháu làm theo được như này rồi, nhưng chưa biết kéo các trường như nào để có kết quả như chủ thớt mong muốn
Tôi cũng đang thử, có lẽ phải xài Power query chứ Power Pivot trong Data Model chưa làm được.
Ghi chú:
- NV5 đã bán hàng mà chưa có trong danh sách nhân viên, cũng chưa phân công cho thằng SUP nào phụ trách.
- Tổ chức dữ liệu sai mà lại không muốn thêm cột phụ.
Thật tình cũng muốn thử theo kiểu đúng chuẩn chứ chẳng muốn giải từ cấu trúc dữ liệu này.
 
Em có 2 bảng dữ liệu được đưa vào power pivot như hình.
  • Bảng NV thể hiện cấp trên của nhân viên theo từng tháng
  • Bảng BH thể hiện doanh số từng sản phẩm theo từng nhân viên và tháng

    => Dữ liệu thể hiện 2 bảng này liên kết với nhau thông qua cột "Month" và "NV_id" , mối quan hệ nhiều-nhiều
Em không muốn bổ sung thêm các cột phụ vào bảng dữ liệu, mà muốn viết measure để đưa vào pivot table lọc doanh số dựa theo các trường được kéo thả vào pivot table (theo tháng, theo sup, theo sản phẩm,..)
Xin được giúp đỡ từ phía các anh/chị.

Em có đính kèm file excel để rõ hơn

Many thanks

Image
Tôi nghĩ bạn đang tự làm khó mình: Một là bạn chưa nắm rõ Dax và Data Model là gì, trường hợp thứ hai là bạn quá giỏi để sử dụng Dax mà không cần Data Model để liên hệ giữa các bảng với nhau mà vẫn lấy dữ liệu từ các bảng được.
Viết một ánh xạ chéo mà không cần liên hệ vậy nếu cố viết thì cũng có khả năng là viết được nhưng nếu dữ liệu nó nhiều thì nó sẽ làm giảm hiệu năng, nguyên việc bạn không tạo mối quan hệ giữa các bảng mà mỗi lần viết phải tưởng tượng thì đủ chết rồi.
Vì dữ liệu của bạn nó rất củ chuối, tôi không thể hiểu được công ty nào mà quản lý như vậy thì đủ toi rồi:
Nhân viên 5 nó bán hàng mà chả thằng Sup nào quản lý cả, nhân viên thì lại chia ra tháng này thằng Sup này quản, tháng khác thì thằng Sup khác quản. Mô hình quản lý gì nó kỳ quặc vậy.
Lời khuyên của tôi là bạn làm như sau: Dù bạn có quá giỏi về Dax thì cũng đừng sáng tạo những cái làm khó mình không cần thiết:
1.Tạo một bảng dsnv chứa tất cả thông tin nhân viên:
1726877332111.png
Tất cả nhân viên đều phải ở đây, nhân viên nào mà không có thằng Sup nào quản lý thì Sup để Blank, khóa chính cho cái bảng này key=[Month]&[NV_id] bạn thêm cột key luôn trong bảng gốc hoặc thêm trong Data Model cũng được, như nhau
2. Trong bảng báng hàng bạn cũng tạo cột Key=[Month]&[NV_id] bằng cách thêm tương tự như bảng nhân viên trên
3. Thêm bảng Prod sản phẩm để quản lý sản phẩm:
1726877582093.png
4. Kết nối trong data Model:
1726877648187.png
Kết quả rất đơn giản:
1726877689777.png
Nếu bạn quá giỏi Dax rồi thì bạn không cần quan tâm những cái tôi viết, chỉ cần lưu ý đoạn tôi nói "Đừng tự làm khó mình"
 

File đính kèm

  • New Microsoft Excel Worksheet-gpe.xlsx
    261.6 KB · Đọc: 11
Hoặc là bạn có thể viết hàm này:
JavaScript:
DoanhSo:=CALCULATE(
    SUM(BH[Doanh so]),
             TREATAS(
                            SUMMARIZE(dsnv, dsnv[Month], dsnv[NV_id]),
              BH[Month], BH[NV_id]
                              )
)
Hai bảng của bạn không cần tạo mối liên hệ gì trong Data Model, cũng ra kết quả. Nhưng như đã nói tôi khuyên bạn không nên làm như vậy, Data Model sức mạnh truy vấn của nó là do Model và các mối liên hệ, không dùng tới nó thì cũng không cần dùng Dax làm gì cho nó mệt. Đừng tự làm khó mình!
 

File đính kèm

  • New Microsoft Excel Worksheet-gpe - Copy.xlsx
    206.5 KB · Đọc: 8
...
Nhân viên 5 nó bán hàng mà chả thằng Sup nào quản lý cả, nhân viên thì lại chia ra tháng này thằng Sup này quản, tháng khác thì thằng Sup khác quản. Mô hình quản lý gì nó kỳ quặc vậy.
...
Có thể công ty có trường hơp "tự quản lý". Và trưởng hợp ấy họ tự hiểu ngầm.

... trường hợp thứ hai là bạn quá giỏi để sử dụng Dax mà không cần Data Model để liên hệ giữa các bảng với nhau mà vẫn lấy dữ liệu từ các bảng được.
Hình như DAX có thể hoạt động qua Analysis Services và không cần Data Model.

Các hàm Dax's sử dụng một service gần giống với SQL Server Express cho nên cần phải có một CSDL "gần" liên hệ. Không cần các bậc chuẩn của CSDL LH, nhưng ít nhất Data Model cũng ép bảng tính phải đại khái dòm cho ra hồn.

... Data Model sức mạnh truy vấn của nó là do Model và các mối liên hệ ...
Như trên, bảng tính Excel bình thường dùng vectors để map các ô.
Table giúp bảng tính map dễ hơn qua meta data, vì các vectors xếp theo từng lớp sẽ đơn giản hơn.
Data Model đi hơn một bậc nữa. Đường lối ý tưởng mới (2016 update package cho 2013&10). Nhưng vì nó hơi khó hiểu với người chưa sành Excel cho nên MS không để nó lộ liễu ra ngoài.
 
Có thể công ty có trường hơp "tự quản lý". Và trưởng hợp ấy họ tự hiểu ngầm.


Hình như DAX có thể hoạt động qua Analysis Services và không cần Data Model.

Các hàm Dax's sử dụng một service gần giống với SQL Server Express cho nên cần phải có một CSDL "gần" liên hệ. Không cần các bậc chuẩn của CSDL LH, nhưng ít nhất Data Model cũng ép bảng tính phải đại khái dòm cho ra hồn.


Như trên, bảng tính Excel bình thường dùng vectors để map các ô.
Table giúp bảng tính map dễ hơn qua meta data, vì các vectors xếp theo từng lớp sẽ đơn giản hơn.
Data Model đi hơn một bậc nữa. Đường lối ý tưởng mới (2016 update package cho 2013&10). Nhưng vì nó hơi khó hiểu với người chưa sành Excel cho nên MS không để nó lộ liễu ra ngoài.
Dax hoạt động bắt buộc cần phải có Data Model đó anh. Analysis Services sử dụng hai mô hình chính là Multidimensional Model OLAP và Tabular Model Có hay không có mối liên hệ giữa các bảng trong Model thì Dax nó vẫn hoạt động được, vì Dax có các hàm để sử dụng được bối cảnh hàng, bộ lọc và sử dụng các bảng ảo (Calculate, Treatas, Lookupvalue, Related, Crossjoin,...) .Dax có thể sử dụng ở nhiều nơi không chỉ Power Pivot của Excel, Power Bi, SQL Server Analysis Services, Azure analysis Services SQL Server Data Tools, Dynamics 365,Dataverse,...
Với ai mới học thì tốt nhất là vẫn dùng mối liên hệ trong Model cho nó dễ hiểu, rõ ràng, việc không cần biết mối liên hệ chỉ dành cho người đã thông thạo.
 
Web KT

Bài viết mới nhất

Back
Top Bottom