在 SAS DIS 中创建用户定义的转换以生成工作 table

Creating a user defined transformation in SAS DIS to produce work table

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

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

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

我不需要任何提示,所以我 select "Next" 在对话的选项组件上,我不需要任何输入,所以我设置了最小和最大数量输入为 0。我需要 1 个输出(我用代码创建的作品 table),所以我保留相关值。我 select "Next" 和 "Finish".

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

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

Error accessing metadata: Table has no columns 2. Running the transformation causes another transformation in the job to be connected to the input end of the newly created transformation (which should not accept any inputs).

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

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

万分感谢!

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

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

如果有帮助请告诉我!