2

我有一个现有的内置 SAS 数据集成的 ETL 解决方案,其中一列最初设置为具有所有空值。我想用实际数据填充该列。该表中的原始列被设置为接收具有特定格式和格式的数值。在我更改代码之后(这是最简单的部分),我注意到该列不接受字符值(我没有收到错误,我只是注意到该列仍然具有所有 NULL 值)。任何人都可以帮忙吗?

4

1 回答 1

2

因此,您有一个在数据集成工作室(1)中定义的表,并通过很久以前运行作业(2)使用数字列创建。让我们将该表称为该THE_TABLE字段the_fieldThe_Job将数据加载到其中的作业THE_TABLE

你必须意识到根本的区别

  1. THE_TABLE在 DI Studio 中定义一个,它在元数据中创建表的描述
  2. THE_TABLE通过运行创建The_Job,它在包含数据的文件夹中创建一个文件

如果The_Job真的THE_TABLE每次都从头开始创建(这对于 ETL 工作来说很典型),那么在 DI 工作室中进行更改THE_TABLE就足够了。The_Job您的编辑只会更改元数据,但下次运行时The_jobTHE_TABLE将使用正确的结构创建。

但是,如果The_Job更新THE_TABLE或附加到它,您的编辑不会改变结构,THE_TABLE并且您的作业将不适合文件的结构,因为THE_TABLE它仍然存在于文件夹中,因此您必须THE_TABLE在运行The_Job.

这可以通过一个简单的程序来完成,例如

data THE_TABLE;
   set THE_TABLE (drop=the_field);            /* forget about the numeric field */
   attrib the_field length=$200 format=$200.; /* and create the character field */
run;

正确的属性语句很可能在为The_Job某处生成的代码中。

请注意,在具有开发、测试和生产环境的典型设置中,您将在每个环境中都需要该程序一次。

于 2020-06-22T05:16:12.913 回答