迭代过滤DICTIONARY.COLUMNS - SAS

时间:2018-04-19 10:48:05

标签: sas

(对于上下文,我正在使用DICTIONARY.COLUMNS dataset - 这是巨大的,并且使用它的操作速度非常慢。)

我有一个数据集my_datasets,只有一列dataset,它提供了我感兴趣的SAS数据集的名称。我希望提取{{1}与这些数据集相关的条目。

对于DICTIONARY.COLUMNS而言,这通常是一项工作,但这需要太长时间才能运行(我还没有成功运行它)。 LEFT JOIN上的过滤器会立即运行。

因此,我想知道是否有办法可以遍历DICTIONARY.COLUMNS数据集中的每个名称,迭代到过滤器语句中,并附加所有结果。

也开放其他方法。

这是我用来过滤的代码:

my_datasets

1 个答案:

答案 0 :(得分:3)

在进行迭代方法之前,您可以从my_datasets创建引用的memnames的csv列表。此列表可用于过滤IN

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也是长时间运行字典查询的一个贡献者。