Práticas recomendadas de design de relatórios

Este tópico descreve as principais chaves a serem consideradas no uso do Application Studio para escrever relatórios sobre cubos OLAP.

Considerações sobre o front-end

Esta tabela mostra as principais considerações sobre o design de relatórios front-end:

Considerações Descrição
Seus relatórios contêm hiperblocos aninhados? Um relatório baseado em uma fatia e no qual os hiperblocos são filtrados para, por exemplo, excluir valores nulos, tem um desempenho melhor. Há uma curva de aprendizado associada ao uso de divisões e algumas funções desejáveis estão faltando, mas as funções disponíveis atendem a 80% dos casos de uso.
Os relatórios exigem rolagem vertical? Se sim, incorpore uma extensão da Web de paginação nos rodapés de seus relatórios. Isso melhora a experiência e o desempenho do usuário.
Os relatórios usam formatação condicional? A formatação condicional é um recurso poderoso, mas use-o com moderação devido ao seu efeito no desempenho quando as condições são avaliadas. Você evita a formatação condicional ao usar o formato numérico e confia nos formatos numéricos definidos no banco de dados. O Application Studio agrega as solicitações de dados das fórmulas, que são enviadas ao banco de dados OLAP. O resultado é uma consulta geral em vez de várias consultas de célula única. As consultas agregadas são mais rápidas do que o acesso a uma única célula. As fórmulas lidas de dados no formatos condicionais e relatórios de fórmula não podem ser agregadas e são sempre consultadas como solicitação de célula única.
Os relatórios das folhas de estilo estão sendo projetados em excesso? Pense na simplicidade ao desenvolver novas folhas de estilo e resista ao impulso de continuar adicionando conteúdo às folhas de estilo existentes sempre que possível. O número de estilos aumenta o tamanho de um relatório.
Você especificou as seleções iniciais para as entidades do relatório? Os relatórios serão carregados mais rapidamente se a última entidade visualizada por um usuário for armazenada. Se um relatório for carregado no nível Todas as entidades, por exemplo, muito mais dados deverão ser obtidos e o relatório levará mais tempo para ser carregado.
Está usando controles sem estado, como objetos de consulta, em vez de controles baseados no visualizações de lista? Os controles baseados em visualizações de lista, como caixas de combinação, recuperam listas de elementos quando um relatório é carregado. Os controles sem estado não recuperam listas de elementos, o que torna o carregamento mais rápido.
Você testa exaustivamente seus relatórios? Você pode criar relatórios que concatenam strings para derivar IDs de elementos, mas se enviar a solicitação ao servidor OLAP para elementos que não existem, você corre o risco de sofrer erros e tempos limites. Os testes devem sempre considerar as definições de segurança do usuário final.
Listar filtros Alguns tipos de filtros são mais lentos do que outros, por exemplo, os filtros de atributo são mais lentos do que os filtros de valor. Os filtros em geral são mais lentos do que as seleções de estrutura. Evite grandes áreas de dados nos filtros. Quanto mais elementos você selecionar por dimensão, mais lento será o filtro.
Ações globais Considere o uso de ações globais para reduzir o tempo de cálculo de relatórios individuais. As ações globais são executadas durante o log-in de um usuário, depois que um modelo de repositório é criado e antes que qualquer mecanismo seja criado. Os valores das variáveis globais já estão definidos antes do início do carregamento de qualquer relatório.
Variável de Relatório Evite grandes strings nas variáveis.

Considerações de back-end, ambientais e interpessoais

Em um projeto bem-sucedido, há um loop de feedback entre os desenvolvedores de relatórios e os autores dos cubos. O design ruim do cubo é provavelmente o maior Fator de desempenho ruim. Esta tabela mostra os fatores importantes a serem considerados:

Considerações Descrição
Redigir e testar relatórios com um conjunto de dados realista Os relatórios em que as dimensões incluem até 30 elementos e os cubos incluem várias centenas de pontos de dados podem ter um bom desempenho, mas são difíceis de manter, devido ao grande conjunto de dados. É importante fazer testes com conjuntos de dados realistas.
Escrever corretamente as regras OLAP. Um exemplo de uma regra mal escrita: [Receita] = [Preço] * [Quantidade] ou [Conta 1] = [Conta2} + [Conta3] + [Conta4] Familiarize-se com as práticas recomendadas para escrever regras OLAP. Consulte a documentação online para obter orientação.
Dimensões que estão mal estruturadas Considere uma dimensão de produto com um elemento superior de Todos os produtos, mas com 10.000 filhos. Em algum momento, é provável que o usuário acione uma solicitação ao servidor OLAP que requer que todos os elementos sejam recuperados e, potencialmente, exibidos. Os níveis intermediários tornam um relatório baseado na hierarquia mais eficiente.
Alto número de usuários Evite alterar as dimensões durante o horário comercial, quando o número máximo de usuários está online.
Elementos pai ausentes nas dimensões, por exemplo, um elemento de total de ano Um relatório que recupera dados diários no colunas ocultas para somar e exibir como um total anual é muito mais lento do que um relatório em que o total é calculado no banco de dados OLAP.
Uso indevido de atributos Os atributos podem ser definidos livremente e usados para filtrar relatórios, mas os relatórios filtrados têm um desempenho inferior ao de uma hierarquia que agrupa elementos por valores potenciais de atributos.
Certifique-se de que o servidor OLAP tenha RAM suficiente O OLAP é um banco de dados na memória. Consultas mal escritas podem consumir uma quantidade significativa de RAM. Se o seu servidor OLAP estiver paginando, você pode esperar um desempenho ruim.
Não coloque dados transacionais em cubos O Infor OLAP é otimizado para relatórios no nível de saldo. Você pode criar um relatório que não tenha desempenho, sem ser impedido pelo aplicativo. Por exemplo, você pode criar um cubo detalhado sobre um arquivo de linha de pedido de compra, mas é provável que ele não tenha bom desempenho.
Escrever um relatório ruim como uma solução de curto prazo Resista à pressão do projeto para fazer algo que crie um relatório sem desempenho. Coloque suas preocupações por escrito e sugira alternativas.
Não armazene zeros no seu cubo Um zero é um número que deve ser armazenado na memória OLAP e avaliado em cálculos de regras, enquanto a alternativa nula não o faz. É possível criar um processo do Application Engine que possa substituir zeros em um cubo por nulos.
O melhor lugar para fazer cálculos Isso depende de vários fatores, inclusive da frequência com que os valores calculados são obrigatórios. Estas são opções de exemplo de onde fazer os cálculos, em ordem de preferência:
  • No sistema de origem
  • Como parte de um processo de carga de dados
  • Calculado e armazenado no OLAP pelo Application Engine
  • Em OLAP usando regras dinâmicas
  • Como um cálculo (membro da sessão) em seu repositório
  • No Application Studio, como parte de um relatório
Definir elementos padrão específicos Se você não selecione elementos padrão específicos para dimensões hierarquizadas, o elemento superior será selecionado como padrão. Isso requer mais tempo para restaurar os elementos padrão. Atualmente, os elementos padrão são definidos nas propriedades estendidas da dimensão.
O uso da interface XML é mais lento do que a comunicação por meio da interface incorporada na versão 11 Para acelerar a comunicação, recomendamos que não leia os valores por meio de solicitações de célula única, mas que os coloque em uma ou poucas solicitações ao OLAP. Isso pode ser feito com a solicitação de leitura de cubo, adicionando várias tags CellCoordinate.
Use a paginação no lado do servidor para fazer um relatório para consultar apenas os valores visíveis A paginação em páginas de hiperblocos está no lado do cliente. Todas as células são retornadas do servidor, mas apenas uma página é desenhada.

Nas listas de servidores OLAP, use a função de subconjunto para paginação no lado do servidor.

Em listas relacionais, use métodos avançados na consulta para criar subconjuntos.

Filtre suas consultas para garantir que você não consulte todos os elementos de uma dimensão Use a supressão de nulo para mostrar apenas células preenchidas, mostrar todos os elementos em um determinado pai em vez de uma dimensão inteira. Diminuir o nível de expansão inicial em fatias e listas.
Evite colocar uma grande quantidade de dimensões no eixo A quantidade ideal é de três dimensões por eixo de linhas e uma dimensão por eixo de colunas.