Buscar

As Dicas de Ouro SAS_SASDAY

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Copyright © SAS Inst itute Inc. A l l r ights reserved.
SAS & Itaú
Boas práticas
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
INTRODUÇÃO
▪ Nome: Victor Cruz
▪ Posição: Pré e Pós Vendas
▪ Idade: 25 anos
▪ Formação: Estatístico
▪ Histórico de trabalho: SAS (desde 2015)
▪ Certificação: SAS Programming
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
▪ Nome: Fernanda Knopki
▪ Posição: Pré Vendas
▪ Idade: ?
▪ Formação: ?
▪ Histórico de trabalho: Coca-Cola (7 anos)
HSBC (1 ano)
Volvo (6 anos)
SAS (desde 2018)
▪ Certificação: SAS Programming
INTRODUÇÃO
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
Workshop
Boas Práticas
AGENDA
➢ Organização
➢ Performance
➢ Merge de tabelas
➢ Procedures e funções úteis
➢ Onde aprimorar o conhecimento
Copyright © SAS Inst itute Inc. A l l r ights reserved.
DICAS DE ORGANIZAÇÃO
Boas Práticas
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
DICAS DE ORGANIZAÇÃO Cabeçalho do programa e comentários
Vantagens:
• Facilita o entendimento do código
• Rastreabilidade do Owner e do último modificador
• Facilita a manutenção futura
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
DICAS DE ORGANIZAÇÃO Nome das Variáveis
➢ O tamanho máximo é 32 caracteres.
➢ Não pode ser iniciada por número ou underscore. E nem conter
espaços.
➢ Utilizar o mesmo padrão de nomenclatura das variáveis em todas as
tabelas.
➢ Um bom padrão é colocar nos 3 primeiros caracteres uma
característica básica da variável.
➢ Utilizar abreviações somente quando o restante dos caracteres não for
suficiente para descrever a variável.
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
DICAS DE ORGANIZAÇÃO
PALAVRA CHAVE PREFIXO
CODIGO COD
DATA DAT
DATA HORA (Timestamp) DTH
DESCRICAO DES
FLAG FLG
HORA HOR
INDICADOR IND
IDENTIFICADOR IDT
NOME NOM
NUMERO NUM
PERCENTUAL PRC
PRAZO PRZ
QUANTIDADE QTD
SIGLA SGL
STATUS STA
SURROGATE KEY SRK
TIPO TIP
VALOR VLR
Padrões de Prefixo
Exemplos:
NUM_CEP_RESIDENCIAL
IND_CLIENTE_ATIVO
COD_ESTADO_CIVIL
Copyright © SAS Inst itute Inc. A l l r ights reserved.
DICAS DE PERFORMANCE
Boas Práticas
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
data CLIENTE;
set DATABASE.CLIENTE(KEEP=COD_CLIENTE CREDITSCORE IDADE);
if CREDITSCORE>0.7;
RUN;
DICAS DE PERFORMANCE UTILIZAÇÃO DE KEEP E DROP
É uma ótima prática a utilização de comando keep e drop no momento da leitura (SET)
de uma tabela de forma que ela somente traga para a memória as variáveis que foram
selecionadas no momento da leitura.
data CLIENTE;
set DATABASE.CLIENTE;
if CREDITSCORE>0.7;
RUN;
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
DICAS DE PERFORMANCE UTILIZAÇÃO DE WHERE E IF
Tanto o comando Where quanto o comando IF podem ser utilizados para realizar
filtros dentro de um data step. Porém, o where tem suas vantagens no quesito
performance.
data CLIENTE;
set DATABASE.CLIENTE (KEEP=COD_CLIENTE CREDITSCORE IDADE);
IF CREDITSCORE>0.7;
RUN;
NOTE: There were 5197870 observations read from the data set 
DATABASE.CLIENTE.
NOTE: The data set WORK.CLIENTE has 261790 observations and 3 
variables.
Utilizando IF:
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
DICAS DE PERFORMANCE UTILIZAÇÃO DE WHERE E IF
Tanto o comando Where quanto o comando IF podem ser utilizados para realizar
filtros dentro de um data step. Porém, o where tem suas vantagens no quesito
performance.
data CLIENTE;
set DATABASE.CLIENTE(KEEP=COD_CLIENTE CREDITSCORE IDADE);
WHERE CREDITSCORE>0.7;
RUN;
NOTE: There were 261790 observations read from the data set 
DATABASE.CLIENTE.
WHERE CREDITSCORE>0.7;
NOTE: The data set WORK.CLIENTE has 261790 observations and 3 
variables.
Utilizando WHERE:
Performance 22% melhor
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
DICAS DE 
PERFORMANCE
REVISÃO DO PROGRAMA
Sempre após finalizar um programa, invista algumas horas na melhoria do mesmo.
Provavelmente você irá reutilizar o código e se ele estiver estruturado e otimizado, o retorno
sobre seu tempo investido é garantido!
#ficaadica:
✓ Coloque cabeçalho no programa
✓ Coloque comentários explicando o que está fazendo
✓ Retire comandos sem utilidade
✓ Retire as variáveis que não estão sendo utilizadas (keep e drop)
✓ Somente grave em uma library permanente o que realmente for disponibilizar para alguém 
ou reutilizar no futuro
✓ Tente concentrar o máximo de ações dentro de um único data step ou proc sql
REVISÃO DO PROGRAMA
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
CRIAÇÃO DE ÍNDICE NAS BASES
Se você possuir tabelas muito utilizadas, normalmente a utilização de índice irá acelerar a
performance de suas consultas e joins.
Crie o índice no(s) campo(s) que são mais utilizados para cruzar as bases ou efetuar consultas.
Exemplo de como criar um índice:
proc sql;
create index cpf_cliente on database.cliente(cpf_cliente);
quit;
OU
proc datasets library=database;
modify cliente;
index create cpf_cliente;
run;
DICAS DE 
PERFORMANCE
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
QUAIS BENEFÍCIOS COM A CRIAÇÃO DE ÍNDICE NAS BASES
➢ Para processamento WHERE, um índice pode fornecer acesso
mais rápido e eficiente a um subconjunto de dados. Observe
que, para processar uma expressão WHERE, o SAS decide, por
padrão, se deve usar um índice ou ler o arquivo de dados
sequencialmente.
➢ Para processamento BY, um índice retorna observações na
ordem de índice, que está em ordem de valor ascendente,
sem usar o procedimento SORT, mesmo quando o arquivo de
dados não está armazenado nessa ordem.
Nota: Se você usar o procedimento SORT, o índice não será
usado.
➢ Para as instruções SET e MODIFY, a opção KEY= permite que
você especifique um índice em uma etapa DATA para
recuperar observações específicas em um arquivo de dados.
DICAS DE 
PERFORMANCE
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
CRIAÇÃO DE ÍNDICE NAS BASES DICAS DE 
PERFORMANCE
Tamanho do Subconjunto Ação de Indexação
1% - 15%
Um índice definitivamente melhorará o desempenho do 
programa
16% - 20%
Um índice provavelmente melhorará o desempenho do 
programa
21% - 33%
Um índice pode melhorar ou pode piorar o desempenho 
do programa
34% - 100% Um índice não melhorará o desempenho do programa
Indexar ou não indexar?
http://www2.sas.com/proceedings/sugi30/247-30.pdf
http://www2.sas.com/proceedings/sugi30/247-30.pdf
Copyright © SAS Inst itute Inc. A l l r ights reserved.
MERGE DE TABELAS
Boas Práticas
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
MERGE DE TABELAS Qual a melhor maneira de fundir tabelas?
SAS Data Step ou SAS Proc SQL???Através do código, podemos realizar o merge de tabelas 
através das seguintes maneiras:
❖ SAS DATA STEP
proc sort data=tmp00002.telco_cadastro out=telco_cadastro;
by nu_cpf;
run;
proc sort data=tmp00002.fpd_full_cpf out=fpd_full_cpf;
by cpf;
run;
data tst;
merge telco_cadastro (in=a rename=(nu_cpf=cpf))
fpd_full_cpf (in=b);
by cpf;
if a and b;
run;
Através do código, podemos realizar o merge de tabelas 
através das seguintes maneiras:
❖ SAS PROC SQL
proc sql;
create table tst as select
a.*
from telco_cadastro as a
inner join fpd_full_cpf as b on
(a.nu_cpf=b.cpf);
quit;
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
MERGE DE TABELAS
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
MERGE DE TABELAS Como ser mais performático no momento do merge?
%CREFMT(
SRCLIB = work,
SRCTAB = fpd_full_cpf,
FMTLIB = work,
FMTSTART = cpf,
FMTLABEL = sit_fatura,
FMTLBLTP = C,
FMTLBLEN = 20,FMTNAME = $status
)
data tst;
set telco_cadastro;
situacao_fatura=put(nu_cpf,$status.);
run;
http://www2.sas.com/proceedings/sugi30/054-30.pdf
http://www2.sas.com/proceedings/sugi30/054-30.pdf
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
MERGE DE TABELAS
Copyright © SAS Inst itute Inc. A l l r ights reserved.
OTIMIZAÇÃO DE ESPAÇO
Boas Práticas
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
OTIMIZAÇÃO DE ESPAÇO
COMPRESS
Qual a vantagem de utilizar o COMPRESS em 
conjunto de dados SAS?
• Usando a opção de sistema ou de data set COMPRESS=, 
qualquer conjunto de dados SAS criado em disco será 
compactado. A compactação do conjunto de dados SAS pode 
reduzir bastante o tamanho dos conjuntos de dados. Para usar 
a opção COMPRESS=, defina a opção como "YES" ou "BINARY".
“CHAR” pode ser usado como uma alternativa para “YES” com o mesmo 
resultado.
39GB2GB
Tamanho em bytes Tamanho em gigas
Tabela sem compress 42.024.566.784 39
Simulação: tabela com 4.168.061 registros e 40 variáveis.
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
OTIMIZAÇÃO DE ESPAÇO
proc sql;
create table WORK.TRANSACT_FULL_NO_COMP as
select t1.*
from WORK.transact_full t1;
quit;
NOTE: Table WORK.TRANSACT_FULL_NO_COMP 
created, with 4168061 rows and 40 columns.
NOTE: PROCEDURE SQL used (Total process time):
real time 5:36.93
COMPRESS
proc sql;
create table
WORK.TRANSACT_FULL_COMP2(compress=yes) as
select t1.*
from WORK.TRANSACT_FULL_COMP t1;
quit;
NOTE: Compressing data set 
WORK.QUERY_FOR_TRANSACT_FULL_COMP decreased size 
by 95.91 percent. 
Compressed is 13123 pages; un-compressed 
would require 320621 pages.
NOTE: Table WORK.QUERY_FOR_TRANSACT_FULL_COMP 
created, with 4168061 rows and 40 columns.
NOTE: PROCEDURE SQL used (Total process time):
real time 1:15.70
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
OTIMIZAÇÃO DE ESPAÇO COMPRESS
Como identificar se a tabela está com o compress habilitado ou não?
Exemplo:
Resultado:
proc contents data=work.transact_full varnum;
run;
proc contents data=work.transact_full_comp varnum;
run;
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
OTIMIZAÇÃO DE ESPAÇO
COMPRESS
Compress Reduction
Registros Tamanho Char Num YES BINARY
Arquivo1 120.641 11MB 15 5 31,91% 23,72%
Arquivo2 183.476 28MB 19 10 52,10% 49,22%
Arquivo3 1.542.257 100MB 15 5 31,38% 21,02%
Arquivo4 6.976.838 1.1GB 19 10 48,81% 46,61%
Arquivo5 8.743.231 1.35GB 9 17 43,37% 56,87%
http://www2.sas.com/proceedings/sugi27/p023-27.pdf
http://www2.sas.com/proceedings/sugi27/p023-27.pdf
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
#ATENÇÃO!
data cars (compress=yes);
set sashelp.cars;
run;
NOTE: There were 428 observations read from the data set SASHELP.CARS.
NOTE: The data set WORK.CARS has 428 observations and 15 variables.
NOTE: Compressing data set WORK.CARS decreased size by 0.00 percent. 
Compressed is 2 pages; un-compressed would require 2 pages.
NOTE: DATA statement used (Total process time):
real time 0.01 seconds
cpu time 0.00 seconds
data air (compress=yes);
set sashelp.air;
run;
NOTE: There were 144 observations read from the data set SASHELP.AIR.
NOTE: The data set WORK.AIR has 144 observations and 2 variables.
NOTE: Compressing data set WORK.AIR increased size by 100.00 percent. 
Compressed is 2 pages; un-compressed would require 1 pages.
NOTE: DATA statement used (Total process time):
real time 0.01 seconds
cpu time 0.00 seconds
Então, sempre vou otimizar espaço 
comprimindo a minha tabela SAS?
Copyright © SAS Inst itute Inc. A l l r ights reserved.
PROCs E FUNÇÕES ÚTEIS 
Boas Práticas
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
PROCS E FUNÇÕES ÚTEIS
Na etapa de desenvolvimento da lógica da programação é interessante reduzir o 
universo do cliente com o objetivo de reduzir o tempo de processamento. 
Se torna muito interessante utilizar a proc surveyselect para realizar uma amostra
aleatória (estratificada ou não) na base de dados.
Exemplo:
PROC SURVEYSELECT
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
SCAN é uma função muito útil para parsing de dados. Através dela é possível separar
um campo em vários baseando-se em um caractere que delimite o dado.
Exemplo:
Resultado:
PROCS E FUNÇÕES ÚTEIS SCAN
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
TRANWRD é uma função muito útil para correção de dados. Através dela é 
possível substituir um caractere ou um conjunto de caractere por outro.
Exemplo:
Resultado:
PROCS E FUNÇÕES ÚTEIS TRANWRD
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
São funções utilizadas no tratamento do dado com o objetivo de 
padronização da informação.
UPCASE – Transforma todas as letras em maiúsculas.
LOWCASE – Transforma todas as letras em minúsculas.
PROPCASE – Coloca a primeira letra em maiúscula.
Exemplo:
Resultado:
PROCS E FUNÇÕES ÚTEIS UPCASE, LOWCASE e PROPCASE
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
São funções utilizadas no tratamento do dado relacionado a hora.
HOUR – Retorna a hora a partir de uma informação de hora.
MINUTE – Retorna a minuto a partir de uma informação de hora.
SECOND – Retorna o segundo a partir de uma informação de hora.
Exemplo:
Resultado:
PROCS E FUNÇÕES ÚTEIS HOUR, MINUTE e SECOND
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
São funções utilizadas no tratamento do dado relacionado a data.
DAY – Retorna o dia a partir de uma informação de data.
MONTH – Retorna o mês a partir de uma informação de data.
YEAR – Retorna o ano a partir de uma informação de data.
Exemplo:
Resultado:
PROCS E FUNÇÕES ÚTEIS DAY, MONTH e YEAR
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
PROCS E FUNÇÕES ÚTEIS
São funções que realizam cálculos com valores de data, valores de data e 
hora e intervalos de tempo.
• A função INTNX retorna uma data SAS que é um número especificado de 
unidades de tempo distante de uma data especificada.
• A função INTCK retorna o número de unidades de tempo entre duas 
datas. Para a unidade de tempo, você pode escolher anos, meses, 
semanas, dias e mais.
INTNX e INTCK
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
São funções utilizadas para coletar a informação de hora e data quando a mesma
se encontra no mesmo campo.
TIMEPART – Coleta a informação do horário contido em um campo de data e hora.
DATEPART – Coleta a informação de data contido em um campo de data e hora.
Exemplo:
Resultado:
PROCS E FUNÇÕES ÚTEIS TIMEPART e DATEPART
Copyright © SAS Inst itute Inc. A l l r ights reserved.
ONDE APRIMORAR O CONHECIMENTO
Boas Práticas
Click to Edit Title
Copyright © SAS Inst itute Inc. A l l r ights reserved.
Onde aprimorar o 
conhecimento
SAS Programming e-learning (free) 
https://support.sas.com/edu/schedules.html?ctry=us&crs=PROG1
SAS Blogs
http://blogs.sas.com/content/topic/programming-tips/
SAS support
https://support.sas.com/en/support-home.html
SAS Community
https://communities.sas.com/
?
CONTEÚDO SAS
https://support.sas.com/edu/schedules.html?ctry=us&crs=PROG1
http://blogs.sas.com/content/topic/programming-tips/
https://support.sas.com/en/support-home.html
https://communities.sas.com/
Copyright © SAS Inst itute Inc. A l l r ights reserved.Corporativo | Interno
T h e S A S P l a t f o r m
Não deixe de 
experimentar!
https://www.linkedin.com/in/victorscatolin/
Victor.Cruz@sas.com
(61) 99633.1975 / (11) 97231.1050
Victor Cruz
Pre/Post Sales
“This is my favorite part about 
analytics: Taking boring flat data and 
bringing it to LIFE through 
visualization.”

Continue navegando