Parameter và functions trong Power BI

Power Query có hơn 600 chức năng gốc và team Power Query tiếp tục bổ sung ngày càng nhiều hơn.

Bạn không cần ghi nhớ tất cả chúng, nhưng bạn cần phải hiểu khái niệm về các tham số và đối số để hiểu các hàm làm gì.

Trong bài này, tôi sẽ giới thiệu các Hàm tùy chỉnh là gì và cách bạn có thể tạo chúng.

M Functions

Bạn có thể lấy danh sách tất cả các biến môi trường trong Power Query / Power BI của mình bằng cách sử dụng code có tên =shared trong thanh công thức của bạn như sau:

image

Tuy nhiên, ngay cả khi công cụ có thể có hơn 600 chức năng, chúng tôi vẫn có thể cần tạo chức năng tùy chỉnh của riêng mình để giải quyết các tác vụ lặp đi lặp lại.

Thay vì viết đi viết lại cùng một đoạn code, việc gắn cho nó một chức năng tùy chỉnh hoặc do người dùng xác định để có tính di động và tiết kiệm thời gian có thể là một lợi thế đáng kinh ngạc.

Một tác vụ lặp đi lặp lại cần được áp dụng không phải cho một truy vấn duy nhất, mà cho nhiều truy vấn hoặc các đối số khác nhau.

Đó là nguyên tắc tương tự mà bạn nhận được từ DAX khi tạo các measure di động, do đó bạn không phải xác định SUM (Sales [Sales]) mỗi khi bạn sử dụng CALCULATE. Bạn chỉ cần đề cập đến measure mà bạn gọi là [Sale Amount].

Nguyên tắc tương tự mà bạn nhận được từ Excel khi tạo UDF với VBA – một tác vụ lặp đi lặp lại có thể được đơn giản hóa chỉ bằng một hàm đơn giản.

Sự khác biệt là bạn có thể nhận được nhiều hơn chỉ một giá trị từ một hàm bên trong Power Query. Bạn có thể lấy một bảng, một danh sách, một bản ghi, các giá trị hoặc kết hợp của bất kỳ và tất cả những thứ đã đề cập trước đó.

Tình huống: Các tệp có cùng định dạng, nhưng giá trị khác nhau

Hãy tưởng tượng rằng mỗi tháng chúng tôi xuất một tệp có dữ liệu của tháng trước ra khỏi hệ thống của chúng tôi.

Tất cả các tệp sẽ có cùng cấu trúc và định dạng, nhưng giá trị bên trong các tệp đó sẽ khác nhau vì đó là một tháng khác nhau.

Tôi đã tải xuống các tệp cho tháng 1, tháng 2 và tháng 3:

image

và những gì tôi muốn làm chỉ đơn giản là tạo một hàm mà sau này tôi có thể áp dụng cho bất kỳ tệp nào mà tôi muốn tại bất kỳ thời điểm nào. Có lẽ tại một thời điểm nhất định, tôi có thể xuất hệ thống của mình cả năm thay vì chỉ dữ liệu hàng tháng.

image

Với điều này, chúng ta biết rằng chúng ta cần tạo một hàm chỉ có 1 tham số. Tham số đó phải là tệp thực tế mà chúng ta muốn chuyển đổi.

Các chức năng tùy chỉnh trong Power Query / Power BI

image

Có 2 cách để tạo một hàm M:

  • Cách thủ công – bạn cần phải vào trình chỉnh sửa nâng cao theo cách thủ công để chuyển đổi một truy vấn thành một hàm
  • Cách được hỗ trợ – trong đó Power Query cung cấp cho bạn một framework để tạo các chức năng thay vì phải xử lý bằng M.

Trong bài này, chúng ta sẽ xem cả hai và sau đó tìm ra cái nào đem lại trải nghiệm tổng thể tốt hơn.

Trước khi đi sâu vào nghiên cứu, hãy xác định phạm vi hàm của chúng ta sẽ làm gì và giá trị nó đem lại cho chúng ta.

Điều đầu tiên bạn cần làm là chỉnh sửa truy vấn đó và thay đổi đường dẫn tệp thành đường dẫn trong máy tính của bạn. Chỉ cần nhấp vào biểu tượng bánh răng bên cạnh bước Nguồn và trỏ đến tệp của bạn.

image

Sau khi hoàn tất, truy vấn của bạn sẽ tải hoàn hảo:

image

