PROC SQL não é apenas uma das muitas PROC do SAS é também um subsistema distinto com todos recursos comuns do SQL (Structured Query Language).
O PROC SQL oferece maneiras alternativas de gerenciar dados diferentes dos procedimentos DATA Step e SAS tradicionais. Além disso, as funções do SAS integradas são ferramentas complementares para aumentar o poder do PROC SQL.
Aqui vamos elencar algumas funcionalidades do PROC SQL.
1. Função MONOTONIC: A função MONOTONIC é bastante semelhante à variável interna _N_ em DATA Step. Podemos usá-lo para selecionar os registros de acordo com seu número de linha.
Exemplo:
PROC SQL;
Select * from SASHELP.CARS where monotonic() > 10;
/* Este select irá apresentar as linhas da table CARS acima a partir da linha 11 */
Quit;
2. Método de JOIN escolhido pelo PROC SQL
Se você deseja melhorar o desempenho de JOINs no PROC SQL para unir tabelas, você precisa saber como otimizador de consulta escolhe os métodos de junção no PROC SQL. Há uma opção _METHOD na instrução PROC SQL que irá exibir a hierarquia dos métodos de processamento que serão escolhidos pelo PROC SQL. Você precisa definir a opção do sistema SAS MSGLEVEL= I para ver o form interno do plano de consulta no SAS LOG. Uma opção _TREE mostrará a árvore hierárquica como planejado no LOG do SAS.
Os métodos de execução PROC SQL incluem:
sqxcrta |
Criar tabela com o Select |
sqxslct |
Select |
sqxjsl |
Step Loop Join (Cartesiano) |
sqxjm |
Merge Join |
sqxjndx |
Index Join |
sqxjhsh |
Hash Join |
sqxsort |
Ordenação |
sqxsrc |
Linhas de origem da tabela |
sqxfil |
Linhas de Filtro |
sqxsumg |
Estatísticas de resumo (com GROUP BY) |
sqxsumn |
Estatísticas resumidas (não agrupadas) |
sqxuniq |
Linhas distintas apenas |
Exemplo:
options msglevel=i;
proc sql _method _tree;
select * from sashelp.cars;
quit;
O código acima irá apresentar a seguinte plano de execução no SAS LOG:
28 options msglevel=i;
29 proc sql _method _tree;
30 select * from sashelp.cars;
NOTE: SQL execution methods chosen are:
sqxslct
sqxsrc( SASHELP.CARS )
Tree as planned.
/-SYM-V-(cars.Make:1 flag=00000001)
/-OBJ----|
| |--SYM-V-(cars.Model:2 flag=00000001)
| |--SYM-V-(cars.Type:3 flag=00000001)
| |--SYM-V-(cars.Origin:4 flag=00000001)
| |--SYM-V-(cars.DriveTrain:5 flag=00000001)
| |--SYM-V-(cars.MSRP:6 flag=00000001)
| |--SYM-V-(cars.Invoice:7 flag=00000001)
| |--SYM-V-(cars.EngineSize:8 flag=00000001)
| |--SYM-V-(cars.Cylinders:9 flag=00000001)
| |--SYM-V-(cars.Horsepower:10 flag=00000001)
| |--SYM-V-(cars.MPG_City:11 flag=00000001)
| |--SYM-V-(cars.MPG_Highway:12 flag=00000001)
| |--SYM-V-(cars.Weight:13 flag=00000001)
| |--SYM-V-(cars.Wheelbase:14 flag=00000001)
| \-SYM-V-(cars.Length:15 flag=00000001)
/-SRC----|
| \-TABL[SASHELP].cars opt=''
--SSEL---|
31 quit;
NOTE: PROCEDURE SQL used (Total process time):
real time 0.61 seconds
cpu time 0.51 seconds
Experimente executar seus códigos com joins de múltiplas tabelas.
3. Processamento com Threads no PROC SQL
A opção THREADS|NOTHREADS habilita ou desabilita o processamento paralelo em PROC SQL. O processamento paralelo pode atingir um grau de paralelismo em uma operação de processamento. Esse paralelismo destina-se a reduzir o tempo real de conclusão de uma operação de processamento e, portanto, limitar o custo de recursos adicionais da CPU. Para obter mais informações, consulte SAS Help Center: Support for Parallel Processing e também sua área de TI para verificar se seu ambiente SAS permite tal funcionalidade.
Exemplo de código:
options threads;
proc sql;
select * from sashelp.cars;
quit;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.