1

我有在 SAS DIS 中生成一些特定于作业的变量的代码,并且不必为我编写的每个作业将此代码复制到用户编写的代码块中,我希望有一个预定义的转换来执行此操作,我将从转换窗格到任何给定的工作。

创建新转换时,在对话框的 SAS 代码组件中,我粘贴了一些简单的代码。假设它看起来像这样:

DATA CREATE_JOB_SPECIFIC_VARS;
    job_name = "&etls_jobName";
    job_date = date();
RUN;

我不需要任何提示,所以我在对话框的 Options 组件上选择“下一步”,并且我不需要任何输入,所以我将输入的最小和最大数量设置为 0。我需要 1 个输出(工作我用代码创建的表),所以我保留关联的值。我选择“下一步”和“完成”。

当我尝试将转换转化为工作并运行它时,会发生两件意想不到的事情:

  1. 无法查看转换的输出表,尝试这样做会产生错误:

访问元数据时出错:表没有列 2. 运行转换会导致作业中的另一个转换连接到新创建的转换的输入端(不应接受任何输入)。

我主要关心问题#1(#2 是次要的好奇心)。我猜这个问题出现了,因为软件希望在代码块以外的某个地方指定输出表的列,但我看不到其他地方可以做到这一点。

我想做的事可能吗?我是否必须将作业特定变量创建为宏变量(最好避免这种情况)?

非常感谢!

4

1 回答 1

1

对于任何自定义编写的代码转储结果,如果未定义输出表的元数据,则转换输出表中的理想情况下会显示此错误。只需通过右键单击表格 -> 属性 -> 列选项卡来定义元数据,然后您将停止收到第一个错误。另外,我假设您已将输出表的物理名称(右键单击输出表 -> 属性 -> 物理存储选项卡)更改为 CREATE_JOB_SPECIFIC_VARS,因为您使用的是“DATA CREATE_JOB_SPECIFIC_VARS;”。

对于第 2 个问题,如果在单个作业流程中创建 2 个或多个单独的流程,则当第一次执行作业流程时,将自动生成虚线 (- - - ),以控制顺序连接单独的流程流段。这只是向用户显示作业流程执行时的执行顺序的一种方式。我认为 SAS DI Studio 显示它很棒,否则很难从图表中知道流程的顺序。

让我知道它是否有帮助!

于 2015-04-30T22:05:03.830 回答