Tóm lại, đây là các bước đã được thực hiện cho truy vấn đó:

  • Source- cách chúng ta kết nối với tệp csv
  • Promoted Headers – đặt hàng đầu tiên thành tiêu đề Cột
  • Replaced Value – chúng ta thay thế các giá trị trống bằng các giá trị null trong cột Tháng
  • Filled Down – chúng tôi đã sử dụng thao tác điền vào cột Tháng
  • Unpivoted Other Columns – unpivot tất cả các cột ngoại trừ Tháng và Tên sản phẩm
  • Renamed Columns – cột Thuộc tính đã được đổi tên thành Thị trường và Giá trị được đổi tên thành Số lượng
  • Changed Type – đặt các kiểu dữ liệu cho mỗi cột

Bây giờ chúng ta có truy vấn mà chúng ta cần, chúng ta cần chuyển truy vấn đó thành một hàm và gán một tham số cho hàm đó.

Tạo một hàm theo cách thủ công

Để giữ mọi thứ có tổ chức, hãy sao chép truy vấn đó và đặt tên là ManualFunction. Chỉ cần nhấp chuột phải vào truy vấn và bạn sẽ nhận được tùy chọn để sao chép truy vấn:

image

Sau khi hoàn tất, chúng tôi cần khởi chạy Trình chỉnh sửa nâng cao cho truy vấn mới đó:

SNAGHTML2bfcde2a

Đầu tiên chúng ta vào Menu View (1), nhấp vào nút Advanced Editor (2) và sau đó chúng ta sẽ thấy Cửa sổ Advanced Editor (3).

Tôi đã đánh dấu phần mã mà chúng ta cần chuyển đổi thành một tham số, về cơ bản là mã nhị phân của tệp:

image

và sau đó chúng tôi phải thay đổi mã theo cách thủ công để trông như thế này:

image

và khi chúng ta nhấn Xong, nó sẽ được hiển thị với biểu tượng hàm trên ngăn truy vấn vì nó bây giờ là một hàm tùy chỉnh với 1 tham số (nhị phân) xuất ra một bảng (dưới dạng bảng).

Chú ý sự khác biệt giữa 2 hình ảnh. Trước “let”, tôi đã thêm các thành phần chức năng:

(FileBinary dưới dạng nhị phân) dưới dạng bảng =>

và mọi thứ khác vẫn giữ nguyên cho phần đó mà tôi đã đánh dấu trong hình ảnh đầu tiên, bây giờ là một tham số hàm.

Kiểm tra chức năng thủ công

Chúng ta có chức năng của mình và bây giờ là lúc để kiểm tra nó. Cách chúng ta sẽ làm điều đó là kết nối với thư mục mà chúng ta đã tải xuống – thư mục chứa tất cả các tệp mẫu.

Bạn có thể làm điều đó trong Power Query Editor:

SNAGHTML2c05a309

và sau đó nhấp vào Chỉnh sửa trên cửa sổ sẽ bật lên để chuyển nó thành một truy vấn mới bên trong Power Query Editor.

Bước tiếp theo là gọi hàm của bạn khỏi các tệp bên trong thư mục đó bằng cách:

image

đi tới menu Thêm Cột (1), nhấp vào nút Gọi Chức năng Tùy chỉnh (2) và sau đó điền vào cửa sổ đó dưới dạng được trưng bày (3).

Bạn sẽ nhận thấy rằng một số ô đang sinh ra lỗi và lý do là chúng ta có một số tệp không phải là csv trong đó, vì vậy chúng ta có thể lọc chúng ra trước khi gọi hàm tùy chỉnh, chỉ bằng cách lọc để chỉ có .csv hoặc chúng ta có thể thực hiện một bộ lọc khác để loại bỏ các lỗi.

image

Tôi khuyên bạn nên chọn tùy chọn đầu tiên là lọc chúng trước khi gọi hàm.

Sau khi tôi loại bỏ một số cột mà tôi không cần, đây là những gì tôi có:

image

và bước tiếp theo là chỉ cần nhấp vào biểu tượng mũi tên kép đối diện (còn được gọi là biểu tượng Mở rộng) để chúng ta có thể lấy tất cả dữ liệu vào chỉ một bảng, về cơ bản là kết nối chúng lại :

image

và chỉ để chứng minh rằng mọi thứ đều có trong bảng của chúng tôi, bạn có thể xem nó bên dưới:

image

Leave a Comment