Statistical Analysis System (SAS)

Conecte-se ao Sistema de Análise Estatística (SAS) para escanear metadados e exibi-los na linhagem. Para importar metadados de linhagem, crie uma definição de fonte de dados e uma tarefa de importação de metadados.

O Statistical Analysis System (SAS) é um pacote de software integrado para análise avançada, inteligência empresarial, gerenciamento de dados e modelagem preditiva.

Versões do Sistema de Análise Estatística compatíveis

  • Sistema de Análise Estatística (SAS) 9.4

Metadados processados

Os seguintes metadados SAS são processados e exibidos na linhagem:

  • Scripts SAS
  • Funções de procedimentos definidos pelo usuário
  • Declarações de nível superior
    • Instruções Libname, Option, Run e Quit
    • Interface SAS/ACCESS para JDBC, ODBC, ORACLE, POSTGRESQL, NETEZZA, TERADATA, DB2, MS SQL
    • Nome do arquivo
    • SAS/CONNECT: Rsubmit, Signon, Signoff, Rdisplay, Rget, Waitfor, Listtask, Killtask e download de Proc
  • Instruções da etapa de dados
    • Fluxo de controle: if, if-then-else, do-end, do-while, do-iterativo
    • Instruções: input, assign, length, attrib, set, merge, datalines, delete, put, keep, error, retain, rename, by, return, stop, abort, informat, infile, where, select
  • Instruções de etapa de processo
    • Instruções Proc SQL: alterar tabela, criar índice, criar tabela/visualização, selecionar (sem selecionar diretamente do arquivo SAS; as colunas calculadas também são suportadas), conectar-se, desconectar-se, executar, excluir, descrever, descartar, inserir, redefinir, atualizar, validar
    • Proc fcmp: função, sub-rotina
    • Frequência do processo: por, exata, saída, tabelas, teste, peso
    • Proc anexar
    • Proc classificar
    • Conjuntos de dados Proc: excluir, copiar
    • Conteúdo do processo: excluir
    • Exportação de procedimentos
    • Importação de procedimentos
  • Macros
    • Variáveis macro

    • Métodos macro

    • Processamento de macros quando elas são invocadas a partir de outro programa. O exemplo de código a seguir mostra como uma macro de um programa SAS é usada em outro programa. A etapa de extração de macros extrai macros de todos os programas e as armazena no serviço de entrada para análise.

          main_program.sas
          ---------------------
          %setenv(env=prod); /* calling a sas macro which is defined in a seperate sas program file */
          data member_master;
          set eds.member_master; /* eds library defined in setenv.sas */
          run;
          ...
          ...
          ;
      
          setenv.sas
          -----------
          %macro setenv(env=);
          %IF &env.=dev %Then libname eds  "/opt/sas/data/dev/stage";
          %IF &file_name=prod %Then libname eds "/opt/sas/data/prod/stage";
          %mend setenv;
      

Criação de um recurso de importação de metadados

Conexão da origem de dados

É possível importar metadados de linhagem do Sistema de Análise Estatística apenas por meio de arquivos externos. Você não se conecta diretamente ao sistema de Análise Estatística. Isso significa que você precisa fornecer apenas uma definição da fonte de dados. Você pode criá-lo antes de começar a criar um recurso de importação de metadados ou pode fazê-lo diretamente no assistente de importação de metadados.

Depois de selecionar uma definição de fonte de dados, a conexão é criada automaticamente. Em seguida, você pode prosseguir com a adição das entradas externas necessárias.

Definição de origem de dados

Selecione o Sistema de Análise Estatística (SAS) como tipo de fonte de dados.

Entradas externas

É necessário fornecer dados externos, pois essa é a única maneira de importar metadados.

Para analisar arquivos SAS, crie um arquivo compactado.zip que contenha programas SAS, arquivos de inclusão SAS e arquivos de coleta de metadados SAS. Cada arquivo.sas deve ter um nome exclusivo para que a linhagem seja gerada corretamente. As pastas podem ter nomes duplicados. O arquivo.zip pode ter a seguinte estrutura:

    "<programs>",
    "   - <sas_script1.sas>",
    "   - <sas_script2.sas>",
    "<includes>",
    "   - <include1.sas>",
    "   - <include2.sas>",
    "<extractor>",
    "   - <SAS_dataset.sas>",
    "   - <SAS_catalog.sas>",
    "replace.csv"

O replace.csv arquivo contém substituições de espaços reservados para os scripts que são adicionados ao arquivo.zip. Para obter mais informações sobre o formato, consulte Substituições de espaços reservados.

