Otimização de Queries Complexas no SAP HANA para Análises em Tempo Real
O SAP HANA é um banco de dados relacional que executa em memória de alta performance. No entanto, mesmo com o poder do processamento in-memory, queries mal-estruturadas contendo cruzamentos (Joins) pesados, sub-seleções aninhadas ou cálculos ineficientes podem degradar a performance das instâncias de ERP corporativo e congelar painéis do Power BI.
Neste artigo técnico, detalho algumas estratégias chaves de sintaxe SQL e tuning no SAP HANA que apliquei para otimizar relatórios e pipelines de dados analíticos.
1. Evite Junções de Tabelas de Linha e Coluna
O SAP HANA armazena tabelas fisicamente em dois formatos: Orientado a Linhas (Row Store) e Orientado a Colunas (Column Store). Fazer Joins pesados entre tabelas de tipos opostos exige que o motor do banco faça conversões na memória em tempo de execução. * Boa prática: Mantenha as consultas analíticas operando preferencialmente sobre tabelas Column Store.2. Prefira Funções Nativas do HANA
Ao invés de fazer manipulações de string e conversões complexas de data usando lógicas genéricas de SQL, utilize funções otimizadas de kernel do HANA, tais comoDAYS_BETWEEN ou UTCTOLOCAL.
-- Exemplo otimizado de cálculo de idade da fatura
SELECT
"DocEntry",
"DocDate",
DAYS_BETWEEN("DocDueDate", CURRENT_DATE) AS "DaysOverdue"
FROM "OINV"
WHERE "DocStatus" = 'O';
Ver o plano antes de culpar o Power BI
DAYS_BETWEEN só ajuda se o otimizador não materializar a OINV inteira. No hdbsql, peça o plano e procure um scan de coluna em vez de uma conversão row/column no meio do join.
hdbsql -n hana-prod:30015 -u ANALYTICS -p "$HANA_PASSWORD" <<'SQL'
EXPLAIN PLAN FOR
SELECT "DocEntry",
DAYS_BETWEEN("DocDueDate", CURRENT_DATE) AS "DaysOverdue"
FROM "OINV"
WHERE "DocStatus" = 'O';
SQL
Se o plano mostrar COLUMN SEARCH sobre OINV e o predicado DocStatus aplicado cedo, o refresh do Power BI deixa de esperar a compilação de um join misto. Foi esse corte que tirou a carga de 15 minutos para menos de 45 segundos.
Conclusão
A otimização de consultas reduziu o tempo de atualização da carga do Power BI de mais de 15 minutos para menos de 45 segundos, aliviando o estresse sobre as CPUs de produção do ERP.Artigos Relacionados
IA Preditiva de Faturamento em Telecom/Energia rodando em Oracle Solaris
Estudo de caso de um script em Python usando RandomForest para predição de inadimplência, integrado ao banco de dados do SAP Hana em ambiente UNIX Oracle Solaris.
Multicloud para bancos: como separar core, dados e trilha de auditoria
Arquitetura multicloud para bancos: região travada, core isolado do ambiente de teste e trilha de auditoria que ninguém apaga. Comandos de SCP, CloudTrail e Object Lock.