3 macro SAS hàng đầu để tự động hóa công việc

Là một ngôn ngữ xử lý dữ liệu, SAS cung cấp cho bạn nhiều quy trình tập trung vào dữ liệu, hiệu quả để xử lý lượng lớn dữ liệu.

Các chương trình SAS với những code block lặp đi lặp lại có xu hướng trở nên dài dòng và nặng. Thêm vào đó, việc viết script thủ công có thể trở nên tốn công sức và đơn điệu, làm tăng tỷ lệ sai sót. Vậy làm thế nào bạn có thể tự động hóa các phần code để thực hiện những tác vụ lặp đi lặp lại?

Đây là lúc các macro SAS phát huy tác dụng. Đọc tiếp để tìm hiểu macro SAS là gì và cách chúng cải thiện hiệu quả SAS.

Macro SAS là gì?

Macro là các biến mà bạn có thể sử dụng trong code SAS để tự động hóa các tác vụ lặp đi lặp lại. Khi sử dụng macro làm phần tử mã hóa, các biến macro lưu trữ những giá trị ký tự và số động, bao gồm tên, chữ cái và số.

Code macro bao gồm hai building block, bản thân macro và biến macro. Các chương trình SAS yêu cầu bạn phân biệt giữa chúng bằng cách sử dụng dấu &%.

Ví dụ, nếu viết &Employee, bạn đang gọi biến macro. Tuy nhiên, nếu viết %Employee, thì bạn đang xác định biến macro.

Tại sao sử dụng macro SAS?

Có một số lợi ích khi sử dụng macro trong code SAS. Chúng có thể giúp bạn:

  • Thay thế các dòng code lặp lại bằng một biến duy nhất
  • Cam kết các thay đổi cho một biến và phản ánh nó trong nhiều phần trong chương trình
  • Nhập các giá trị dữ liệu thời gian thực để làm cho chương trình của bạn đi theo hướng tập trung vào dữ liệu và hiệu quả

Các loại macro SAS

Có một số macro tích hợp sẵn mà bạn sẽ thường sử dụng trong SAS. Chúng sẽ tỏ ra khá có giá trị cho các ứng dụng thời gian thực trên cơ sở trường hợp sử dụng.

1. Câu lệnh %Let

Bạn có thể sử dụng macro %let cho bất kỳ giá trị chuỗi hoặc số nào. Nó có các đặc điểm sau:

  • Phạm vi của biến trong khoảng từ 0 - 65,534
  • Các biểu thức toán học trong một biến macro không được đánh giá
  • Lưu trữ tự do các giá trị số trong một chuỗi
  • Bạn có thể giữ dấu ngoặc kép như một phần của giá trị ký tự
  • Bất kỳ khoảng trống nào cũng đều bị xóa

Để khai báo macro %let, hãy sử dụng tên biến macro trước dấu và (&).

Đây là cú pháp của macro %let phổ biến:

%let macro variable = value

Lưu ý: Điều kiện tiên quyết là tên biến macro phải không có bất kỳ khoảng trắng nào, độ dài giới hạn trong 32 ký tự và không được bắt đầu bằng giá trị số.

Dưới đây là một ví dụ về cách bạn có thể sử dụng câu lệnh %let ở dạng đơn giản nhất:

%let age = 10;

data sample;
input name $ age sex $; 
cards
;
Rob 30 M
Alan 10 M
Jerry 20 M
Monica 35 F
;
run;

proc sort data = sample (where = (age NE &age.));
by age;
run;

Đây là cách code hiển thị trong môi trường SAS:

Trong đầu ra, các giá trị trong cột tuổi không bằng 10 sẽ được lọc ngay sau khi điều kiện được đáp ứng. Biến macro được xác định bên cạnh câu lệnh %let, được sử dụng để cân bằng các giá trị trong điều kiện.

Nếu bạn muốn thực thi các giá trị sau khi thay đổi điều kiện bộ lọc, tất cả những gì bạn phải làm là thay đổi giá trị từ 10 thành số mong muốn trong câu lệnh %let. Rất đơn giản! Hãy chạy lại code để xem kết quả mới.

