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

时间:2015-04-30 20:47:27

标签: sas sas-dis

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

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

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

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

当我尝试将转换带入作业并运行时,会出现两个意外情况:

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

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

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

    我想做的是什么?我必须创建作业特定变量作为宏变量(希望避免这种情况)吗?

    非常感谢!

1 个答案:

答案 0 :(得分:1)

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

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

让我知道它是否有帮助!