如何在SAS数据集成中更改列中的数据?

如何在SAS数据集成中更改列中的数据?,sas,data-integration,sas-dis,Sas,Data Integration,Sas Dis,我有一个内置SAS数据集成的现有ETL解决方案,其中的一列最初设置为具有所有空值。我想用实际数据填充该列。该表中的原始列被设置为接收特定格式和格式的数值。在更改代码(这是最简单的部分)后,我注意到该列不接受字符值(我没有收到错误,我只是注意到该列仍然具有所有空值)。 有人能帮忙吗?因此,您有一个在Data Integration studio(1)中定义的表,该表是很久以前通过使用数字列运行作业(2)创建的。让我们将该表称为表字段和作业作业,该作业将数据加载到表 你必须意识到根本的区别 在DI

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

因此,您有一个在Data Integration studio(1)中定义的表,该表是很久以前通过使用数字列运行作业(2)创建的。让我们将该表称为表字段和作业作业,该作业将数据加载到表

你必须意识到根本的区别

  • 在DI studio中定义一个
    ,它在元数据中创建表的描述
  • 通过运行
    _作业
    创建
    _表
    ,该作业将在包含数据的文件夹中创建文件
  • 如果每次
    _作业
    确实从头开始创建
    _表
    (这是ETL作业的典型情况),在DI studio中更改
    _表
    _作业
    就足够了。您的编辑只会更改元数据,但下次运行\u作业时,
    将使用正确的结构创建\u表

    但是,如果
    作业
    更新了
    或附加到它,您的编辑将不会更改
    的结构,并且您的作业将不适合文件
    的结构,就像它仍然存在于文件夹中一样,因此,在运行
    _作业之前,必须转换
    _表

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

    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;
    
    正确的attrib语句可能在为\u作业生成的代码中的某个地方


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

    如果要用字符串加载,为什么要将其定义为数字?更改创建表的步骤,然后将数据加载到其中的步骤将起作用。表是很久以前创建的。你能告诉我怎么做吗?我知道如何将代码更改为我想要的。如何在表中更改为列格式?那么您想将字符串编码为数字吗?或者创建一个将该变量定义为character的新表?您不能仅仅更改变量的类型,您需要创建一个新变量。对整个过程进行更多解释,以获得更好的答案。