Đây là kết quả đầu ra khi code được thực thi:

2. Các tham số macro

Các tham số macro khá hữu ích khi bạn muốn xác định trực tiếp những biến và bước trong một tập hợp các câu lệnh macro. Toàn bộ khối câu lệnh có thể được sử dụng lại để thực hiện các chức năng khác nhau khi cần thiết.

Ví dụ, bạn muốn sắp xếp một tập dữ liệu hiện có dựa trên các tiêu chí nhất định.

data test_example;
input ID $ name $ age;
cards;
001 John 20
002 Jack 30
003 Ron 15
001 Jack 30
005 Aon 18 
;
run;

%macro sorting (in_ds= , sort_var =, out_ds=);

proc sort data = &in_ds nodupkey out = &out_ds;
by &sort_var;
run;
%mend;

Trong code block, hãy tạo một tập dữ liệu với một số giá trị giả. Khi đã có dữ liệu, bạn có thể tạo một câu lệnh macro trong câu lệnh %macro%mend.

Trong câu lệnh %macro, bạn có thể xác định tên của macro, cùng với các biến cục bộ, sẽ giữ những giá trị nhất định khi macro được gọi.

Cuối cùng, kết thúc code block macro bằng câu lệnh %mend.

Để gọi macro, hãy chuyển câu lệnh macro theo cách sau:

%sorting (in_ds= test_example, sort_var = name , out_ds=test_example_new);

Trong đó:

  • % sorting: Tên biến macro được tạo trong câu lệnh macro
  • in_ds: Tên tập dữ liệu được sắp xếp
  • sort_var: Biến để sử dụng trong khi sắp xếp tập dữ liệu
  • out_ds: Tên của tập dữ liệu kết quả, sẽ được tạo sau khi tập dữ liệu được sắp xếp

3. Sử dụng proc sql làm biến macro

SQL là một trong những ngôn ngữ được sử dụng phổ biến nhất trong SAS để thao tác và xử lý dữ liệu. Bắt buộc phải có khả năng lưu trữ các giá trị trong một biến SQL để sử dụng thêm. Macro và SQL là một sự kết hợp mạnh mẽ và việc sử dụng chúng cùng nhau có thể mang lại giá trị về lâu dài.

Ví dụ, nếu bạn có một danh sách các giá trị mà bạn muốn lưu trữ trong một biến macro, bạn có thể sử dụng câu lệnh Proc SQL để tạo một biến macro.

Để làm như vậy, hãy làm theo ví dụ sau:

proc sql;
select variable_name into: macro_variable_name separated by ','
from table_name;

Bạn có thể sử dụng các điều kiện để lọc các giá trị biến bằng cách sử dụng câu lệnh where nếu muốn. Bằng không, với các điều kiện bình thường, bạn vẫn có thể lưu các giá trị trong một biến duy nhất. Điều này bao gồm các giá trị ký tự và số.

Dưới đây là một ví dụ để chứng minh việc tạo một biến macro bằng cách sử dụng proc sql:

proc sql;
select age into: age separated by ','
from test_example;

Đầu ra chứa danh sách tất cả các giá trị tuổi từ bảng test_example, mỗi giá trị được phân tách bằng dấu phẩy. Điều này có thể được sử dụng để lọc thông tin trong một câu lệnh Proc SQL khác khi bạn đang lấy thông tin từ các bảng server.

Đầu ra:

Danh sách macro này chưa đầy đủ. Có một số biến khác có thể giúp cuộc sống của bạn dễ dàng hơn, đặc biệt nếu bạn phải viết code mỗi ngày.

Tuy nhiên, macro không chỉ giới hạn ở SAS. Có một số biến macro có sẵn trong VBA có thể được sử dụng để tự động hóa các tác vụ lặp lại hàng ngày trong Excel, Word và các ứng dụng MS Office khác.

Nếu bạn là một người yêu thích tự động hóa, hãy thử các macro VBA.

Thứ Tư, 09/03/2022 08:13
53 👨 2.513
0 Bình luận
Sắp xếp theo