迭代筛选DICTIONARY.COLUMNS-SAS

迭代筛选DICTIONARY.COLUMNS-SAS,sas,Sas,(在上下文中,我使用的是字典.COLUMNS——这是一个巨大的工具,使用它的操作运行速度非常慢。) 我有一个数据集my_datasets,只有一列,dataset,它给出了我感兴趣的SAS数据集的名称。我希望提取与这些数据集相关的字典.COLUMNS条目 这感觉像是一个左连接的作业,但运行时间太长(我还没有成功运行它)。DICTIONARY.COLUMNS上的过滤器会立即运行以进行比较 因此,我想知道是否有一种方法可以将my_datasetsdataset中的每个名称迭代到filter语句中,并

(在上下文中,我使用的是
字典.COLUMNS
——这是一个巨大的工具,使用它的操作运行速度非常慢。)

我有一个数据集
my_datasets
,只有一列,
dataset
,它给出了我感兴趣的SAS数据集的名称。我希望提取与这些数据集相关的
字典.COLUMNS
条目

这感觉像是一个
左连接的作业,但运行时间太长(我还没有成功运行它)。
DICTIONARY.COLUMNS
上的过滤器会立即运行以进行比较

因此,我想知道是否有一种方法可以将
my_datasets
dataset中的每个名称迭代到filter语句中,并附加所有结果

对其他方法也持开放态度

这是我用来过滤的代码:

PROC SQL;
CREATE TABLE work.dictionary as
SELECT  
libname as LIBRARY, 
memname as DATASET, 
name as VARIABLE_NAME, 
type, 
length, 
format, 
label 
FROM DICTIONARY.COLUMNS
WHERE memname in ("dataset_name") /* Replace this value */
;
QUIT;

在使用迭代方法之前,您可以从
my_数据集
中创建一个引用memnames的csv列表。此列表可用于

proc sql;
  reset noprint;
  select quote(trim(dataset)) into :target_dataset_names separated by ','
  from my_datasets
  ;

  create table work.my_dictionary as
  select ...
  from dictionary.columns
  where memname in (&target_dataset_names)
  ;
您可能希望通过对libname进行筛选来确定候选库的目标

  and libname in ('PROJECT1', 'ROSSDATA', 'WORK')

远程librefs也是长时间运行的字典查询的一个贡献者。

在使用迭代方法之前,您可以从
my\u数据集创建引用的memnames的csv列表。此列表可用于

proc sql;
  reset noprint;
  select quote(trim(dataset)) into :target_dataset_names separated by ','
  from my_datasets
  ;

  create table work.my_dictionary as
  select ...
  from dictionary.columns
  where memname in (&target_dataset_names)
  ;
您可能希望通过对libname进行筛选来确定候选库的目标

  and libname in ('PROJECT1', 'ROSSDATA', 'WORK')

远程librefs也是长时间运行的字典查询的一个贡献者。

使用
call execute
看起来像一个简单的作业,使用
call execute