У меня есть макрос, где я в настоящее время передаю 6 имен таблиц и 6 столбцов. Однако количество столбцов и таблиц не всегда будет постоянным.Переменное количество параметров в макросе в SAS?
Есть ли способ иметь переменное количество параметров? Я знаком с концепцией в python с ** kwargs.
Кроме того, есть ли способ параметризовать оператор proc sql, чтобы принимать только столько столбцов и столбцов, сколько предусмотрено? Или попытайтесь поймать какой-либо тип в SAS, чтобы проверить, существуют ли переменные до запуска SQL-запроса?
Вот мой макрос, который я пытаюсь параметризовать.
%macro Generate_TP_tbl(new_tbl_name, trans_col, tbl_1, tbl_2, tbl_3, tbl_4,
tbl_5, tbl_6, col_1, col_2, col_3, col_4, col_5, col_6);
proc sql;
CREATE TABLE &new_tbl_name AS
SELECT a1._NAME_, a1.&trans_col as &col_1, a2.&trans_col as &col_2,
a3.&trans_col as &col_3, a4.&trans_col as &col_4, a5.&trans_col as &col_5,
a6.&trans_col as &col_6
FROM &tbl_1 as a1, &tbl_2 as a2, &tbl_3 as a3, &tbl_4 as a4, &tbl_5 as a5,
&tbl_6 as a6
WHERE a1._NAME_ = a2._NAME_ = a3._NAME_ = a4._NAME_ = a5._NAME_ = a6._NAME_;
run;
%mend Generate_TP_table;
Используйте пробелы вместо запятых в своих списках. Тогда вам нужно только один или два параметра. – Tom