Arquivos de coleta de
metadados SAS Quando seu programa usar conjuntos de dados SAS de uma biblioteca que não esteja explicitamente definida no mesmo programa, forneça os metadados dos conjuntos de dados SAS. Copie todos os metadados SAS coletados para definições de tabelas de bibliotecas predefinidas para a /extractor pasta do arquivo.zip. Siga estas etapas:

  1. Baixe o código SAS para gerar instruções DDL para todas as tabelas de todas as bibliotecas permanentes SAS. Baixar generate_metadata_table.zip.

  2. Crie um libnames.txt arquivo com todas as definições da biblioteca da qual você deseja extrair metadados. Veja um exemplo de conteúdo no arquivo:

    libname dds '/opt/sas/data/dds';
    libname dds1 '/opt/sas/data/dds1';
    libname stg1 '/opt/sas/data/stg1';
    libname stg2 '/opt/sas/data/stg2';
  1. Adicione o libnames.txt arquivo ao /tmp diretório. Se você quiser usar um local diferente, modifique a linha 21 no generate_metadata_table.sas arquivo.
    %let libloc= /tmp; /*** path where libnames.txt file will be saved *****/

Se você deseja que os arquivos de saída sejam adicionados a um local diferente do /tmp diretório, modifique a linha 22 no generate_metadata_table.sas arquivo.

    %let outfile= /tmp; /*** Path where the output sas code files will be generated ****/
  1. Execute o arquivogenerate_metadata_table.sas. O número total de arquivos gerados é igual ao número de entradas no arquivo libnames.txt . Veja um exemplo do conteúdo do lib_meta_stg1.sas arquivo:
    libname DDS '/tmp/dds';
     
    /* SAS data step DDL for DDS.A2_ADDRESS_WITH_LABLES; */
    data DDS.A2_ADDRESS_WITH_LABLES; 
      attrib
        ADDRESS_END_DATE                 length=$8. format=22.3 label="Last date of Address validity" 
        ADDRESS_RK                       length=8  format=12.  label="ADDRESS_RK" 
        ADDRESS_START_DATE               length=$8. format=22.3 label="First day of address validity" 
        ADDRESS_STATE_CODE               length=3  format=$3.  label="ADDRESS_STATE_CODE" 
        ADDRESS_STATE_NAME               length=50  format=$50.  label="ADDRESS_STATE_NAME" 
        ADDRESS_STREET                   length=100  format=$100.  label="ADDRESS_STREET" 
        ADDRESS_TOWN                     length=50  format=$50.  label="ADDRESS_TOWN" 
        ADDRESS_TYPE_CODE                length=3  format=$3.  label="Adress Type Code (HOM=Home, WRK=Work)" 
        ADDRESS_TYPE_TEXT                length=50  format=$50.  label="Address Type (Home, Work)" 
        ADDRESS_ZIP                      length=10  format=$10.  label="ZIP code" 
        ARRIDX_POPULATION_REGISTRY_IF23  length=8  format=13.  label="ARRIDX_POPULATION_REGISTRY_IF23" 
        IDS_IF23_ADDRESS                 length=8  format=22.  label="IDS_IF23_ADDRESS" 
        POPULATION_REGISTRY_RK           length=8  format=14.  label="POPULATION_REGISTRY_RK" 
        PROCESSED_DTTM                   length=8  format=20.  label="PROCESSED_DTTM" 
        SOURCE_SYSTEM_CD                 length=3  format=$3.  label="SOURCE_SYSTEM_CD" 
        SYS_CREATEDATE                   length=8  format=9.  label="SYS_CREATEDATE" 
        VALID_FROM_DTTM                  length=8  format=20.  label="VALID_FROM_DTTM" 
        VALID_TO_DTTM                    length=8  format=20.  label="VALID_TO_DTTM" 
      ;
      stop;
    run;
     
    /* SAS data step DDL for DDS.TEST1; */
    data DDS.TEST1; 
      attrib
        col1                             length=8  format=8. 
        col2                             length=3  format=3. 
        col3                             length=4  format=4. 
      ;
      stop;
    run; 
  1. Copie os arquivos gerados para a /extractor pasta.

Processamento de %if-%then-%else macros

Quando uma %if macro é usada para construir uma instrução SQL, o pré-processador avalia os ramos %else e %then sem considerar as condições de tempo de execução. Como resultado, é produzido um SQL inválido e a linhagem pode mostrar um fluxo de dados inválido. O seguinte código SQL está sem operadores lógicos:

select x from t where
%IF (&weekday. eq 2) %THEN
%DO;
%put&weekday.;
  (t1.AWN_DATE BETWEEN DATE -3 AND DATE -1 )
%END;
%ELSE %DO;
  t1.AWN_DATE = DATE -1
%END;
order by CHANGE_DATE;

A seguinte saída inválida é gerada:

select x from t where
  (t1.AWN_DATE BETWEEN DATE -3 AND DATE -1 )
  t1.AWN_DATE = DATE -1
order by CHANGE_DATE;

Para garantir que a linhagem seja gerada corretamente, use o replace.csv arquivo para remover ou ajustar um dos ramos. Por exemplo, para corrigir o %else ramo do exemplo anterior de código inválido, adicione as seguintes linhas ao replace.csv arquivo:

  • "t1.AWN_DATE = DATE -1","and t1.AWN_DATE = DATE -1" - este código adiciona um and operador à instrução para que ela seja conectada corretamente.
  • "t1.AWN_DATE = DATE -1","" - este código deixa a condição em branco.

Saiba Mais